Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NEUTRAL] Update dependency argh to v0.31.3 #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

mend-for-github.aaakk.us.kg[bot]
Copy link

@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot commented Feb 21, 2023

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
argh (changelog) ==0.26.2 -> ==0.31.3 age adoption passing confidence

Release Notes

neithere/argh (argh)

v0.31.3

Compare Source

Bugs fixed:

v0.31.2

Compare Source

Bugs fixed:

  • broken support for Optional[List] (but not Optional[list]), a narrower
    case of the problem fixed earlier (issue #​216).

v0.31.1

Compare Source

Bugs fixed:

  • broken support for type alias List (issue #​216).

Enhancements:

  • cleaned up the README, rearranged other documentation.

v0.31.0

Compare Source

Breaking changes:

  • The typing hints introspection feature is automatically enabled for any
    command (function) which does not have any arguments specified via @arg
    decorator.

    This means that, for example, the following function used to fail and now
    it will pass::

    def main(count: int):
        assert isinstance(count, int)
    

    This may lead to unexpected behaviour in some rare cases.

  • A small change in the legacy argument mapping policy BY_NAME_IF_HAS_DEFAULT
    concerning the order of variadic positional vs. keyword-only arguments.

    The following function now results in main alpha [args ...] beta instead of
    main alpha beta [args ...]::

    def main(alpha, *args, beta): ...
    

    This does not concern the default name mapping policy. Even for the
    legacy one it's an edge case which is extremely unlikely to appear in any
    real-life application.

  • Removed the previously deprecated decorator @expects_obj.

Enhancements:

  • Added experimental support for basic typing hints (issue #​203)

    The following hints are currently supported:

    • str, int, float, bool (goes to type);
    • list (affects nargs), list[T] (first subtype goes into type);
    • Literal[T1, T2, ...] (interpreted as choices);
    • Optional[T] AKA T | None (currently interpreted as
      required=False for optional and nargs="?" for positional
      arguments; likely to change in the future as use cases accumulate).

    The exact interpretation of the type hints is subject to change in the
    upcoming versions of Argh.

  • Added always_flush argument to dispatch() (issue #​145)

  • High-level functions argh.dispatch_command() and argh.dispatch_commands()
    now accept a new parameter old_name_mapping_policy. The behaviour hasn't
    changed because the parameter is True by default. It will change to
    False in Argh v.0.33 or v.1.0.

Deprecated:

  • the namespace argument in argh.dispatch() and argh.parse_and_resolve().
    Rationale: continued API cleanup. It's already possible to mutate the
    namespace object between parsing and calling the endpoint; it's unlikely that
    anyone would need to specify a custom namespace class or pre-populate it
    before parsing. Please file an issue if you have a valid use case.

Other changes:

  • Refactoring.

v0.30.5

Compare Source

Bugs fixed:

  • A combination of nargs with a list as default value would lead to the
    values coming from CLI being wrapped in another list (issue #​212).

Enhancements:

  • Argspec guessing: if nargs is not specified but the default value
    is a list, nargs="*" is assumed and passed to argparse.

v0.30.4

Compare Source

There were complaints about the lack of a deprecation cycle for the legacy name
mapping policy. This version addresses the issue:

  • The handling introduced in v.0.30.2 (raising an exception for clarity)
    is retained for cases when no name mapping policy is specified but function
    signature contains defaults in non-kwonly args and kwonly args are also
    defined
    ::

    def main(alpha, beta=1, *, gamma=2):  # error — explicit policy required
    

    In a similar case but when kwonly args are not defined Argh now assumes
    the legacy name mapping policy (BY_NAME_IF_HAS_DEFAULT) and merely issues
    a deprecation warning with the same message as the exception mentioned above::

    def main(alpha, beta=2):    # `[-b BETA] alpha` + DeprecationWarning
    

    This ensures that most of the old scripts still work the same way despite the
    new policy being used by default and enforced in cases when it's impossible
    to resolve the mapping conflict.

    Please note that this "soft" handling is to be removed in version v0.33
    (or v1.0 if the former is not deemed necessary). The new name mapping policy
    will be used by default without warnings, like in v0.30.

v0.30.3

Compare Source

Bugs fixed:

  • Regression: a positional argument with an underscore used in @arg decorator
    would cause Argh fail on the assembling stage. (#​208)

v0.30.2

Compare Source

Bugs fixed:

  • As reported in #​204 and #​206, the new default name mapping policy in fact
    silently changed the CLI API of some scripts: arguments which were previously
    translated as CLI options became optional positionals. Although the
    instructions were supplied in the release notes, the upgrade may not
    necessarily be intentional, so a waste of users' time is quite likely.

    To alleviate this, the default value for name_mapping_policy in standard
    functions has been changed to None; if it's not specified, Argh falls back
    to the new default policy, but raises ArgumentNameMappingError with
    detailed instructions if it sees a non-kwonly argument with a default value.

    Please specify the policy explicitly in order to avoid this error if you need
    to infer optional positionals (nargs="?") from function signature.

v0.30.1

Compare Source

Bugs fixed:

  • Regression: certain special values in argument default value would cause an
    exception (#​204)

Enhancements:

  • Improved the tutorial.
  • Added a more informative error message when the reason is likely to be
    related to the migration from Argh v0.29 to a version with a new argument
    name mapping policy.

Other changes:

  • Added py.typed marker file for :pep:561.

v0.30.0

Compare Source

Backwards incompatible changes:

  • A new policy for mapping function arguments to CLI arguments is used by
    default (see :class:argh.assembling.NameMappingPolicy).

    The following function does not map to func foo [--bar] anymore::

    def func(foo, bar=None):
        ...
    

    Since this release it maps to func foo [bar] instead.
    Please update the function this way to keep bar an "option"::

    def func(foo, *, bar=None):
        ...
    

    If you cannot modify the function signature to use kwonly args for options,
    please consider explicitly specifying the legacy name mapping policy::

    set_default_command(
        func, name_mapping_policy=NameMappingPolicy.BY_NAME_IF_HAS_DEFAULT
    )
    
  • The name mapping policy BY_NAME_IF_HAS_DEFAULT slightly deviates from the
    old behaviour. Kwonly arguments without default values used to be marked as
    required options (--foo FOO), now they are treated as positionals
    (foo). Please consider the new default policy (BY_NAME_IF_KWONLY) for
    a better treatment of kwonly.

  • Removed previously deprecated features (#​184#​188):

    • argument help string in annotations — reserved for type hints;

    • argh.SUPPORTS_ALIASES;

    • argh.safe_input();

    • previously renamed arguments for add_commands(): namespace,
      namespace_kwargs, title, description, help;

    • pre_call argument in dispatch(). The basic usage remains simple but
      more granular functions are now available for more control.

      Instead of this::

      argh.dispatch(..., pre_call=pre_call_hook)

      please use this::

      func, ns = argh.parse_and_resolve(...)
      pre_call_hook(ns)
      argh.run_endpoint_function(func, ns, ...)

Deprecated:

  • The @expects_obj decorator. Rationale: it used to support the old,
    "un-pythonic" style of usage, which essentially lies outside the scope of
    Argh. If you are not using the mapping of function arguments onto CLI, then
    you aren't reducing the amount of code compared to vanilla Argparse.

  • The add_help_command argument in dispatch().
    Rationale: it doesn't add much to user experience; it's not much harder to
    type --help than it is to type help; moreover, the option can be
    added anywhere, unlike its positional counterpart.

Enhancements:

  • Added support for Python 3.12.

  • Added type annotations to existing Argh code (#​185#​189).

  • The dispatch() function has been refactored, so in case you need finer
    control over the process, two new, more granular functions can be used:

    • endpoint_function, namespace = argh.parse_and_resolve(...)
    • argh.run_endpoint_function(endpoint_function, namespace, ...)

    Please note that the names may change in the upcoming versions.

  • Configurable name mapping policy has been introduced for function argument
    to CLI argument translation (#​191#​199):

    • BY_NAME_IF_KWONLY (default and recommended).
    • BY_NAME_IF_HAS_DEFAULT (close to pre-v.0.30 behaviour);

    Please check API docs on :class:argh.assembling.NameMappingPolicy for
    details.

v0.29.4

Compare Source

Bugs fixed:

  • Test coverage reported as <100% when argcomplete is installed (#​187)

v0.29.3

Compare Source

Technical releases for packaging purposes. No changes in functionality.

v0.29.2

Compare Source

This is a technical release for packaging purposes.

v0.28.1

Compare Source

v0.28.0

Compare Source

A major cleanup.

Backward incompatible changes:

  • Dropped support for Python 2.7 and 3.7.

Deprecated features, to be removed in v.0.30:

  • argh.assembling.SUPPORTS_ALIASES.

    • Always True for recent versions of Python.
  • argh.io.safe_input() AKA argh.interaction.safe_input().

    • Not relevant anymore. Please use the built-in input() instead.
  • argument pre_call in dispatch().

    Even though this hack seems to have been used in some projects, it was never
    part of the official API and never recommended.

    Describing your use case in the discussion about shared arguments_ can
    help improve the library to accomodate it in a proper way.

    .. _discussion about shared arguments:https://github.com/neithere/argh/issues/633

  • Argument help as annotations.

    • Annotations will only be used for types after v.0.30.

    • Please replace any instance of::

      def func(foo: "Foobar"):

      with the following::

      @​arg('-f', '--foo', help="Foobar")
      def func(foo):

      It will be decided later how to keep this functionality "DRY" (don't repeat
      yourself) without conflicts with modern conventions and tools.

  • Added deprecation warnings for some arguments deprecated back in v.0.26.

v0.27.2

Compare Source

Minor packaging fix:

  • chore: include file required by tox.ini in the sdist (#​155)

v0.27.1

Compare Source

Minor building and packaging fixes:

  • docs: add Read the Docs config (#​160)
  • chore: include tox.ini in the sdist (#​155)

v0.27.0

Compare Source

This is the last version to support Python 2.7.

Backward incompatible changes:

  • Dropped support for Python 2.6.

Enhancements:

  • Added support for Python 3.7 through 3.11.
  • Support introspection of function signature behind the @wraps decorator
    (issue #​111).

Fixed bugs:

  • When command function signature contained **kwargs and positionals
    without defaults and with underscores in their names, a weird behaviour could
    be observed (issue #​104).
  • Fixed introspection through decorators (issue #​111).
  • Switched to Python's built-in unittest.mock (PR #​154).
  • Fixed bug with skip_unknown_args=True (PR #​134).
  • Fixed tests for Python 3.9.7+ (issue #​148).

Other changes:

  • Included the license files in manifest (PR #​112).
  • Extended the list of similar projects (PR #​87).
  • Fixed typos and links in documentation (PR #​110, #​116, #​156).
  • Switched CI to Github Actions (PR #​153).

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.28.1 Update dependency argh to v0.29.3 Sep 4, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.29.3 Update dependency argh to v0.29.4 Sep 24, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.29.4 Update dependency argh to v0.30.0 Oct 22, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.0 Update dependency argh to v0.30.1 Oct 24, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot force-pushed the whitesource-remediate/argh-0.x branch 2 times, most recently from d093660 to 18ccc1f Compare October 25, 2023 05:20
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.1 Update dependency argh to v0.30.2 Oct 25, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.2 Update dependency argh to v0.30.3 Oct 31, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.3 Update dependency argh to v0.30.4 Nov 5, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.4 Update dependency argh to v0.30.5 Dec 26, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.30.5 Update dependency argh to v0.31.0 Dec 31, 2023
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.31.0 Update dependency argh to v0.31.1 Jan 20, 2024
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.31.1 Update dependency argh to v0.31.2 Jan 25, 2024
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title Update dependency argh to v0.31.2 [NEUTRAL] Update dependency argh to v0.31.2 Jan 26, 2024
@mend-for-github.aaakk.us.kg mend-for-github.aaakk.us.kg bot changed the title [NEUTRAL] Update dependency argh to v0.31.2 [NEUTRAL] Update dependency argh to v0.31.3 Jul 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants