-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathpyproject.toml
More file actions
143 lines (131 loc) · 4.17 KB
/
pyproject.toml
File metadata and controls
143 lines (131 loc) · 4.17 KB
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
139
140
141
142
143
[project]
name = "pins"
description = "Publish data sets, models, and other python objects, making it easy to share them across projects and with your colleagues."
readme.content-type = "text/markdown"
readme.file = "README.md"
urls.Documentation = "https://rstudio.github.io/pins-python"
urls.Homepage = "https://github.com/rstudio/pins-python"
authors = [{ name = "Michael Chow", email = "michael.chow@posit.co" }]
maintainers = [{ name = "Isabel Zimmerman", email = "isabel.zimmerman@posit.co" }]
keywords = ["data", "tidyverse"]
classifiers = [
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"License :: OSI Approved :: MIT License",
]
requires-python = ">=3.9"
dynamic = ["version"]
dependencies = [
"appdirs<2", # Using appdirs rather than platformdirs is deliberate, see https://github.com/rstudio/pins-python/pull/239
"fsspec>=2022.2,<2025.9",
"humanize>=1",
"importlib-metadata>=4.4",
"importlib-resources>=1.3",
"jinja2>=2.10",
"joblib>=0.12",
"pandas>=0.23",
"pyyaml>=3.13",
"requests",
"xxhash>=1",
"databackend>=0.0.3",
"typing_extensions"
]
[project.optional-dependencies]
aws = ["s3fs"]
azure = ["adlfs>=2024.4.1"]
check = [
"pre-commit",
"pyright==1.1.372", # Pinned; manually sync with .github/workflows/code-checks.yml
"ruff==0.5.4", # Pinned; manually sync with pre-commit-config.yaml
"types-appdirs",
"pins[databricks]"
]
databricks = ["databricks-sdk"]
doc = [
"ipykernel",
"ipython<=8.12",
"nbclient",
"nbformat",
"quartodoc",
]
gcs = ["gcsfs"]
test = [
"pins[azure]",
"pins[gcs]",
"pins[databricks]",
"pins[aws]",
"fastparquet",
"pip-tools",
"pyarrow",
"pytest==7.1.3",
"pytest-cases",
"pytest-dotenv",
"pytest-parallel",
"rdata",
]
[build-system]
requires = ["setuptools>=45", "setuptools-scm>=6.2", "wheel"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
include-package-data = true
[tool.setuptools.packages]
find = { namespaces = false }
[tool.setuptools_scm]
[tool.distutils.bdist_wheel]
universal = 1
[tool.pytest.ini_options]
markers = [
"fs_file: mark test to only run on local filesystem",
# NOTE: if you add a new marker here for a backend that requires credentials,
# be sure to exclude it from the test command in .github/workflows/ci.yml
# in the "test-fork" job, to avoid failing tests where GitHub Actions
# secrets aren't available.
"fs_s3: mark test to only run on AWS S3 bucket filesystem",
"fs_gcs: mark test to only run on Google Cloud Storage bucket filesystem",
"fs_abfs: mark test to only run on Azure Datalake filesystem",
"fs_rsc: mark test to only run on Posit Connect filesystem",
"fs_dbc: mark test to only run on Databricks Volume filesystem",
"skip_on_github: skip this test if running on GitHub",
]
testpaths = ["pins"]
addopts = "--doctest-modules"
doctest_optionflags = "NORMALIZE_WHITESPACE"
[tool.pyright]
include = ["pins"]
exclude = ["**/__pycache__"]
ignore = ["pins/tests"]
pythonVersion = "3.12" # Use the maximum version supported by python-pins
pythonPlatform = "Linux"
# Tracking compliance with these rules at https://github.com/rstudio/pins-python/issues/272
reportArgumentType = false
reportAttributeAccessIssue = false
reportCallIssue = false
reportIncompatibleMethodOverride = false
reportMissingTypeStubs = false
reportOptionalMemberAccess = false
reportOptionalSubscript = false
reportPossiblyUnboundVariable = false
reportReturnType = false
[tool.ruff]
line-length = 90
extend-exclude = ["docs"]
[tool.ruff.lint]
select = [
"E", # Style
"F", # Errors
"FA", # Use from __future__ import annotations for cleaner type hints
"I", # Import sorting
"UP", # Upgrade to latest supported Python syntax
"W", # Style
"A", # Don't shadow built-ins
]
ignore = [
"E501", # Line too long
"A002", # The pins interface includes builtin names in args, e.g. hash, id, etc.
]
[tool.codespell]
skip = ["*.js"]