@@ -7,18 +7,200 @@ This changelog is intended for _humans_ and follows many of the principles from
77Versions for this project follow the [ Semantic Versioning
88rules] ( https://semver.org/spec/v2.0.0.html ) . Each heading below is a version
99released 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
0 commit comments