view pyproject.toml @ 53228:4a2b57c6554e

pycompat: drop support for Python 3.8 (BC) This Python version is EOL since 2024-10-07. It is time to drop it.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 02 Apr 2025 22:13:27 +0200
parents d91e8c216134
children 5392f4fd6764
line wrap: on
line source

[build-system]
requires = [
    "wheel",
    "setuptools>=64",
    "setuptools-scm>=8.1.0",
    ]
build-backend = "setuptools.build_meta"


[project]
name = "mercurial"
authors = [
    {name = "Olivia Mackall and many others", email = "[email protected]"},
]
description="Fast scalable distributed SCM (revision control, version control) system"
readme = "README.rst"
requires-python = ">=3.9"
license={text = "GNU GPLv2 or any later version"}
classifiers=[
    "Development Status :: 6 - Mature",
    "Environment :: Console",
    "Intended Audience :: Developers",
    "Intended Audience :: System Administrators",
    "License :: OSI Approved :: GNU General Public License (GPL)",
    "Natural Language :: Danish",
    "Natural Language :: English",
    "Natural Language :: German",
    "Natural Language :: Italian",
    "Natural Language :: Japanese",
    "Natural Language :: Portuguese (Brazilian)",
    "Operating System :: Microsoft :: Windows",
    "Operating System :: OS Independent",
    "Operating System :: POSIX",
    "Programming Language :: C",
    "Programming Language :: Python",
    "Topic :: Software Development :: Version Control",
]
dynamic = ["version"]

[project.urls]
home = "https://mercurial-scm.org/"
download_url = "https://mercurial-scm.org/release/"


[tool.setuptools]
# no automatic include
include-package-data = false


[tool.black]
line-length = 80
include = '\.py$'
extend-exclude = '''
build/
| wheelhouse/
| dist/
| packages/
| __pycache__/
| \.pytype/
| \.hg/
| \.mypy_cache/
| \.venv/
| mercurial/locale/
| mercurial/thirdparty/
'''
required-version = "23"
skip-string-normalization = true
quiet = true


[tool.cibuildwheel]
build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"]

# Don't stockpile wheels in the pip cache directory when they get built, since
# there's no mechanism to age old ones out.
build-frontend = { name = "pip", args = ["--no-cache-dir"] }

# Build translations; requires msgfmt.exe on PATH.
environment = { MERCURIAL_SETUP_FORCE_TRANSLATIONS="1" }

# Prevent building pypy wheels, which is broken.
skip = "pp*"

# Tests are run separately, but some values like "*-win_arm64" avoid a warning
# on amd64 Windows about not being able to test without an arm64 runner.  That's
# likely to be an issue elsewhere too, like testing amd64 on an arm64 mac.
test-skip = "*"


[tool.cibuildwheel.macos]
# See https://cibuildwheel.pypa.io/en/stable/faq/#what-to-provide for reasons
# to also build "x86_64".  Further discussion here:
#    https://github.com/pypa/cibuildwheel/issues/1333
#    https://github.com/python-cffi/cffi/issues/133
#  
# NOTE: this is overridden in heptapod-ci.yml because the current CI system
# doesn't support arm64 builds.
archs = ["universal2"]


[[tool.cibuildwheel.overrides]]
select = "*-macosx_*"

# The minimum value is adjusted automatically when building for later Pythons
#
# Python Version           Minimum macOS
# --------------------------------------
# Intel CPython 3.6-3.11   10.9
# Intel CPython 3.12+      10.13
# AS    CPython or PyPy    11
inherit.environment = "append"
environment = { MACOSX_DEPLOYMENT_TARGET="10.9" }


[tool.cibuildwheel.windows]
archs = ["x86", "AMD64", "ARM64"]


[tool.setuptools_scm]
version_file = "mercurial/__version__.py"

# this use `<last-tag>.post1.dev<distance>
#
# To restore the format introduced for 6.9 nightly build we would need to be
# able to customise the `post1` section to avoid flip-flopping update between
# unrelated branches. It would need to be changed to:
# - post0: for the "stable" branch
# - post1: for the "default" branch
# - post2: for any other branch
version_scheme = "no-guess-dev"

# The "node-and-timestamp" option seems better but we cannot use it as it make
# `pip install` freaks out with the following warning resulting in an error in
# the end::
#
#   WARNING: Built wheel for mercurial is invalid: Wheel has unexpected file name: expected 'x.y.z.post1.devXXX+hdeadbeef.d20250218231130', got 'x.y.z.post1.devXXX+hdeadbeef.d20250218231133'
#   Failed to build mercurial
#   ERROR: Failed to build installable wheels for some pyproject.toml based projects (mercurial)
local_scheme = "node-and-date"