1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
[build-system]
requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
package-dir = { "" = "src" }
[tool.setuptools_scm]
# Make sure setuptools uses version of last created tag - this allows us to specify bump
version_scheme = "post-release"
# Make sure scm doesn't use local scheme version for push to pypi
# (so there isn't a + in the version)
local_scheme = "no-local-version"
write_to = "src/stravalib/_version_generated.py"
write_to_template = '__version__ = "v{version}"'
[tool.setuptools.package-data]
"stravalib" = ["py.typed"]
[project]
name = "stravalib"
description = "A Python package that makes it easy to access and download data from the Strava V3 REST API."
keywords = ["strava", "running", "cycling", "athletes"]
readme = "README.md"
dynamic = ["version"]
license = { text = "Apache 2.0 License" }
authors = [{ name = "Hans Lellelid", email = "hans@xmpl.org" }]
maintainers = [
{ name = "Leah Wasser" },
{ name = "Hans Lellelid" },
{ name = "Jonatan Samoocha" },
{ name = "Yihong" },
{ name = "Émile Nadeau" },
]
requires-python = ">=3.10"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"Intended Audience :: Science/Research",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Topic :: Scientific/Engineering",
"Topic :: Software Development :: Libraries",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = ["pint", "pytz", "arrow", "requests", "pydantic>=2.0"]
[project.urls]
documentation = "https://stravalib.readthedocs.io"
repository = "https://github.com/stravalib/stravalib"
changelog = "https://github.com/stravalib/stravalib/blob/main/changelog.md"
[project.optional-dependencies]
build = ["build"]
tests = [
"pytest",
"pytest-cov",
# Run tests in parallel
"pytest-xdist",
"responses",
"pytest-mock"
]
docs = [
"sphinx",
"pydata-sphinx-theme",
"autodoc_pydantic",
"sphinx_remove_toctrees",
"myst-nb",
"sphinx-autobuild",
"sphinx-inline-tabs",
"sphinx_copybutton",
"sphinx_design",
"sphinxext-opengraph",
# Needed for sphinx open graph
"matplotlib",
"sphinxcontrib-mermaid",
]
lint = [
"pre-commit",
"mypy",
"types-requests",
"types-pytz",
"types-Flask",
"ruff"
]
[tool.black]
line-length = 79
# When editing the config for black in this file, be sure to make
# the same edits in the repo stravalib/strava_swagger2pydantic
[tool.isort]
profile = "black"
[tool.pytest.ini_options]
filterwarnings = [
"ignore::FutureWarning:stravalib.*",
"ignore::DeprecationWarning:stravalib.*",
]
[tool.mypy]
python_version = "3.10"
follow_imports = "silent"
warn_redundant_casts = true
warn_unused_ignores = true
disallow_any_generics = true
check_untyped_defs = true
no_implicit_reexport = true
warn_unreachable = true
disallow_untyped_defs = true
files = ["src/stravalib/"]
plugins = ["pydantic.mypy"]
exclude = ["src/stravalib/tests/"]
[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = true
warn_required_dynamic_aliases = false
warn_untyped_fields = true
[tool.codespell]
skip = './docs/_build, ./build, ./src/stravalib/tests/resources'
[tool.ruff]
lint.select = [
"F", # pyflakes
"I", # isort
]
lint.ignore = ["F841"]
line-length = 79
|