Changelog¶
3.0.1 (2021-02-10)¶
Pin spacy dependency above 3.x.x
Remove support for older spacy versions
3.0.0 (2021-01-27)¶
Breaking Changes¶
- Rework of executors
explore is now a method on the executor object
Add a man-page executor
aclimatise.explore is now deprecated
Replaces
dataclasses
withattrs
throughout
New Features¶
2.2.0 (2020-09-26)¶
Add
command.reanalyse()
, which re-analyses the help text stored in the command, using the current parserAdd
command['sort']
which lets you access subcommands by name
2.1.0 (2020-09-22)¶
Add bedtools random as a test case
Use a simple metric to exclude flags unless they have a somewhat valid description text, this should result in less false-positive flags being detected
Fixed the id field in the CWL tool definitions including some path elements (like ..)
Use cwltool as a command-line tool instead of via the Python API (it is supposed to be more stable)
2.0.0 (2020-09-16)¶
Rename the package from
acclimatise
toaclimatise
, to be consistent with the naming elsewhere. This is a breaking change, and will require you topip install aclimatise
from now on.Similarly, rename the module to
aclimatise
. This will require you toimport aclimatise
Rename the CLI utility from
acclimatise
toaclimatise
.
1.2.0 (2020-09-13)¶
User-Facing Changes¶
Add output generation for CWL and WDL
Fixes¶
Fix the railroad diagrams not building
Internal Changes¶
Upgrade wdlgen to 3.0.0
Delete hash.py, which was unused
Add Command.outputs, which is a property that returns all outputs
Add (rudimentary) prioritisation for types, ensuring we don’t always choose the type derived from the argument (this is an initial attempt at #37)
Support more complex assertions for test cases, including the number of outputs
Small improvements to the infer_type regexes
Refactor test case assertions into the HelpText class
1.1.1 (2020-09-10)¶
Fix the README file in PyPI
1.1.0 (2020-09-10)¶
User-Facing Changes¶
Better distinction between description blocks and flags, allowing us to successfully parse flags of this form:
--use_strict (enforce strict mode) type: bool default: false --es5_readonly (activate correct semantics for inheriting readonliness) type: bool default: true
Support parsing multiple usage blocks, and add the
UsageInstance
class, which provides access to all these usage examples in the help. For example after parsing the text below, we would have 4UsageInstance
instances. The instances are provided onCommand.usage
:Usage: shell [options] -e string execute string in V8 shell [options] file1 file2 ... filek run JavaScript scripts in file1, file2, ..., filek shell [options] shell [options] --shell [file1 file2 ... filek] run an interactive JavaScript shell
Add flag and positional de-duplication, ensuring we don’t have duplicate options in the final
Command
Add the
max_length
parameter toparse_help
: If the input text has more than this many lines, no attempt will be made to parse the file (as it’s too large, will likely take a long time, and there’s probably an underlying problem if this has happened). In this case, an empty Command will be returnedEnforce that a
Positional
must have at least 2-character names, in the parserEnforce that a
Positional
must have a description, in the parser
Internal Changes¶
Rewrite of both the flag and usage parser
Added more customizable indent tokens, meaning we no longer need the
customIndentedBlock
Refactor both the usage parser and the flag parser into subclasses of
IndentParserMixin
, which provides useful common parsing logic that relates to indentationUse
MatchFirst
instead ofMatchLongest
logic in most places in the parser. This should result in more consistent behaviour.Add
typeHLA.js
text, which is derived from thebwa-kit
container.
Fixes¶
Always strip out newlines from the WDL description
1.0.3 (2020-08-26)¶
Add a hard timeout to the
DockerExecutor
, even if it’s producing output, e.g. theyes
command.
1.0.2 (2020-08-25)¶
Ensure we never return
None
from theDockerExecutor
Add initial parsing of “output inputs”. Thanks to @bernt-matthias (#15). However this information is not yet used in the converters.
1.0.1 (2020-08-22)¶
Enforce timeouts for all executors, including Docker
Restructure the executors such that the parameters are all set in the constructor, not in the
execute()
call
1.0.0 (2020-08-19)¶
Since the creation of executors is actually a breaking change, this is now a new major version
User-Facing¶
Support executables that have a file extension e.g. samtools.pl
Refactor the command execution code into a new
Executor
class, and add a docker executor, allowing you to aCLImatise executables in a Docker imageFix for usage parsing when usage is in the middle of the line
Internal¶
Run CI on pull requests
Remove
cwlgen
as a dependency, thanks to @illusional (#26)Make
infer_type
returnNone
if it can’t determine a type, allowing better handling behaviour. Thanks to @bernt-matthias (#25)
0.2.2 (2020-07-22)¶
Add support for Python 3.6 again
Parse positionals by default from the CLI
Fix bug involving name generation using different-length strings
Add
samtools bedcov
test caseAdd a
get_subclasses
method for WrapperGenerator
0.2.1 (2020-07-04)¶
Add automatic railroad diagram generation for grammar
Add names to many of the parser elements to facilitate diagram generations
Add genomethreader test
0.2.0 (2020-05-25)¶
Features¶
Add
parameter_meta
(parameter documentation) generation back into WDL definitionsAdd
acclimatise.model.Command.depth()
, and :py:attribute:`acclimatise.model.Command.parent` toacclimatise.model.Command
to facilitate the traversal of the command treeAdd
dinosaur
andmauveAligner
as test cases intest/test_data
Convert tests into a series of test case objects that can be used to parameterize each test function
Add the option to parallelize tests using pytest-parallel
Better conversion of symbols to variable names, for example “/” is now “slash” rather than “solidus”
Add logging to the high level functions like
explore_command
, using theacclimatise
logger. This should make tracking errors and progress a tad easier.By default, re-use the best help command from the parent on the child. For example if we determine that
samtools --help
is the most accurate help command forsamtools
, then we usesamtools sort --help
without having to test out every possible flag hereAdd
generated_using
field to theCommand
class, which tracks the flag used to generate it
Changes¶
Set the default command depth to 3
aCLImatise
now only supports Python >= 3.7.5, due to this bug
Fixes¶
Avoid variable naming collisions using a generator-based iteration method in
acclimatise.name_generation.generate_names
Keep a global
spacy
instance to minimize memory footprint. This is available in :py:module:`acclimatise.nlp`Fix infinite loops in explore, e.g. tools like
dinosaur
andmauve
by adding more advanced subcommand detection inacclimatise.is_subcommand
Make cmd optional for validators
Always run commands in a pseudo-TTY so that commands like
samtools
will output helpVarious other fixes
0.1.5 (2020-05-18)¶
Bugfix for when we have no help text
Add a test for a program that we know fails
0.1.4 (2020-05-18)¶
Choose best command using length of help text, if everything else is equal
0.1.3 (2020-05-15)¶
Command
types now contain ahelp_text
field which records the string that was used to generate them. This should enable efficient re-parsing, and can also be displayed downstream by BaseCampRewrite tests into a parametrized, consolidated end-to-end test
Fix “OPTIONS” being considered a positional argument, when really it’s a placeholder for flags
Remove positional arguments that precede the main command, so
dotnet Pisces.dll
will be removed from the entire command
0.1.2 (2020-05-15)¶
Generating YAML output now produces one file for each subcommand, to match other converters
0.1.1 (2020-05-13)¶
Make
explore -o
flag default to current working directory, for simplicityUpdated the readme
Add installation instructions
0.1.0 (2020-05-13)¶
Fix the doubled variable names like
bytesBytes
Smarter POS-based algorithm for generating names from descriptions
Automatically choose a description based name when we have only short named flags like
-n
Add changelog
Add comprehensive testing for CWL and WDL generation
Fix for variable names with symbols in them
Use regex library for faster and more concise regex