Go to file
renovate 632181836a fix(deps): update dependency semver to v3 (#6)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [semver](https://github.com/python-semver/python-semver) ([changelog](https://python-semver.readthedocs.io/en/latest/changelog.html)) | dependencies | major | `^2.13.0` -> `^3.0.0` |

---

### Release Notes

<details>
<summary>python-semver/python-semver</summary>

### [`v3.0.0`](https://github.com/python-semver/python-semver/blob/HEAD/CHANGELOG.rst#Version-300)

[Compare Source](https://github.com/python-semver/python-semver/compare/2.13.0...3.0.0)

\=============

:Released: 2023-04-02
:Maintainer: Tom Schraitle

## Bug Fixes

-   :gh:`291`: Disallow negative numbers in VersionInfo arguments
    for `major`, `minor`, and `patch`.

-   :gh:`310`: Rework API documentation.
    Follow a more "semi-manual" attempt and add auto directives
    into :file:`docs/api.rst`.

-   :gh:`344`: Allow empty string, a string with a prefix, or `None`
    as token in
    :meth:`~semver.version.Version.bump_build` and
    :meth:`~semver.version.Version.bump_prerelease`.

-   :gh:`374`: Correct Towncrier's config entries in the :file:`pyproject.toml` file.
    The old entries `[[tool.towncrier.type]]` are deprecated and need
    to be replaced by `[tool.towncrier.fragment.<TYPE>]`.

-   :pr:`384`: General cleanup, reformat files:

    -   Reformat source code with black again as some config options
        did accidentely exclude the semver source code.
        Mostly remove some includes/excludes in the black config.
    -   Integrate concurrency in GH Action
    -   Ignore Python files on project dirs in .gitignore
    -   Remove unused patterns in MANIFEST.in
    -   Use `extend-exclude` for flake in :file:\`setup.cfg\`\` and adapt list.
    -   Use `skip_install=True` in :file:`tox.ini` for black

-   :pr:`393`: Fix command :command:`python -m semver` to avoid the error "invalid choice"

-   :pr:`396`: Calling :meth:`~semver.version.Version.parse` on a derived class will show correct type of derived class.

## Deprecations

-   :gh:`169`: Deprecate CLI functions not imported from `semver.cli`.

-   :gh:`234`: In :file:`setup.py` simplified file and remove
    `Tox` and `Clean` classes

-   :gh:`284`: Deprecate the use of :meth:`~Version.isvalid`.

    Rename :meth:`~semver.version.Version.isvalid`
    to :meth:`~semver.version.Version.is_valid`
    for consistency reasons with :meth:`~semver.version.Version.is_compatible`.

-   :pr:`290`: For semver 3.0.0-alpha0 deprecated:

    -   Remove anything related to Python2
    -   In :file:`tox.ini` and :file:`.travis.yml`
        Remove targets py27, py34, py35, and pypy.
        Add py38, py39, and nightly (allow to fail)
    -   In :file:`setup.py` simplified file and remove
        `Tox` and `Clean` classes
    -   Remove old Python versions (2.7, 3.4, 3.5, and pypy)
        from Travis

-   :gh:`372`: Deprecate support for Python 3.6.

    Python 3.6 reached its end of life and isn't supported anymore.
    At the time of writing (Dec 2022), the lowest version is 3.7.

    Although the `poll <https://github.com/python-semver/python-semver/discussions/371>`\_
    didn't cast many votes, the majority agreed to remove support for
    Python 3.6.

-   :pr:`402`: Keep :func:`semver.compare <semver._deprecated.compare>`.
    Although it breaks consistency with module level functions, it seems it's
    a much needed/used function. It's still unclear if we should deprecate
    this function or not (that's why we use :py:exc:`PendingDeprecationWarning`).

    As we don't have a uniform initializer yet, this function stays in the
    :file:`_deprecated.py` file for the time being until we find a better solution. See :gh:`258` for details.

## Features

-   :gh:`169`: Create semver package and split code among different modules in the packages:

    -   Remove :file:`semver.py`
    -   Create :file:`src/semver/__init__.py`
    -   Create :file:`src/semver/cli.py` for all CLI methods
    -   Create :file:`src/semver/_deprecated.py` for the `deprecated` decorator and other deprecated functions
    -   Create :file:`src/semver/__main__.py` to allow calling the CLI using :command:`python -m semver`
    -   Create :file:`src/semver/_types.py` to hold type aliases
    -   Create :file:`src/semver/version.py` to hold the :class:`Version` class (old name :class:`VersionInfo`) and its utility functions
    -   Create :file:`src/semver/__about__.py` for all the metadata variables

-   :gh:`213`: Add typing information

-   :gh:`284`: Implement :meth:`~semver.version.Version.is_compatible` to make "is self compatible with X".

-   :gh:`305`: Rename :class:`~semver.version.VersionInfo` to :class:`~semver.version.Version` but keep an alias for compatibility

-   :pr:`359`: Add optional parameter `optional_minor_and_patch` in :meth:`~semver.version.Version.parse`  to allow optional
    minor and patch parts.

-   :pr:`362`: Make :meth:`~semver.version.Version.match` accept a bare version string as match expression, defaulting to equality testing.

-   :gh:`364`: Enhance :file:`pyproject.toml` to make it possible to use the
    :command:`pyproject-build` command from the build module.
    For more information, see :ref:`build-semver`.

-   :gh:`365`: Improve :file:`pyproject.toml`.

    -   Use setuptools, add metadata. Taken approach from
        `A Practical Guide to Setuptools and Pyproject.toml <https://godatadriven.com/blog/a-practical-guide-to-setuptools-and-pyproject-toml/>`\_.
    -   Doc: Describe building of semver
    -   Remove :file:`.travis.yml` in :file:`MANIFEST.in`
        (not needed anymore)
    -   Distinguish between Python 3.6 and others in :file:`tox.ini`
    -   Add skip_missing_interpreters option for :file:`tox.ini`
    -   GH Action: Upgrade setuptools and setuptools-scm and test
        against 3.11.0-rc.2

## Improved Documentation

-   :gh:`276`: Document how to create a sublass from :class:`~semver.version.VersionInfo` class

-   :gh:`284`: Document deprecation of :meth:`~semver.version.Version.isvalid`.

-   :pr:`290`: Several improvements in the documentation:

    -   New layout to distinguish from the semver2 development line.
    -   Create new logo.
    -   Remove any occurances of Python2.
    -   Describe changelog process with Towncrier.
    -   Update the release process.

-   :gh:`304`: Several improvements in documentation:

    -   Reorganize API documentation.
    -   Add migration chapter from semver2 to semver3.
    -   Distinguish between changlog for version 2 and 3

-   :gh:`305`: Add note about :class:`~semver.version.Version` rename.

-   :gh:`312`: Rework "Usage" section.

    -   Mention the rename of :class:`~semver.version.VersionInfo` to
        :class:`~semver.version.Version` class
    -   Remove semver. prefix in doctests to make examples shorter
    -   Correct some references to dunder methods like
        :func:`~semver.version.Version.__getitem__`,
        :func:`~semver.version.Version.__gt__` etc.
    -   Remove inconsistencies and mention module level function as
        deprecated and discouraged from using
    -   Make empty :py:func:`super` call in :file:`semverwithvprefix.py` example

-   :gh:`315`: Improve release procedure text

-   :gh:`335`: Add new section "Converting versions between PyPI and semver" the limitations
    and possible use cases to convert from one into the other versioning scheme.

-   :gh:`340`: Describe how to get version from a file

-   :gh:`343`: Describe combining Pydantic with semver in the "Advanced topic"
    section.

-   :gh:`350`: Restructure usage section. Create subdirectory "usage/" and splitted
    all section into different files.

-   :gh:`351`: Introduce new topics for:

    -   "Migration to semver3"
    -   "Advanced topics"

-   :pr:`392`: Fix the example in the documentation for combining semver and pydantic.

## Trivial/Internal Changes

-   :gh:`169`: Adapted infrastructure code to the new project layout.

    -   Replace :file:`setup.py` with :file:`setup.cfg` because the :file:`setup.cfg` is easier to use
    -   Adapt documentation code snippets where needed
    -   Adapt tests
    -   Changed the `deprecated` to hardcode the `semver` package name in the warning.

    Increase coverage to 100% for all non-deprecated APIs

-   :pr:`290`: Add supported Python versions to :command:`black`.

-   :gh:`304`: Support PEP-561 :file:`py.typed`.

    According to the mentioned PEP:

    "Package maintainers who wish to support type checking
    of their code MUST add a marker file named :file:`py.typed`
    to their package supporting typing."

    Add package_data to :file:`setup.cfg` to include this marker in dist
    and whl file.

-   :gh:`309`: Some (private) functions from the :mod:`semver.version`
    module has been changed.

    The following functions got renamed:

    -   function :func:`semver.version.comparator` got renamed to
        :func:`semver.version._comparator` as it is only useful
        inside the :class:`~semver.version.Version` class.
    -   function :func:`semver.version.cmp` got renamed to
        :func:`semver.version._cmp` as it is only useful
        inside the :class:`~semver.version.Version` class.

    The following functions got integrated into the
    :class:`~semver.version.Version` class:

    -   function :func:`semver.version._nat_cmd` as a classmethod
    -   function :func:`semver.version.ensure_str`

-   :gh:`313`: Correct :file:`tox.ini` for `changelog` entry to skip
    installation for semver. This should speed up the execution
    of towncrier.

-   :gh:`316`: Comparisons of :class:`~semver.version.Version` class and other
    types return now a :py:const:`NotImplemented` constant instead
    of a :py:exc:`TypeError` exception.

    The `NotImplemented`\_ section of the Python documentation recommends
    returning this constant when comparing with `__gt__`, `__lt__`,
    and other comparison operators to "to indicate that the operation is
    not implemented with respect to the other type".

    .. \_NotImplemented: https://docs.python.org/3/library/constants.html#NotImplemented

-   :gh:`319`: Introduce stages in :file:`.travis.yml`
    The config file contains now two stages: check and test. If
    check fails, the test stage won't be executed. This could
    speed up things when some checks fails.

-   :gh:`322`: Switch from Travis CI to GitHub Actions.

-   :gh:`347`: Support Python 3.10 in GitHub Action and other config files.

-   :gh:`378`: Fix some typos in Towncrier configuration

-   :gh:`388`: For pytest, switch to the more modern :mod:`importlib` approach
    as it doesn't require to modify :data:`sys.path`:
    https://docs.pytest.org/en/7.2.x/explanation/pythonpath.html

-   :pr:`389`: Add public class variable :data:`Version.NAMES <semver.version.Version.NAMES>`.

    This class variable contains a tuple of strings that contains the names of
    all attributes of a Version (like `"major"`, `"minor"` etc).

    In cases we need to have dynamical values, this makes it easier to iterate.

..
Local variables:
coding: utf-8
mode: text
mode: rst
End:
vim: fileencoding=utf-8 filetype=rst :

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS42MS4wIiwidXBkYXRlZEluVmVyIjoiMzUuNjEuMCJ9-->

Co-authored-by: Renovate Bot <renovate@localhost.localdomain>
Reviewed-on: #6
Co-authored-by: renovate <renovate@noreply.localhost>
Co-committed-by: renovate <renovate@noreply.localhost>
2023-04-28 09:01:11 +02:00
doxy List sub services of a service (docker-compose.yml) 2023-04-20 14:56:55 +02:00
tests Preparing pre-commit setup 2023-01-10 15:45:35 +01:00
.gitignore Initial commit 2023-01-10 08:57:57 +01:00
.pre-commit-config.yaml Updated pre-commit dependencies 2023-04-20 14:57:16 +02:00
README.md Code formatting 2023-01-16 14:42:00 +01:00
config.example.yml Handle missing configuration file. 2023-01-12 08:43:44 +01:00
poetry.lock fix(deps): update dependency semver to v3 (#6) 2023-04-28 09:01:11 +02:00
pyproject.toml fix(deps): update dependency semver to v3 (#6) 2023-04-28 09:01:11 +02:00
renovate.json Configure Renovate (#1) 2023-04-27 15:09:14 +02:00

README.md

Doxy

Installation

pipx install git+https://github.com/jaypikay/doxy.git

Shell completion

Service name completion

By enabling shell completion the service names are TAB-Completted when using the control command.

Configuration

Save the configuration file in ~/.config/doxy/config.yml:

root_directory: "/path/to/docker/services"
compose_executable: "/usr/bin/docker-compose"

If you use docker compose instead of docker-compose you can use a wrapper script for docker-compose

#!/bin/bash

/usr/bin/docker compose $@

exit 0

Usage

Usage: doxy [OPTIONS] COMMAND [ARGS]...

Options:
  -f, --format [fancy|simple]  output formatting  [default: fancy]
  --help  Show this message and exit.

Commands:
  control  run docker-compose commands
  edit     edit the compose file
  list     list available services
  update   pull the latest service images and restart

Examples

List available services

$ doxy list
Available Services
├── service-1
├── service-2
├── other-service
└── my-service-demo

When doxy -f simple is used the output is easier to process by pipes.

Start a service and detach

$ doxy control other-service up -d

Edit a service

$ doxy edit service-2

Bash

Alternative 1

Add this to ~/.bashrc:

eval "$(_DOXY_COMPLETE=bash_source doxy)"

Alternative 2

Save the script:

_DOXY_COMPLETE=bash_source doxy > ~/.doxy-complete.bash

Add this to ~/.bashrc:

. ~/.foo-bar-complete.bash

Zsh

Alternative 1

Add this to ~/.zshrc:

eval "$(_DOXY_COMPLETE=zsh_source doxy)"

Alternative 2

Save the script:

_DOXY_COMPLETE=zsh_source doxy > ~/.doxy-complete.zsh

Add this to ~/.zshrc:

. ~/.foo-bar-complete.zsh