unstale

pypi / setuptools-scm

setuptools-scm

What changed in setuptools-scm 8 to 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-13.

9 breaking1 security1 deprecations11 new APIs and options7 behavior and defaults2 tooling21 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.3.0 on npm

setuptools-scm 1022 changes

Breaking changes 4

  • The required vcs-versioning version is now at least 2.5.0, avoiding an ImportError during builds when the file-discovery fix is used.

    10.3.4release notes

  • The minimum supported vcs-versioning version is now 2.4.0, preventing ImportError when setuptools-scm is installed with an older version.

    10.3.1release notes

  • vcs-versioning>=2.3.2 is now required for pkginfo workdir discovery.

    10.2.2release notes

  • Wheel .dist-info no longer includes scm_version.json or scm_file_list.json; both remain in sdists for fallback discovery.

    10.2.1release notes

Deprecations 1

  • Invoking the entry point for a project that does not configure setuptools-scm now emits a DeprecationWarning; the entry point will be removed in a future major release.

    10.3.0release notes

New APIs and options 4

  • Written into egg-info directories during egg_info to enable sdist fallback version inference when no VCS is present.

    10.1.0release notes

  • Written into egg-info directories during egg_info to enable sdist fallback version inference when no VCS is present.

    10.1.0release notes

  • Overrides the write_to_source setting.

    10.1.0release notes

  • Controls whether version files are written to the source tree; when unset, a deprecation warning advises setting it explicitly before the default changes in a future major release.

    10.1.0release notes

Behavior and default changes 2

  • Pretended-version builds now write scm_file_list.json to egg-info to describe which files the checkout tracks.

    10.3.3release notes

  • Commands are wrapped only after version inference stores data on the distribution; projects not using version inference keep their cmdclass unchanged. Stale scm_version.json files in *.egg-info are no longer stripped from built wheels.

    10.3.2release notes

Fixes and other changes 11

  • File discovery now follows the checkout independently of the versioning root, so tracked files are included in distributions for projects with a subdirectory pyproject.toml.

    10.3.4release notes

  • Pretended versions now discover the workdir on demand when a consumer needs a file list, so SCM-tracked files are not silently dropped from the sdist or wheel.

    10.3.3release notes

  • Command mixins no longer carry a runtime base class and now preserve the project's command MRO, preventing the project's run() from being silently skipped.

    10.3.2release notes

  • The file-finders hook now runs inside a setuptools-scm override context, so this documented variable is no longer ignored when finding files.

    10.3.0release notes

  • The file-finders hook now runs inside a setuptools-scm override context, so this documented variable is no longer ignored when finding files.

    10.3.0release notes

  • Python 3.8 and 3.9 support is restored, allowing projects that still support these versions to use setuptools-scm as a build dependency.

    10.2.0release notes

  • Fixes a deprecation warning leak when checking whether to write to the source.

    10.1.2release notes

  • When normalize is false, the version is wrapped in setuptools.sic() so setuptools does not re-normalize it, preserving CalVer zero-padding and other non-canonical version strings.

    10.1.0release notes

  • Calls with an explicit Configuration remain compatible; the shim wires _config and VcsEnvironment onto the workdir.

    10.1.0release notes

  • Calls with an explicit Configuration remain compatible; the shim wires _config and VcsEnvironment onto the workdir.

    10.1.0release notes

  • Non-package version files are no longer written to build_lib, preventing root-level version files from being incorrectly included in wheels.

    10.1.0release notes

setuptools-scm 919 changes

Breaking changes 1

  • Node hashes now have consistent lengths across all SCM backends.

    9.0.0release notes

Security 1

  • Environment override finding now uses better normalization and offers typo suggestions.

    9.0.0release notes

New APIs and options 5

  • The scm parameter supports nested SCM configuration.

    9.0.0release notes

  • You can configure setuptools-scm to fail when submodules are missing.

    9.0.0release notes

  • The package now includes py.typed to mark its typing information as available to type checkers.

    9.0.0release notes

  • This environment variable lets you configure which Mercurial command setuptools-scm uses.

    9.0.0release notes

  • This environment variable lets you override individual ScmVersion fields.

    9.0.0release notes

Behavior and default changes 4

  • Dirty working directory timestamps now use file modification times instead of the current time.

    9.0.0release notes

  • Tags from a release action in the GitHub UI are now accepted.

    9.0.0release notes

  • The default version file template now includes the commit id.

    9.0.0release notes

  • version_keyword can override infer_version when configuration differs.

    9.0.0release notes

Tooling 2

  • Entrypoints are selectable, enabling better extensibility.

    9.0.0release notes

  • A console_scripts entry point makes the CLI directly executable.

    9.0.0release notes

Fixes and other changes 6

  • setuptools-scm can now be enabled when it is a build requirement.

    9.0.0release notes

  • Git now uses the fallback version instead of 0.0 when no version is found.

    9.0.0release notes

  • The method now returns consistent UTC dates regardless of local timezone.

    9.0.0release notes

  • The CLI no longer infers a version when --no-version is given.

    9.0.0release notes

  • Python version build tags from the SCM version are now passed to results properly.

    9.0.0release notes

  • The error message now gives clearer guidance about SETUPTOOLS_SCM_PRETEND_VERSION_FOR_* environment variables.

    9.0.0release notes

setuptools-scm 811 changes

Breaking changes 4

  • File finders were moved to a private module, changing their import location.

    8.0.0release notes

  • Python 3.7 is no longer supported.

    8.0.0release notes

  • The setuptools integration moved to a private subpackage, changing its import location.

    8.0.0release notes

  • version_file replaces write_to for configuring version-file output.

    8.0.0release notes

New APIs and options 2

  • Custom version schemes can be used outside setup.py.

    8.0.0release notes

  • The version template receives ScmVersion as the extra template variable scm_version.

    8.0.0release notes

Behavior and default changes 1

  • The environment used by run() uses a UTF-8-enabled locale.

    8.0.0release notes

Fixes and other changes 4

  • Date-based calendar versioning handles v-prefixed tags.

    8.0.0release notes

  • Distribution names are normalized according to PEP 503 when looking for overrides.

    8.0.0release notes

  • The fallback behavior when SCM is missing was fixed.

    8.0.0release notes

  • An empty tag regex is handled.

    8.0.0release notes