Test with py3.14, publish sdist with py3.13
Removed commands:
entrypoints,cleanallRemoved post-version-bump hook support (unused, unnecessary, and was not well documented)
Removed old
registerhook used with setuptools v50Removed support for pygradle-style versioning
Internal project modernizations:
- Refactored usage of
subprocess.run(), removed last left overs from the py2 days - use
uv,ruff, enabled more linter rules, etc
- Refactored usage of
Use coveralls for test coverage reporting
- Stopped using
pkg_resources. - Removed
--deptreeflag from redefinedcheckcommand, this way of visualizing a dependency tree is not useful anymore, please useuv pip treeor hdeps instead.
- Adapted
CheckCommandto setuptools v77.0.3 - Dropped support for Python 3.6
- Use
--no-verifywithgit commitwhen bumping a version, to support projects with ano-commit-to-branchhook (OK to commit version bump to branch, but not other changes)
- Support setuptools 68.2+
- Better support for PEP-517, extract
Requires-Dist:fromPKG-INFOifrequires.txtis missing .eggfiles are not published anymore, see https://blog.pypi.org/posts/2023-06-26-deprecate-egg-uploads/
- Removed support for py2
- Look for
v*.*git tags first, then*.* - Ignore git tags that do not pass regex
^v?[0-9]+\.[0-9]+, default to0.0.0in that case, and issue a WARNING
Allow to configure format of git version tag via the advanced dict-form of
versioning, example:versioning={ "main": "{major}.{minor}.{distance}", "extra": "{dirty}", "branches": "main", "version_tag": "v*.*", },
- Protect against hook setup call in ancient setuptools versions
- Test with 3.10, publish sdist with 3.9
- Do not auto-fill
tests_requireany more, it is deprecated, see https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#optional-dependencies
- Do not abstract
requirements.infiles any more, use them as-is (since they're intended to be a spec for pip-compile) - Next minor version of setupmeta will not auto-fill
tests_requireany more.
- Don't try and modify any git url from
requirements.txt, it is too much of a moving target and the whole thing is debated: pypa/pip#5898 - Do not auto-fill any
dependency_linksat all
- Yield PEP-440 compliant versions
- Versions yielded by
setupmeta3.0 will differ from pre-3.0 versions:- Character
"+"is used exclusively to demarcate the local part of the version - Character
"."is used exclusively to demarcate local segments (this is not configurable yet, and won't be unless by popular request) - The "main" part remains intact, except for
devcommit, furthermore only known PEP-440 "main version part" bits can ever be in the main part (anything that is mistakenly specified to be in the main part gets automatically shifted to the local part) - "local" part is always shown now, no need to use
"!"character (now deprecated), except for{devcommit}and{dirty}markers, which will not lead to a local part being shown when exactly on git tag. - See [pep-440.rst](./docs/pep-440.rst) for more details
- Character
- Don't auto-complete
classifiersfromclassifiers.txtany more, the added value of that is negligible (and potentially confusing)
- Don't warn when bumping for the first time (with no git tags yet)
- Use the most common
setuptools.find_packages()call (without arguments) - Moved repo to https://github.com/codrsquad
- Respect
requirements.inwhen present
- Explicitly state
python_requiresinsetup.pyto satisfy conda-forge linter - Bundled tests in sdist, to allow for users wanting to rerun the tests to be able to do so from sdist
- Using https://pypi.org/project/check-manifest/
- Removed commands
twineanduber_egg, turns out they're not useful
- Corrected egg publication for python 2.7
- Publish egg for python 3.9, not publishing for 3.5 any more
- Corrected support for inlined versions (
__version__ = "..."in user's code) - Stop using deprecated
impmodule with python3 - Moved to github actions
- Corrected edge case to support git submodules
- Verify that HEAD is up-to-date when bumping (#57)
- Further refine hooks (#56)
- Add legacy hook to ease transition in rare cases.
- Ensure our dist finalization runs first.
- Simplify hooks, and fix preprocessing not triggering when not already installed in environment. (#54)
- Auto-populate requirements attrs using
@<filepath>syntax. (#53)
- Always ensure a number is added to version parts such as
rc, as per PEP-440
- Don't issue warnings related to versioning on fresh new (still empty) repos
- Don't do full auto-fill when invoked with
--name - Added tests, do not try to follow relative paths in
requirements.txt(pip doesn't accept them anyway)
- Avoid infinite recursion with
setup.py --name
- Report package name in
setup_requireswhen possible, for local projects referred to via-e /some/folderin a requirements file
- Corrected auto-abstract for non-standard version pins such as
foo==1.0-rc1+local-part - Added more debug tracing to help troubleshoot future issues (
SETUPMETA_DEBUG=1 setup.py ...) - Warn if no
packagesorpy_modulesare defined (empty package)
- Added support for nested requirements:
-r foo.txtwill be now followed
- Corrected bug: parsing
PKG-INFOfiles properly
- Added
requirements_from_text()andrequirements_from_file() - Use a regex to determine simple pins of the form
foo==1.0 - Consistently apply auto-abstraction to
tests_requireas well - Internally use consistent names for
install_requires,tests_requireandextras_require
- Do not use
pipanymore to parserequirements.txt(#49)
- Added command
uber_egg, to support creating spark-like "uber eggs"
- Corrected warning when hardcoded version found does not match git tag
- Auto-fill
include_package_datawhenMANIFEST.inis present
- Try and import latest pip first
- Adapted
get_pip()call to pip 20.0 API change - Removed support for python 3.4 (not accepted by pypi anymore)
- Corrected handling of version tags such as
v0.1.9-rc.1
- Corrected
packagesauto-fill for projects using a direct layout - Fix version pinning when
setup_requiresis a list
- Support project layout similar to pytest's
- Warn when
git describeexits with code != 0 - Corrected tests for Windows
- Removed auto-added
License :: OSI Approvedclassifier - Corrected
check --deptreeedge cases - RFC: include distance with "{devcommit}"
- Correctly mock absence of twine in tests
- Bug fix: Correctly initialize .links field in
model.py - version: git: use --first-parent with git-describe
- Let pip expand req files when not abstracting
- Allow to override git describe command via env var GIT_DESCRIBE_COMMAND (just in case)
- Fixed incorrect tag mismatch warning with
postversioning strategy - Publish .egg for python 3.4 and 3.8
- Ignore unparseable
requirements.txt - Changed default dirty marker to
.dirty(instead of+{commitid})
- Run only if explicitly required via
setup_requires=["setupmeta"] - Properly handle package name (possible dashes) vs top-level module name (no dashes)
- Verify that all remote tags are present locally before allowing version bump
- Show top level deps in
check --deptree's "other" section - Added
check --deptree, to show dependency tree of package
- Report version as dirty if there staged (but uncommitted changes)
- Show pending changes (if there are any) in
setup.py checkcommand - Added a test exercising
pip wheelto expose recentdirtydetermination issue - Rolled back
dirtycheckout determination, repo with staged files is considered clean again, will have to find another fix for that edge case - Push version bumps only when
--pushis explicitly specified
- Always listify
setup_requires - Better warnings message, should show proper origination
- Corrected
dirtydetermination: repo with staged files is considered dirty until effective commit - Extract all relevant info from
PKG-INFO(not just version) - Auto-fill
bugtrack_url - Added support for version determination from PKG-INFO
- Added
version --show-next - Added
{devcommit}versioning strategy token - Added
--expandto commandexplain - Better handling of unicode in
README-s andsetup.py-s - Fixed setupmeta's own download_url
- Show how many requirements were abstracted/skipped (if any) in
setup.py check - Warn if current version tag mention patch while versioning strategy doesn't
- Make sure local tags match remote before pushing a new bumped version tag
- Auto-fill dependencies accordingly to recommendations in https://packaging.python.org/discussions/install-requires-vs-requirements/
- Added support for
.devversioning - Added
--dependenciestoexplaincommand
- Auto-fill long_description_content_type when applicable
- Test against python 3.7, dropped support for 3.4 as it's not available on travis Xenial
- Don't pass redundant
bumpcli arg to bump hook
- Accept git version tags of the form
M.m.p(don't require git tags to start with avprefix) - Support pip 10.0
- Use
g0000000as commit-id instead ofinitialwhen no commit took place yet - Hook earlier, into
parse_command_lineinstead ofget_option_dictin order forsetup.py --version(and similar) to work - Added pre-defined versioning strategy
post - Renamed pre-defined versioning strategies, to better convey their intent:
changes->distanceandtag->post
- Env var
SCM_DESCRIBEused if available and no SCM checkout folder (like.git) detected - Better support cases where project is in a subfolder of a git checkout
- Don't consider lack of version tag as dirty checkout (it's confusing otherwise)
- Parse correctly complex requirements.txt files
- Support setup.py in a subfolder of a git checkout
- Renamed command
bumptoversion, optional bump hook in./hooks/bump - Added commands: 'twine', 'cleanall'
- Added
explain --recommend - Added pre-defined versioning strategy
build-id - Test coverage at 100%, added debug info via env var
SETUPMETA_DEBUG=1
- Versioning is more easily customizable, using post-release marker by default (instead of beta)
- Better defined versioning strategies
- Fully using setupmeta's own versioning scheme (no more "backup" version stated in
__init__.py) - Versioning compatible with PEP-440
- Using
versioningon setupmeta, which can now bump itself - Added support for
versioningkey in setup.py, setupmeta can now compute version from git tags, and bump that version - Removed support for Pipfile
- Testing with pypy as well, produce eggs for 2.7, 3.4, 3.5, 3.6
- Always listify
keywords - Auto-publishing via travis, publish wheels as well
- Look only at 1st paragraph of docstring for key/value definitions
- Auto-determine most common license, and associated classifier string
- Should work with any version of setuptools now, via
setup_requires='setupmeta' - Removed old way, no more "drop setupmeta.py next to your setup.py" mode
- Fixed bootstrap, so that
PKG-INFOgets the right metadata (bootstrapping in 2 passes) - Use 1st line of README file as short description if no docstrings are found, accept description in project docstrings (not only setup.py)
- Allow to use portion of README via
.. [[end long_description]] - Allow to use include other files in long description via something like
.. [[include HISTORY.rst]]