Skip to content

Commit

Permalink
Revert to setup.py b/c we can't have nice things
Browse files Browse the repository at this point in the history
  • Loading branch information
hynek committed Aug 6, 2022
1 parent 3acc6e4 commit bcaad11
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 116 deletions.
24 changes: 24 additions & 0 deletions MANIFEST.in
@@ -0,0 +1,24 @@
include LICENSE *.rst *.toml *.yml *.yaml *.ini CITATION.cff
graft .github

# Stubs
recursive-include src *.pyi
recursive-include src py.typed

# Tests
include tox.ini conftest.py
recursive-include tests *.py
recursive-include tests *.yml

# Documentation
include docs/Makefile docs/docutils.conf
recursive-include docs *.png
recursive-include docs *.svg
recursive-include docs *.py
recursive-include docs *.rst
prune docs/_build

# Just to keep check-manifest happy; on releases those files are gone.
# Last rule wins!
exclude changelog.d/*.rst
include changelog.d/towncrier_template.rst
114 changes: 8 additions & 106 deletions pyproject.toml
@@ -1,112 +1,15 @@
# SPDX-License-Identifier: MIT

[build-system]
requires = ["hatchling", "hatch-fancy-pypi-readme"]
build-backend = "hatchling.build"
requires = ["setuptools>=40.6.0", "wheel"]
build-backend = "setuptools.build_meta"


[project]
name = "attrs"
version = "22.2.0.dev0"
authors = [{ name = "Hynek Schlawack", email = "hs@ox.cx" }]
requires-python = ">=3.6"
description = "Classes Without Boilerplate"
keywords = ["class", "attribute", "boilerplate"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Natural Language :: English",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = ["importlib_metadata;python_version<'3.8'"]
dynamic = ["readme"]

[project.optional-dependencies]
tests_no_zope = [
# For regression test to ensure cloudpickle compat doesn't break.
'cloudpickle; python_implementation == "CPython"',
# 5.0 introduced toml; parallel was broken until 5.0.2
"coverage[toml]>=5.0.2",
"hypothesis",
"pympler",
# 4.3.0 dropped last use of `convert`
"pytest>=4.3.0",
# Since the mypy error messages keep changing, we have to keep updating this
# pin.
'mypy>=0.971; python_implementation == "CPython"',
'pytest-mypy-plugins; python_implementation == "CPython"',
]
tests = ["attrs[tests_no_zope]", "zope.interface"]
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
dev = ["attrs[tests,docs]", "pre-commit"]

[project.urls]
Documentation = "https://www.attrs.org/"
Changelog = "https://www.attrs.org/en/stable/changelog.html"
"Bug Tracker" = "https://github.com/python-attrs/attrs/issues"
"Source Code" = "https://github.com/python-attrs/attrs"
Funding = "https://github.com/sponsors/hynek"
Tidelift = "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi"
Ko-fi = "https://ko-fi.com/the_hynek"


[tool.hatch.build.targets.wheel]
packages = ["src/attr", "src/attrs"]


[tool.hatch.metadata.hooks.fancy-pypi-readme]
content-type = "text/x-rst"

[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
text = """
.. image:: https://www.attrs.org/en/stable/_static/attrs_logo.png
:alt: attrs logo
:align: center
"""

[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
path = "README.rst"
start-after = ".. teaser-begin"

[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
text = """
Release Information
===================
"""

[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
path = "CHANGELOG.rst"
pattern = ".. towncrier release notes start\n\n(.*?)\n----\n"

[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
text = """
`Full changelog <https://www.structlog.org/en/stable/changelog.html>`_
"""


[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
path = "AUTHORS.rst"

[tool.pytest.ini_options]
addopts = ["-ra", "--strict-markers", "--strict-config"]
xfail_strict = true
testpaths = "tests"
filterwarnings = ["once::Warning", "ignore:::pympler[.*]"]

[tool.coverage.run]
parallel = true
Expand Down Expand Up @@ -145,8 +48,7 @@ profile = "attrs"


[tool.towncrier]
package = "attr"
package_dir = "src"
name = "attrs"
filename = "CHANGELOG.rst"
template = "changelog.d/towncrier_template.rst"
issue_format = "`#{issue} <https://github.com/python-attrs/attrs/issues/{issue}>`_"
Expand Down
127 changes: 127 additions & 0 deletions setup.py
@@ -0,0 +1,127 @@
# SPDX-License-Identifier: MIT

import codecs
import os
import re

from setuptools import find_packages, setup


###############################################################################

NAME = "attrs"
URL = "https://www.attrs.org/"
PACKAGES = find_packages(where="src")
KEYWORDS = ["class", "attribute", "boilerplate"]
PROJECT_URLS = {
"Documentation": "https://www.attrs.org/",
"Changelog": "https://www.attrs.org/en/stable/changelog.html",
"Bug Tracker": "https://github.com/python-attrs/attrs/issues",
"Source Code": "https://github.com/python-attrs/attrs",
"Funding": "https://github.com/sponsors/hynek",
"Tidelift": "https://tidelift.com/subscription/pkg/pypi-attrs?"
"utm_source=pypi-attrs&utm_medium=pypi",
"Ko-fi": "https://ko-fi.com/the_hynek",
}
CLASSIFIERS = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Natural Language :: English",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Libraries :: Python Modules",
]
INSTALL_REQUIRES = ["importlib_metadata;python_version<'3.8'"]
EXTRAS_REQUIRE = {
"docs": ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"],
"tests_no_zope": [
# For regression test to ensure cloudpickle compat doesn't break.
'cloudpickle; python_implementation == "CPython"',
# 5.0 introduced toml; parallel was broken until 5.0.2
"coverage[toml]>=5.0.2",
"hypothesis",
"pympler",
# 4.3.0 dropped last use of `convert`
"pytest>=4.3.0",
# Since the mypy error messages keep changing, we have to keep updating
# this pin.
"mypy>=0.971; python_implementation == 'CPython'",
"pytest-mypy-plugins; python_implementation == 'CPython'",
],
"tests": [
"attrs[tests_no_zope]",
"zope.interface",
],
"dev": ["attrs[docs,tests]", "pre-commit"],
}

###############################################################################

HERE = os.path.abspath(os.path.dirname(__file__))


def read(*parts):
"""
Build an absolute path from *parts* and return the contents of the
resulting file. Assume UTF-8 encoding.
"""
with codecs.open(os.path.join(HERE, *parts), "rb", "utf-8") as f:
return f.read()


LOGO = """
.. image:: https://www.attrs.org/en/stable/_static/attrs_logo.png
:alt: attrs logo
:align: center
"""

LONG = (
LOGO
+ read("README.rst").split(".. teaser-begin")[1]
+ "\n\n"
+ "Release Information\n"
+ "===================\n\n"
+ re.search(
r"(\d+.\d.\d \(.*?\)\r?\n.*?)\r?\n\r?\n\r?\n----\r?\n\r?\n\r?\n",
read("CHANGELOG.rst"),
re.S,
).group(1)
+ "\n\n`Full changelog "
+ f"<{URL}en/stable/changelog.html>`_.\n\n"
+ read("AUTHORS.rst")
)


if __name__ == "__main__":
setup(
name=NAME,
description="Classes Without Boilerplate",
license="MIT",
url=URL,
project_urls=PROJECT_URLS,
version="22.2.0.dev0",
author="Hynek Schlawack",
author_email="hs@ox.cx",
keywords=KEYWORDS,
long_description=LONG,
long_description_content_type="text/x-rst",
packages=PACKAGES,
package_dir={"": "src"},
python_requires=">=3.6",
zip_safe=False,
classifiers=CLASSIFIERS,
install_requires=INSTALL_REQUIRES,
extras_require=EXTRAS_REQUIRE,
include_package_data=True,
options={"bdist_wheel": {"universal": "1"}},
)
11 changes: 1 addition & 10 deletions tox.ini
@@ -1,12 +1,3 @@
[pytest]
addopts = -ra
testpaths = tests
xfail_strict = true
filterwarnings =
once::Warning
ignore:::pympler[.*]


# Keep docs in sync with docs env and .readthedocs.yml.
[gh-actions]
python =
Expand Down Expand Up @@ -97,7 +88,7 @@ commands =
basepython = python3.8
deps = towncrier
skip_install = true
commands = towncrier build --name attrs --version in-dev --draft
commands = towncrier build --version UNRELEASED --draft


[testenv:typing]
Expand Down

0 comments on commit bcaad11

Please sign in to comment.