forked from itemresponsewarehouse/Python-pkg
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
92 lines (83 loc) · 3.49 KB
/
Copy pathpyproject.toml
File metadata and controls
92 lines (83 loc) · 3.49 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
[build-system]
# setuptools>=77 is a floor, not a preference. The `license = "MIT"` /
# `license-files` pair below is PEP 639, which setuptools only understands from
# 77.0.0. An isolated build (`python -m build`) resolves the newest setuptools
# and is fine either way, but a NON-isolated build on an older one does not
# error -- it silently emits `Name: UNKNOWN, Version: 0.0.0`, which is what the
# stale UNKNOWN.egg-info/ in some working trees came from. That is the one
# failure mode that could put an artifact on PyPI under the wrong name.
requires = ["setuptools>=77", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "irw"
version = "0.1.4"
authors = [
{ name="Hansol Lee", email="hansol@stanford.edu" },
{ name="Ben Domingue", email="bdomingu@stanford.edu" }
]
description = "A Python package for the Item Response Warehouse (IRW)"
readme = "README.md"
requires-python = ">=3.9"
# redivis>=0.20.14 is a floor, not a preference. Every client before it fails
# with a pyarrow OSError ("Expected to be able to read N bytes for message
# body") on any Redivis table over roughly a thousand rows, which takes out
# every IRW metadata fetch and with it filter(), info() and
# list_tables(include_metadata=True). Fixed upstream in 0.20.14. See issue #5.
dependencies = [
"redivis>=0.20.14",
"pandas>=1.3.0",
"numpy>=1.20.0",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"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",
"Topic :: Scientific/Engineering",
]
license = "MIT"
license-files = ["LICEN[CS]E*"]
[project.optional-dependencies]
# The MCP SDK currently requires Python 3.10+. Keep the core package's Python
# 3.9 support and make this feature opt-in.
mcp = [
"mcp>=2.1,<3; python_version >= '3.10'",
"PyYAML>=6,<7; python_version >= '3.10'",
]
[project.scripts]
irw-mcp = "irw.mcp:main"
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]
[project.urls]
Homepage = "https://itemresponsewarehouse.org/"
Repository = "https://github.com/itemresponsewarehouse/Python-pkg"
Issues = "https://github.com/itemresponsewarehouse/Python-pkg/issues"
Changelog = "https://github.com/itemresponsewarehouse/Python-pkg/releases"
# Lint only -- there is deliberately no formatter here. A formatter reflows
# every file at once, which makes `git blame` less useful across the whole
# package and turns any in-flight branch into a conflict; the value was not
# judged worth that. See issue #33.
#
# The rule set is ruff's non-formatting default (E4/E7/E9 + F): real problems
# such as undefined names and dead imports. Style rules that would churn the
# tree are deliberately out -- E501 (line-too-long) alone flagged 126 lines
# and I001 (import sorting) 23 files. Add a rule only with the churn it costs
# in view.
[tool.ruff]
target-version = "py39"
src = ["src"]
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]
[tool.ruff.lint.per-file-ignores]
# Both files import after top-level statements on purpose: __init__.py installs
# warning filters that must be in place before the Redivis client is imported,
# and the integration tests set a module-level skipif before importing irw.
"src/irw/__init__.py" = ["E402"]
"tests/test_redivis_integration.py" = ["E402"]