Commit Graph

10 Commits

Author SHA1 Message Date
Jeremy Saklad 5ef972295b
Use f-strings and multiline strings
Inline string expressions are far easier to read, particularly for
complicated strings like the skeleton printer's output.

Care has been taken to ensure that no behavior has been changed in the
process.
2021-09-18 20:01:30 -05:00
Jeremy Saklad 50625cdc27
Add __slots__ to internal parser types
Dynamic properties are not used by these types, so using __slots__ is
slightly more efficient. Public inherited properties are also included.
2021-09-18 19:18:39 -05:00
Jeremy Saklad 21ea715dd1
Refactor Action as data class
Action is now a frozen data class.

All properties of Action now have type hints, and __slots__ are used
for properties without default values (that is, name).
2021-09-18 19:18:39 -05:00
Jeremy Saklad 35663dd8d4
Add list option
This option lists enumeration identifiers, along with their string forms
for clarity's sake. This makes it much easier to blacklist things
without reading the source code.

A note about listing has been added to the Blacklisting section of the
README.

A dedicated action has been created for the list command.
2021-08-14 17:55:45 -05:00
Jeremy Saklad 3b1ca61104
Fix BlacklistAction bug
This bug would have caused an error if BlacklistAction were used with a
different nargs.

The "verbose" argument no longer has a default specified. Instead, the
code that checks it supplies a default for itself.
2021-08-14 14:40:15 -05:00
Jeremy Saklad cae8ac5055
Clarify nargs specifiers
Rather than using raw strings, nargs specifiers are now expressed in
terms of argparse's corresponding global variables.
2021-08-14 13:05:17 -05:00
Jeremy Saklad 4034530ddb
Add support for configuration files
Configuration files allow common arguments like --shadowy-level and
--blacklist to be saved and referenced rather being typed out each time.

ArgumentParser has been subclassed to allow more freedom when parsing
configuration files.
2021-08-13 10:26:59 -05:00
Jeremy Saklad be44c9c489
Add blacklist parameter to CLI
Blacklisting uses a dedicated action to parse arguments into enumeration
members.

Choices are not provided for this option, as it would utterly overwhelm
the help interface. This means that errors may not be as helpful,
however.

The README has been updated with a small section on blacklisting, how to
do it, and why you may wish to do it.

Options that were previously commented out are now enabled, since the
user can simply blacklist them instead.
2021-08-13 09:45:27 -05:00
Jeremy Saklad cacb985be6
Fix Enum arguments that accept multiple values
EnumAction was erasing nargs before passing it to the superclass
initializer, which broke handling for arguments with consecutive values.

The help text for --desired-buyer has been updated to reflect that you
actually can specify multiple values with a single declaration now.
2021-08-13 08:27:23 -05:00
Jeremy Saklad 84c62aa3c6
Convert project to package
All scripts are now contained in a package named "bonemarketsolver".

The command-line interface has been moved to __main__.py.

The solver script has been moved to solve.py.

Relative module imports are now used where appropriate.

The invocation method of the CLI has changed: instead of running Python
itself, you can now use "pipenv run bone_market_solver".

The README has been updated to reflect the new usage method.
2021-08-03 14:48:42 -05:00