Visitar URL original
Releases · pypa/setuptools-scm · GitHub
Skip to content

Releases: pypa/setuptools-scm

vcs-versioning v2.6.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 22:22
Immutable release. Only release title and notes can be modified.
fa5c231

Added

  • Add the towncrier-fragments-zerover version scheme: like towncrier-fragments, but while the last tag is 0.x, breaking and removal fragments bump the minor version and only a major fragment proposes 1.0.0. (#1556)

vcs-versioning v2.5.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 19:10
Immutable release. Only release title and notes can be modified.
b27f597

Added

  • Add discover_file_workdir(), which finds the checkout a project sits in for
    the purpose of listing files. discover_workdir() answers which checkout
    defines the version, scoped by root and search_parent_directories; which
    files a project ships is a separate question, and a project in a subdirectory
    of a checkout still ships that checkout's files. (#1543)

Fixed

  • Accept the tool keyword in _version_missing() again. setuptools-scm 10.1.0
    through 10.2.3 pass it and allow any vcs-versioning<3; since 2.4.1 removed it,
    a build without a detectable version failed with
    TypeError: _version_missing() got an unexpected keyword argument 'tool'
    instead of the LookupError that says how to set a version. The keyword is
    ignored; the tool is taken from the configuration's environment. (#1550)

setuptools-scm v10.3.4

Choose a tag to compare

@github-actions github-actions released this 23 Sep 19:10
Immutable release. Only release title and notes can be modified.
b27f597

Fixed

  • Ship the tracked files of projects whose pyproject.toml sits in a subdirectory
    of the checkout. root defaults to the project directory, so version inference
    correctly finds no SCM there and answers from SETUPTOOLS_SCM_PRETEND_VERSION
    or fallback_version -- but that says nothing about which files git tracks, and
    the sdist and wheel came out with none of them. This was the 10.3.0 regression
    fixed in 10.3.3, surviving in the subdirectory layout.

    File discovery now follows the checkout the project sits in, independently of
    the root that scopes versioning, and records scm_file_list.json in the
    egg-info as a root-level project already did. (#1543)

  • Require vcs-versioning>=2.5.0. The subdirectory file-discovery fix (#1543) imports
    discover_file_workdir, which no earlier release has, while the declared floor still
    named 2.4.0 -- an install against a published vcs-versioning raised ImportError
    during the build. (#1546)

vcs-versioning v2.4.1

Choose a tag to compare

@github-actions github-actions released this 16 Sep 07:36
Immutable release. Only release title and notes can be modified.
41edffe

Fixed

  • The error raised when a .jj/ directory is found but jj is not installed now names the environment variables that actually disable jj discovery (SETUPTOOLS_SCM_DISABLE_JJ=1 / VCS_VERSIONING_DISABLE_JJ=1) instead of an unprefixed DISABLE_JJ=1, which was never read. (#1537)

  • The "unable to detect version" error now names the environment variables the
    running integration actually reads. It previously suggested
    SETUPTOOLS_SCM_PRETEND_VERSION_FOR_${NORMALIZED_DIST_NAME} unconditionally,
    which is not read by vcs-versioning on its own (or by any other integrator),
    and it named setuptools-scm as the failing tool regardless of which one ran.

    When the distribution name is known the suggested variable is spelled out in
    full. When it is not, the generic variables are suggested instead, with a note
    that the per-distribution ..._FOR_<DIST> form needs a dist name to match --
    the previous message offered a ${NORMALIZED_DIST_NAME} template that could
    never be filled in. (#1539)

  • Warn when file discovery is suppressed while a VCS marker sits in the
    project directory. scm_search_known_failed() means an integrator already
    looked and found no checkout, so a .git, .hg or .jj right there
    contradicts it and the artifact is about to lose every tracked file. That
    combination was the signature of the pretend-version regression and stayed
    invisible for three releases. Parent directories are not searched, since an
    unpacked sdist inside an unrelated checkout is the case the suppression
    exists for, and roots listed in IGNORE_VCS_ROOTS are skipped. (#1540)

Miscellaneous

  • Environment variable names are now built in one place (env_var_name /
    EnvReader.candidate_names), shared by the lookup in EnvReader.read and by
    every error message that suggests a variable, so a message cannot name a
    variable the lookup would not honour.

    The "repository found in a parent directory" error no longer offers a
    get_version(relative_to=...) call to integrators that do not ship one; the
    remaining options are renumbered instead. (#1539)

setuptools-scm v10.3.3

Choose a tag to compare

@github-actions github-actions released this 16 Sep 07:36
Immutable release. Only release title and notes can be modified.
41edffe

Fixed

  • Keep file discovery working when the version is pretended.
    SETUPTOOLS_SCM_PRETEND_VERSION and its scoped _FOR_<DIST> form made
    version inference return before discovering a workdir, and the egg_info
    mixin read the absent workdir as "searched, found no checkout" -- the signal
    it acts on by suppressing the setuptools.file_finders chain. Every
    SCM-tracked file that setuptools' own package discovery does not find was
    then dropped from the sdist and the wheel, silently, since the build
    succeeded and the version was correct.

    A pretended version still skips discovery, because most builds only want a
    version and probing for a checkout nobody asks about costs subprocesses for
    nothing. What no longer happens is passing that off as an answer: "nobody
    looked yet" is now distinct from "looked and found nothing", and the workdir
    is discovered on demand the first time a consumer needs a file list.

    scm_file_list.json is now written to the egg-info for pretended builds as
    well. It describes which files the checkout tracks, which a pretended
    version says nothing about. scm_version.json stays absent there, because
    a pretended version must not be recorded as what the SCM said. (#1540)

setuptools-scm v10.3.2

Choose a tag to compare

@github-actions github-actions released this 14 Sep 20:11
Immutable release. Only release title and notes can be modified.
e218fb7

Fixed

  • Stop the command mixins from reordering a project's own build_py, egg_info
    or bdist_wheel MRO. ScmVersionFileMixin and friends inherited from the
    corresponding setuptools command, so wrapping a project class built on a disjoint
    hierarchy -- distutils.command.build_py, or the standalone wheel package's
    bdist_wheel -- placed setuptools' command ahead of the project's class.
    setuptools.build_py.run() does not delegate any further, so the project's
    run() was silently skipped, surfacing as
    error: package directory '...' does not exist. The mixins now carry no runtime
    base class and linearise to (wrapped, mixin, *project_command.__mro__). (#1531)

  • Leave a project's cmdclass alone when setuptools-scm is installed but not
    actually inferring a version. build_py, egg_info and bdist_wheel are
    now registered only once version inference has stored data on the distribution --
    the precondition for any of the mixins doing something. Previously every project
    with a pyproject.toml had its commands wrapped, including projects with no
    [tool.setuptools_scm] section at all.

    Note for projects that used to configure setuptools-scm and no longer do: a
    scm_version.json left behind in a stale *.egg-info directory is no longer
    stripped from built wheels, because the bdist_wheel mixin that strips it is no
    longer registered either. Remove the stale *.egg-info directory. (#1533)

setuptools-scm v10.3.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 17:44
Immutable release. Only release title and notes can be modified.
32ac4b1

Fixed

  • Require vcs-versioning>=2.4.0. setuptools-scm 10.3.0 declared >=2.3.2 but
    imports vcs_versioning._file_finders.scm_search_known_failed, which vcs-versioning
    only gained in 2.4.0, so installing it alongside an older vcs-versioning failed with
    ImportError. CI now installs setuptools-scm against the oldest vcs-versioning its
    metadata permits, so the lower bound can no longer go stale unnoticed. (#1528)

vcs-versioning v2.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 14:01
Immutable release. Only release title and notes can be modified.
935c5d3

Added

  • Add scm.git.distance_scope and scm.git.distance_count, restricting the distance count to the commits that touch a monorepo project (and optionally further shared directories) instead of every commit in the repository. Counting uses --full-history by default, or --first-parent; git's default history simplification is not offered because it can make the distance shrink across a merge. Git only. (#1056)

Fixed

  • Select file finders by the VCS marker their entry point is named for (.git, .hg, .jj) instead of running every backend's command in turn. A tree with no VCS marker -- an unpacked sdist, say -- now spawns no subprocess at all, so a slow hg on PATH can no longer fail an unrelated build.

    The finders also survive a subprocess timeout: subprocess.TimeoutExpired was uncaught and aborted the build, and is now treated like any other failed probe. (#1212)

  • Prefer the fallback metadata nearest the project directory. A .git_archival.txt or PKG-INFO at the VCS root no longer shadows a monorepo project's own, which silently produced the root project's version. (#1522)

setuptools-scm v10.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 14:01
Immutable release. Only release title and notes can be modified.
935c5d3

Deprecated

  • Emit a DeprecationWarning when the setuptools.file_finders entry point is invoked for a project that does not configure setuptools-scm. The entry point will be removed in a future major release. (#1407)

Fixed

  • Run the setuptools.file_finders hook inside a setuptools-scm override context. It previously resolved settings under the VCS_VERSIONING prefix only, so documented variables such as SETUPTOOLS_SCM_SUBPROCESS_TIMEOUT and SETUPTOOLS_SCM_HG_COMMAND were ignored when finding files.

    When version inference has already run and found no SCM checkout, the egg_info mixin now tells the file finders so, rather than letting walk_revctrl() re-probe every backend for a repository known to be absent. (#1212)

vcs-versioning v2.3.4

Choose a tag to compare

@github-actions github-actions released this 03 Sep 12:52
Immutable release. Only release title and notes can be modified.
886267d

Fixed

  • Ensure the vcs-versioning testsuite passes without setuptools-scm installed; the egg-info vs PKG-INFO discovery priority test moved to the setuptools-scm testsuite, which owns the egg-info entry point it needs. (#1512)