Skip to content

Commit 14f4ca3

Browse files
committed
version 5.0.0
1 parent 4149cb9 commit 14f4ca3

File tree

2 files changed

+186
-4
lines changed

2 files changed

+186
-4
lines changed

CHANGES.md

Lines changed: 185 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,200 @@ This changelog is intended for _humans_ and follows many of the principles from
77
Versions for this project follow the [Semantic Versioning
88
rules](https://semver.org/spec/v2.0.0.html). Each heading below is a version
99
released to [PyPI](https://pypi.org/project/nextstrain-cli/) and the date it
10-
was released. The "__NEXT__" heading below describes changes in the unreleased
11-
development source code and as such may not be routinely kept up to date.
10+
was released.
1211

1312

14-
# __NEXT__
13+
# 5.0.0 (25 October 2022)
14+
15+
_Version 5.0.0 had two development pre-releases (5.0.0.dev0 and 5.0.0.dev1)
16+
prior to final release. For convenience, the changes from those pre-releases
17+
are also re-described here._
18+
19+
The major improvement in this release is the introduction of a new Conda
20+
runtime, filling a gap between the Docker runtime and the ambient runtime
21+
(formerly "native" runtime). See more details below.
22+
23+
This release also contains **potentially-breaking changes** for existing
24+
usages of `nextstrain remote download` and `nextstrain update`. The changes
25+
are described below.
26+
27+
## Improvements
28+
29+
* A new Conda runtime (aka runner or build environment) now complements the
30+
existing Docker and ambient runtimes and fills a gap between them. This
31+
runtime is more isolated and reproducible than your ambient environment, but
32+
is less isolated and robust than the Docker runtime. Like the Docker
33+
runtime, the Conda runtime is fully-managed by Nextstrain CLI and receives
34+
updates via `nextstrain update`.
35+
36+
The new runtime uses the [Conda](https://docs.conda.io) ecosystem with
37+
packages from [our own channel](https://anaconda.org/Nextstrain/nextstrain-base),
38+
[Bioconda](https://bioconda.github.io/) and
39+
[Conda-Forge](https://conda-forge.org/), installed by
40+
[Micromamba](https://mamba.readthedocs.io/en/latest/user_guide/micromamba.html)
41+
into an isolated location, typically `~/.nextstrain/runtimes/conda/env`. It
42+
does not interact with or impact other usage of Conda/Mamba environments and
43+
will not, for example, appear in the output of `conda env list`.
44+
45+
Set up of the runtime is automated and can be performed by running:
46+
47+
nextstrain setup conda
48+
49+
When complete, you'll be able to use the `--conda` runtime option supported
50+
by Nextstrain CLI commands such as `nextstrain build`, `nextstrain view`,
51+
`nextstrain shell`, etc.
52+
([#218][])
53+
54+
* The "native" runtime (aka runner or build environment) is now the "ambient"
55+
runtime. This name better reflects what it is and further distinguishes it
56+
from the new Conda runtime, which is also "native" in the binary executable
57+
sense.
58+
59+
Existing usages of "native" should be unaffected. The `--native` option
60+
continues to work anywhere it used to previously, though it is hidden from
61+
`--help` output to discourage new use. The string "native" is also accepted
62+
anywhere runner names are accepted, e.g. in config as the `core.runner`
63+
setting or in command-line arguments to `check-setup` or `setup`.
64+
([#224](https://github.com/nextstrain/cli/pull/224))
65+
66+
* `nextstrain setup docker` now downloads the Docker runtime image if it's not
67+
already available locally. This can be a useful initial step after
68+
installation to avoid the automatic download on first use.
69+
([#222](https://github.com/nextstrain/cli/pull/222))
70+
71+
* The local filenames produced by `nextstrain remote download` now include
72+
more of the remote dataset/narrative path. This reduces the potential for
73+
ambiguous filenames and makes it easier to copy datasets/narratives between
74+
destinations (e.g. from one group to another) while retaining the same path.
75+
It is, however, a **potentially-breaking change** if you're relying on the
76+
filenames of the downloaded datasets/narratives (e.g. for automation).
77+
78+
For example, downloading `nextstrain.org/flu/seasonal/h3n2/ha/2y` previously
79+
produced the local files:
80+
81+
```
82+
2y.json
83+
2y_root-sequence.json
84+
2y_tip-frequencies.json
85+
```
86+
87+
which could easily conflict with the similarly-named
88+
`nextstrain.org/flu/seasonal/h3n2/na/2y`,
89+
`nextstrain.org/flu/seasonal/h1n1pdm/ha/2y`, etc. The downloaded files are
90+
now named:
91+
92+
```
93+
flu_seasonal_h3n2_ha_2y.json
94+
flu_seasonal_h3n2_ha_2y_root-sequence.json
95+
flu_seasonal_h3n2_ha_2y_tip-frequencies.json
96+
```
97+
98+
Within groups, filenames are similarly longer but the group name is not
99+
included. For example, downloading `groups/blab/ncov/cross-species/cat`
100+
previously produced:
101+
102+
```
103+
cat.json
104+
cat_root-sequence.json
105+
cat_tip-frequencies.json
106+
```
107+
108+
and now produces:
109+
110+
```
111+
ncov_cross-species_cat.json
112+
ncov_cross-species_cat_root-sequence.json
113+
ncov_cross-species_cat_tip-frequencies.json
114+
```
115+
([#213](https://github.com/nextstrain/cli/pull/213))
116+
117+
* Advanced globbing features are now supported in patterns for the `--download`
118+
option of `nextstrain build`, including multi-part wildcards (`**`), extended
119+
globbing (`@(…)`, `+(…)`, etc.), and negation (`!…`). Basic globbing
120+
features like single-part wildcards (`*`), character classes (`[…]`), and
121+
brace expansion (`{…, …}`) are still supported. Note that the `--download`
122+
option continues to be applicable only to the AWS Batch runtime (e.g. the
123+
`--aws-batch` option).
124+
([#215](https://github.com/nextstrain/cli/pull/215))
125+
126+
* `check-setup` now accepts one or more runtime names as arguments.
127+
128+
The default behaviour doesn't change, but specifying runtimes now lets you
129+
restrict checks to a single runtime or, with multiple runtimes, re-order them
130+
by your preference for use with --set-default.
131+
([#218][])
132+
133+
* `update` now only updates a specific runtime instead of all of them at once.
134+
135+
With no arguments, the default runtime is updated. The name of another
136+
runtime to update instead may be provided as an argument.
137+
138+
In practice this isn't much of a behaviour change because only one runtime
139+
currently supports updating (Docker); the others (ambient, AWS Batch) just
140+
pass. Existing users are unlikely to notice the change unless they use
141+
multiple runtimes and Docker is not their default. In that case, `update`
142+
may stop updating Docker for them when it would have done so previously,
143+
which is a **potentially-breaking change**.
144+
([#218][])
145+
146+
* A new command, `setup`, now exists to perform automatic set up of runtimes
147+
that support it (currently only Conda). For all runtimes, even those that
148+
don't support automatic set up, the `setup` command will also run the same
149+
checks as `check-setup` and optionally set the default runtime.
150+
([#218][])
151+
152+
* The shell launched by the `shell` command now remembers its own command
153+
history and differentiates its command prompt from other shells with a
154+
stylized variant of the Nextstrain wordmark.
155+
([#218][])
156+
157+
* The output of commands in dry run mode (e.g. with the `--dry-run` option) is
158+
now uniformly indicated to be a dry run by the prefix `DRY RUN │ `. This
159+
includes the `remote` family of commands and the new `setup` command.
160+
([#218][])
161+
162+
* Runtime checks in `check-setup` and `setup` now test for not just the
163+
presence of Snakemake, Augur, and Auspice, but also that they can be
164+
executed.
165+
([#218][])
15166

16167
## Development
17168

169+
* We now provide standalone installers (i.e. shell programs) to download and
170+
unpack the standalone installation archives into standard locations,
171+
potentially upgrading/overwriting a prior standalone install. These
172+
installers will be served from GitHub directly out of this project's
173+
repository via convenience redirects on nextstrain.org.
174+
175+
These will eventually form the basis for Nextstrain install instructions that
176+
don't suffer from Python bootstrapping issues. As a preview for now, you can
177+
play around with the following platform-specific commands:
178+
179+
curl -fsSL --proto '=https' https://nextstrain.org/cli/installer/linux | bash
180+
curl -fsSL --proto '=https' https://nextstrain.org/cli/installer/mac | bash
181+
Invoke-RestMethod https://nextstrain.org/cli/installer/windows | Invoke-Expression
182+
183+
A new companion command, `init-shell`, exists to simplify shell configuration
184+
(i.e. `PATH` modification) for such installations.
185+
186+
* The `NEXTSTRAIN_HOME` environment variable can now be used to specify the
187+
desired location for per-user settings, files, etc., overriding the default
188+
of _~/.nextstrain/_.
189+
([#218][])
190+
18191
* A new `nextstrain authorization` command makes it easier to generate direct
19192
requests to nextstrain.org's web API using the same credentials as the CLI.
20193
([#229](https://github.com/nextstrain/cli/pull/229))
21194

195+
* The development documentation now documents how to build the documentation
196+
locally, and sphinx-autobuild is used to make a very nice edit-preview cycle
197+
with quick turnaround.
198+
([#218][])
199+
200+
* Development dependency issues with `flake8` and `sphinx-markdown-tables`,
201+
caused by upstream changes, are now resolved.
202+
([#218][])
203+
22204

23205
# 5.0.0.dev1 (25 October 2022)
24206

nextstrain/cli/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '5.0.0.dev1+git'
1+
__version__ = '5.0.0'

0 commit comments

Comments
 (0)