-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathpyproject.toml
More file actions
140 lines (128 loc) · 3.93 KB
/
pyproject.toml
File metadata and controls
140 lines (128 loc) · 3.93 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
[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",
"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"]
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",
"databricks-sdk"
]
databricks = ["databricks-sdk"]
doc = [
"ipykernel",
"ipython<=8.12",
"nbclient",
"nbformat",
"quartodoc",
]
gcs = ["gcsfs"]
test = [
"adlfs>=2024.4.1",
"fastparquet",
"gcsfs",
"pip-tools",
"pyarrow",
"pytest==7.1.3",
"pytest-cases",
"pytest-dotenv",
"pytest-parallel",
"s3fs",
"rdata",
"databricks-sdk",
]
[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",
"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
"SIM115", # Use context managers for file opens
]
ignore = [
"E501", # Line too long
"A002", # The pins interface includes builtin names in args, e.g. hash, id, etc.
]
[tool.codespell]
skip = ["*.js"]