Notes ===== Restrictions & Caveats ---------------------- - When building or installing a project that uses ``versioningit``, the entire repository history (or at least everything back through the most recent tag) must be available. This means that installing from a shallow clone (the default on most CI systems) will not work. If you are using the ``"git"`` or ``"git-archive"`` ``vcs`` method and have ``default-tag`` set in ``[tool.versioningit.vcs]``, then shallow clones will end up assigned the default tag, which may or may not be what you want. - If using the ``[tool.versioningit.write]`` subtable to write the version to a file, this file will only be updated whenever the project is built or installed. If using editable installs, this means that you must re-run ``python setup.py develop`` or ``pip install -e .`` after each commit if you want the version to be up-to-date. - If you define & use a custom method inside your Python project's package, you will not be able to retrieve your project version by calling `importlib.metadata.version()` inside :file:`__init__.py` — at least, not without a ``try: ... except ...`` wrapper. This is because ``versioningit`` loads the package containing the custom method before the package is installed, but `importlib.metadata.version()` only works after the package is installed. - If you generate a conda package from your sdist (e.g., for a conda-forge feedstock), you will likely want to include ``versioningit`` as a ``host`` dependency in your conda ``meta.yaml`` file. This is needed for the package produced from your sdist to contain the correct version number in its ``dist-info``. Backwards Compatibility Policy ------------------------------ ``versioningit`` follows `Semantic Versioning`_, in which the major version component is incremented whenever a breaking change is made. Moreover, the basic ``pyproject.toml`` interface to ``versioningit`` can be considered very stable; the only changes to expect to it will be the addition of new features and the occasional patching over of corner-case bugs. Nearly all breaking changes will be to the library or custom method API; if you've written any code that uses this part of the API, you are advised to declare the next major version of ``versioningit`` as an upper bound on your ``versioningit`` dependency. .. _Semantic Versioning: https://semver.org Bug fixes may, on occasion, be backported to previous major versions of ``versioningit``, but this is in general unlikely to happen unless a user specifically requests it.