icrs.releaser


Nameicrs.releaser JSON
Version 1.2.0 PyPI version JSON
download
home_pagehttps://github.com/jamadden/icrs.releaser
Summaryzest.releaser/setuptools_scm plugin.
upload_time2024-01-30 16:03:11
maintainer
docs_urlNone
authorJason Madden
requires_python>=3.9
licenseApache
keywords zest.releaser release automation setuptools_scm git
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ===============
 icrs.releaser
===============

.. image:: https://github.com/jamadden/icrs.releaser/workflows/tests/badge.svg
   :target: https://github.com/jamadden/icrs.releaser/actions?query=workflow%3Atests

.. image:: https://coveralls.io/repos/github/jamadden/icrs.releaser/badge.svg?branch=master
   :target: https://coveralls.io/github/jamadden/icrs.releaser?branch=master

.. image:: https://readthedocs.org/projects/icrsreleaser/badge/?version=latest
   :target: https://icrsreleaser.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation Status


This package provides support for releasing projects using
`zest.releaser <https://zestreleaser.readthedocs.io>`_, especially in
combination with `setuptools_scm
<https://pypi.org/project/setuptools-scm/>`_.

This package does three things:

* Insert the correct version number in source files.

  It's helpful for readers of the source code and the documentation
  when object docstrings contain abbreviated change logs. Sphinx
  supports this with `the special directives
  <https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-versionadded>`_
  ``versionadded``, ``versionchanged``, and ``deprecated``. For
  example, a docstring might contain::

    .. versionchanged:: 2.0.1
       Now frob the frizzle correctly when *frob_frizzle* is true.

  But the author of the docstring doesn't always know what the version
  number that contains the change will ultimately be. In a scheme like
  `CalVer <https://calver.org>`_, that will depend on when the release is made, and in a
  scheme like `SemVer <https://semver.org>`_, that will depend on what other changes are
  part of the release. In either case, it can't be determined until
  the release is actually made.

  To solve this, this package has a plugin that lets you write your
  docstrings like so::

    .. deprecated:: NEXT
       Turns out frobbing the frizzle was a bad idea.

  When a release is made, all ``.py`` files that are found in the ``src/<PROJECT>/``
  directory are examined for those three directives with an argument
  of ``NEXT``, and the ``NEXT`` value is replaced with the version
  number the user selected.

  The user will be presented a diff of the changes made and asked
  whether to commit them before continuing.
* Removes C compiler flags from the environment.

  You may have custom C compiler flags in your environment
  (``CFLAGS``, etc). These may contain non-portable options such as
  ``-ffast-math`` or ``-march=native`` that would prevent binary
  wheels built on your machine from working on other machines.

  This package removes those flags from the environment that builds
  binary wheels.
* Makes ``setuptools_scm`` respect the version number the user entered.

  ``zest.releaser`` asks ``setuptools`` what version to use when it
  tags the repository. It expects to get back the version that the
  user entered, and which it wrote to disk (typically in
  ``setup.py``).

  But because ``setuptools_scm`` overrides the value stored in
  ``setup.py`` based on the last tag in the repository, this doesn't
  work: it would only work if the tag was already made! Instead of
  getting the correct tag like ``0.0.2``, ``zest.releaser`` wants to
  create a tag like ``0.0.1.dev11+gbeb8b20``.

  This package forces ``setuptools_scm`` to respect the version that
  the user entered so that the tag is correct.

Installation And Usage
======================

This package registers certain entry points with ``zest.releaser``
when it is installed, so it is only necessary to ``pip install
icrs.releaser`` and then invoke ``icrs_release`` to use the plugins
mentioned above.

This package provides the ``recommended`` extra to install the same
things that ``zest.releaser[recommended]`` does.

.. code-block:: console

   $ pip install 'icrs.releaser[recommended]'

.. important::

   This package assumes that your project uses the standard ``src/``
   layout. That is, for a package named ``foo``, there will be a
   directory next to ``setup.py``, ``src/foo/``, containing the Python
   source. Likewise, for a namespace package ``foo.bar``, the code
   will be in ``src/foo/bar/``.

.. important::

   Because this package is a plugin to ``zest.releaser``, the two
   packages must be installed in the same environment (same Python
   path). The easiest way to ensure this is to just install this
   package, and then use the command from the next point.

.. important::

   For this package to work, you must use the ``icrs_release``
   command.

   This is a simple wrapper for the ``fullrelease`` command provided
   by ``zest.releaser``. It's use is necessitated by the fact that
   this package works in part by setting and unsetting environment
   variables.


=========
 Changes
=========

1.2.0 (2024-01-30)
==================

- Add support for Python 3.11 and 3.12.
- Drop support for Python 3.8. The minimum supported version is now 3.9.
- Depend on newer ``zest.releaser >= 9.1.1``.
- Remove dependency on setuptools; now uses the so-called
  "native" namespace packages.
- Add a new release check that forbids having development dependencies
  (e.g., "icrs.releaser >= 3.0.dev0" would be forbidden). This only
  works for ``setuptools`` projects that have dependencies listed in setup.py.


1.1.0 (2022-03-03)
==================

- Fix handling the case where the project name is a namespace
  (``icrs.releaser``), but the source directory on disk doesn't
  include the namespace (``src/releaser``). This is a legacy case,
  supported for projects that are transitioning to a standard layout.


1.0.1 (2022-02-25)
==================

- Add the 'recommended' extra for installing the same things that
  ``zest.releaser[recommended]`` does.


1.0.0 (2022-02-25)
==================

- Initial PyPI release.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jamadden/icrs.releaser",
    "name": "icrs.releaser",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "zest.releaser release automation setuptools_scm git",
    "author": "Jason Madden",
    "author_email": "jason@seecoresoftware.com",
    "download_url": "https://files.pythonhosted.org/packages/1d/11/2246c8934e7e091eddeb76abf1e190905738f719084a0fddb1b2b46c9e61/icrs.releaser-1.2.0.tar.gz",
    "platform": null,
    "description": "===============\n icrs.releaser\n===============\n\n.. image:: https://github.com/jamadden/icrs.releaser/workflows/tests/badge.svg\n   :target: https://github.com/jamadden/icrs.releaser/actions?query=workflow%3Atests\n\n.. image:: https://coveralls.io/repos/github/jamadden/icrs.releaser/badge.svg?branch=master\n   :target: https://coveralls.io/github/jamadden/icrs.releaser?branch=master\n\n.. image:: https://readthedocs.org/projects/icrsreleaser/badge/?version=latest\n   :target: https://icrsreleaser.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation Status\n\n\nThis package provides support for releasing projects using\n`zest.releaser <https://zestreleaser.readthedocs.io>`_, especially in\ncombination with `setuptools_scm\n<https://pypi.org/project/setuptools-scm/>`_.\n\nThis package does three things:\n\n* Insert the correct version number in source files.\n\n  It's helpful for readers of the source code and the documentation\n  when object docstrings contain abbreviated change logs. Sphinx\n  supports this with `the special directives\n  <https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-versionadded>`_\n  ``versionadded``, ``versionchanged``, and ``deprecated``. For\n  example, a docstring might contain::\n\n    .. versionchanged:: 2.0.1\n       Now frob the frizzle correctly when *frob_frizzle* is true.\n\n  But the author of the docstring doesn't always know what the version\n  number that contains the change will ultimately be. In a scheme like\n  `CalVer <https://calver.org>`_, that will depend on when the release is made, and in a\n  scheme like `SemVer <https://semver.org>`_, that will depend on what other changes are\n  part of the release. In either case, it can't be determined until\n  the release is actually made.\n\n  To solve this, this package has a plugin that lets you write your\n  docstrings like so::\n\n    .. deprecated:: NEXT\n       Turns out frobbing the frizzle was a bad idea.\n\n  When a release is made, all ``.py`` files that are found in the ``src/<PROJECT>/``\n  directory are examined for those three directives with an argument\n  of ``NEXT``, and the ``NEXT`` value is replaced with the version\n  number the user selected.\n\n  The user will be presented a diff of the changes made and asked\n  whether to commit them before continuing.\n* Removes C compiler flags from the environment.\n\n  You may have custom C compiler flags in your environment\n  (``CFLAGS``, etc). These may contain non-portable options such as\n  ``-ffast-math`` or ``-march=native`` that would prevent binary\n  wheels built on your machine from working on other machines.\n\n  This package removes those flags from the environment that builds\n  binary wheels.\n* Makes ``setuptools_scm`` respect the version number the user entered.\n\n  ``zest.releaser`` asks ``setuptools`` what version to use when it\n  tags the repository. It expects to get back the version that the\n  user entered, and which it wrote to disk (typically in\n  ``setup.py``).\n\n  But because ``setuptools_scm`` overrides the value stored in\n  ``setup.py`` based on the last tag in the repository, this doesn't\n  work: it would only work if the tag was already made! Instead of\n  getting the correct tag like ``0.0.2``, ``zest.releaser`` wants to\n  create a tag like ``0.0.1.dev11+gbeb8b20``.\n\n  This package forces ``setuptools_scm`` to respect the version that\n  the user entered so that the tag is correct.\n\nInstallation And Usage\n======================\n\nThis package registers certain entry points with ``zest.releaser``\nwhen it is installed, so it is only necessary to ``pip install\nicrs.releaser`` and then invoke ``icrs_release`` to use the plugins\nmentioned above.\n\nThis package provides the ``recommended`` extra to install the same\nthings that ``zest.releaser[recommended]`` does.\n\n.. code-block:: console\n\n   $ pip install 'icrs.releaser[recommended]'\n\n.. important::\n\n   This package assumes that your project uses the standard ``src/``\n   layout. That is, for a package named ``foo``, there will be a\n   directory next to ``setup.py``, ``src/foo/``, containing the Python\n   source. Likewise, for a namespace package ``foo.bar``, the code\n   will be in ``src/foo/bar/``.\n\n.. important::\n\n   Because this package is a plugin to ``zest.releaser``, the two\n   packages must be installed in the same environment (same Python\n   path). The easiest way to ensure this is to just install this\n   package, and then use the command from the next point.\n\n.. important::\n\n   For this package to work, you must use the ``icrs_release``\n   command.\n\n   This is a simple wrapper for the ``fullrelease`` command provided\n   by ``zest.releaser``. It's use is necessitated by the fact that\n   this package works in part by setting and unsetting environment\n   variables.\n\n\n=========\n Changes\n=========\n\n1.2.0 (2024-01-30)\n==================\n\n- Add support for Python 3.11 and 3.12.\n- Drop support for Python 3.8. The minimum supported version is now 3.9.\n- Depend on newer ``zest.releaser >= 9.1.1``.\n- Remove dependency on setuptools; now uses the so-called\n  \"native\" namespace packages.\n- Add a new release check that forbids having development dependencies\n  (e.g., \"icrs.releaser >= 3.0.dev0\" would be forbidden). This only\n  works for ``setuptools`` projects that have dependencies listed in setup.py.\n\n\n1.1.0 (2022-03-03)\n==================\n\n- Fix handling the case where the project name is a namespace\n  (``icrs.releaser``), but the source directory on disk doesn't\n  include the namespace (``src/releaser``). This is a legacy case,\n  supported for projects that are transitioning to a standard layout.\n\n\n1.0.1 (2022-02-25)\n==================\n\n- Add the 'recommended' extra for installing the same things that\n  ``zest.releaser[recommended]`` does.\n\n\n1.0.0 (2022-02-25)\n==================\n\n- Initial PyPI release.\n",
    "bugtrack_url": null,
    "license": "Apache",
    "summary": "zest.releaser/setuptools_scm plugin.",
    "version": "1.2.0",
    "project_urls": {
        "Documentation": "https://icrsreleaser.readthedocs.io/en/latest/",
        "Homepage": "https://github.com/jamadden/icrs.releaser"
    },
    "split_keywords": [
        "zest.releaser",
        "release",
        "automation",
        "setuptools_scm",
        "git"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45b9c584f90120e73fb0bc40f396fe37c6de2ac3c37d913fc3e5951c3884e514",
                "md5": "1ecb63d8709151dea2de213fc9fd368c",
                "sha256": "7aa87f4afbe894bfa8509f3f1f5056453e77fb21c08fd52c70a6b9221d720b86"
            },
            "downloads": -1,
            "filename": "icrs.releaser-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1ecb63d8709151dea2de213fc9fd368c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 20805,
            "upload_time": "2024-01-30T16:03:09",
            "upload_time_iso_8601": "2024-01-30T16:03:09.881550Z",
            "url": "https://files.pythonhosted.org/packages/45/b9/c584f90120e73fb0bc40f396fe37c6de2ac3c37d913fc3e5951c3884e514/icrs.releaser-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d112246c8934e7e091eddeb76abf1e190905738f719084a0fddb1b2b46c9e61",
                "md5": "72103f0b63e106019f793416bcdf0209",
                "sha256": "144947aceb895a11fbc81e67b82c182d009f2d599b70e93ec204da1ac14a17fc"
            },
            "downloads": -1,
            "filename": "icrs.releaser-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "72103f0b63e106019f793416bcdf0209",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 25263,
            "upload_time": "2024-01-30T16:03:11",
            "upload_time_iso_8601": "2024-01-30T16:03:11.720802Z",
            "url": "https://files.pythonhosted.org/packages/1d/11/2246c8934e7e091eddeb76abf1e190905738f719084a0fddb1b2b46c9e61/icrs.releaser-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-30 16:03:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jamadden",
    "github_project": "icrs.releaser",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "icrs.releaser"
}
        
Elapsed time: 0.61924s