csrlite 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ # Include important files
2
+ include README.md
3
+ include pyproject.toml
4
+
5
+ # Include source code
6
+ recursive-include src *.py *.yaml *.yml
7
+
8
+ # Exclude everything else
9
+ global-exclude *.pyc
10
+ global-exclude *.pyo
11
+ global-exclude *.pyd
12
+ global-exclude __pycache__
13
+ global-exclude .DS_Store
14
+
15
+ # Exclude development, testing, and documentation files
16
+ prune tests
17
+ prune docs
18
+ prune data
19
+ prune studies
20
+ prune .github
21
+ exclude .gitignore
22
+ exclude .pyre_configuration
23
+ exclude _quarto.yml
24
+ exclude custom.scss
25
+ exclude index.qmd
26
+ exclude agents.md
27
+ exclude CLAUDE.md
28
+ exclude requirements.txt
29
+ exclude uv.lock
csrlite-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,68 @@
1
+ Metadata-Version: 2.4
2
+ Name: csrlite
3
+ Version: 0.1.0
4
+ Summary: A hierarchical YAML-based framework for generating Tables, Listings, and Figures in clinical trials
5
+ Author-email: Clinical Biostatistics Team <biostat@example.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/elong0527/csrlite
8
+ Project-URL: Documentation, https://elong0527.github.io/csrlite
9
+ Project-URL: Repository, https://github.com/elong0527/csrlite.git
10
+ Project-URL: Bug Tracker, https://github.com/elong0527/csrlite/issues
11
+ Keywords: clinical-trials,biostatistics,yaml,tlf,tables,listings,figures
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ Requires-Dist: pydantic>=2.0.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: polars>=0.20.0
24
+ Requires-Dist: rtflite>=2.1.1
25
+ Provides-Extra: rtf
26
+ Requires-Dist: rtflite; extra == "rtf"
27
+ Provides-Extra: plotting
28
+ Requires-Dist: matplotlib>=3.5.0; extra == "plotting"
29
+ Requires-Dist: plotly>=5.0.0; extra == "plotting"
30
+ Provides-Extra: dev
31
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
32
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
33
+ Requires-Dist: black>=22.0.0; extra == "dev"
34
+ Requires-Dist: isort>=5.0.0; extra == "dev"
35
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
36
+ Requires-Dist: pytest>=9.0.1; extra == "dev"
37
+ Requires-Dist: jupyter>=1.1.1; extra == "dev"
38
+ Requires-Dist: jupyter-cache>=1.0.1; extra == "dev"
39
+ Requires-Dist: nbformat>=5.10.4; extra == "dev"
40
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
41
+ Requires-Dist: pyre-check>=0.9.18; extra == "dev"
42
+ Provides-Extra: all
43
+ Requires-Dist: rtflite; extra == "all"
44
+ Requires-Dist: matplotlib>=3.5.0; extra == "all"
45
+ Requires-Dist: plotly>=5.0.0; extra == "all"
46
+
47
+ # csrlite
48
+
49
+ [![CI](https://github.com/elong0527/csrlite/actions/workflows/ci.yml/badge.svg)](https://github.com/elong0527/csrlite/actions/workflows/ci.yml)
50
+ [![codecov](https://codecov.io/gh/elong0527/csrlite/branch/main/graph/badge.svg)](https://codecov.io/gh/elong0527/csrlite)
51
+ [![PyPI version](https://badge.fury.io/py/csrlite.svg)](https://badge.fury.io/py/csrlite)
52
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
53
+
54
+ A hierarchical YAML-based framework for generating Tables, Listings, and Figures in clinical trials.
55
+
56
+ ## Installation
57
+
58
+ ```bash
59
+ pip install csrlite
60
+ ```
61
+
62
+ ## Documentation
63
+
64
+ Visit [https://elong0527.github.io/csrlite](https://elong0527.github.io/csrlite) for full documentation.
65
+
66
+ ## License
67
+
68
+ MIT License - see [LICENSE](LICENSE) file for details.
@@ -0,0 +1,22 @@
1
+ # csrlite
2
+
3
+ [![CI](https://github.com/elong0527/csrlite/actions/workflows/ci.yml/badge.svg)](https://github.com/elong0527/csrlite/actions/workflows/ci.yml)
4
+ [![codecov](https://codecov.io/gh/elong0527/csrlite/branch/main/graph/badge.svg)](https://codecov.io/gh/elong0527/csrlite)
5
+ [![PyPI version](https://badge.fury.io/py/csrlite.svg)](https://badge.fury.io/py/csrlite)
6
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
7
+
8
+ A hierarchical YAML-based framework for generating Tables, Listings, and Figures in clinical trials.
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ pip install csrlite
14
+ ```
15
+
16
+ ## Documentation
17
+
18
+ Visit [https://elong0527.github.io/csrlite](https://elong0527.github.io/csrlite) for full documentation.
19
+
20
+ ## License
21
+
22
+ MIT License - see [LICENSE](LICENSE) file for details.
@@ -0,0 +1,155 @@
1
+ [build-system]
2
+ requires = ["setuptools>=45", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "csrlite"
7
+ version = "0.1.0"
8
+ description = "A hierarchical YAML-based framework for generating Tables, Listings, and Figures in clinical trials"
9
+ authors = [{name = "Clinical Biostatistics Team", email = "biostat@example.com"}]
10
+ license = {text = "MIT"}
11
+ readme = "README.md"
12
+ requires-python = ">=3.10"
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Intended Audience :: Science/Research",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
21
+ ]
22
+ keywords = ["clinical-trials", "biostatistics", "yaml", "tlf", "tables", "listings", "figures"]
23
+
24
+ dependencies = [
25
+ "pydantic>=2.0.0",
26
+ "pyyaml>=6.0",
27
+ "polars>=0.20.0",
28
+ "rtflite>=2.1.1",
29
+ ]
30
+
31
+ [project.optional-dependencies]
32
+ rtf = ["rtflite"]
33
+ plotting = ["matplotlib>=3.5.0", "plotly>=5.0.0"]
34
+ dev = [
35
+ "pytest>=7.0.0",
36
+ "pytest-cov>=4.0.0",
37
+ "black>=22.0.0",
38
+ "isort>=5.0.0",
39
+ "mypy>=1.0.0",
40
+ "pytest>=9.0.1",
41
+ "jupyter>=1.1.1",
42
+ "jupyter-cache>=1.0.1",
43
+ "nbformat>=5.10.4",
44
+ "ruff>=0.1.0",
45
+ "pyre-check>=0.9.18",
46
+ ]
47
+ all = ["rtflite", "matplotlib>=3.5.0", "plotly>=5.0.0"]
48
+
49
+ [project.urls]
50
+ Homepage = "https://github.com/elong0527/csrlite"
51
+ Documentation = "https://elong0527.github.io/csrlite"
52
+ Repository = "https://github.com/elong0527/csrlite.git"
53
+ "Bug Tracker" = "https://github.com/elong0527/csrlite/issues"
54
+
55
+ [tool.setuptools.packages.find]
56
+ where = ["src"]
57
+
58
+ [tool.setuptools.package-data]
59
+ csrlite = ["*.yaml", "*.yml"]
60
+
61
+ [tool.pytest.ini_options]
62
+ testpaths = ["tests"]
63
+ python_files = ["test_*.py"]
64
+ python_classes = ["Test*"]
65
+ python_functions = ["test_*"]
66
+ addopts = [
67
+ "--strict-markers",
68
+ "--strict-config",
69
+ "--verbose",
70
+ ]
71
+ markers = [
72
+ "slow: marks tests as slow (deselect with '-m \"not slow\"')",
73
+ "integration: marks tests as integration tests",
74
+ ]
75
+
76
+ [tool.coverage.run]
77
+ source = ["src/csrlite"]
78
+ branch = true
79
+
80
+ [tool.coverage.report]
81
+ exclude_lines = [
82
+ "pragma: no cover",
83
+ "def __repr__",
84
+ "raise AssertionError",
85
+ "raise NotImplementedError",
86
+ ]
87
+
88
+ [tool.black]
89
+ line-length = 100
90
+ target-version = ['py38']
91
+ include = '\.pyi?$'
92
+ extend-exclude = '''
93
+ /(
94
+ # directories
95
+ \.eggs
96
+ | \.git
97
+ | \.hg
98
+ | \.mypy_cache
99
+ | \.tox
100
+ | \.venv
101
+ | build
102
+ | dist
103
+ )/
104
+ '''
105
+
106
+ [tool.isort]
107
+ profile = "black"
108
+ line_length = 100
109
+ known_first_party = ["csrlite"]
110
+
111
+ [tool.mypy]
112
+ python_version = "3.10"
113
+ warn_return_any = true
114
+ warn_unused_configs = true
115
+ disallow_untyped_defs = true
116
+ disallow_incomplete_defs = true
117
+ check_untyped_defs = true
118
+ disallow_untyped_decorators = true
119
+ no_implicit_optional = true
120
+ warn_redundant_casts = true
121
+ warn_unused_ignores = true
122
+ warn_no_return = true
123
+ warn_unreachable = true
124
+ strict_equality = true
125
+ exclude = ["build/", "tests/"]
126
+
127
+ [[tool.mypy.overrides]]
128
+ module = [
129
+ "polars.*",
130
+ "yaml.*",
131
+ "rtflite.*",
132
+ "matplotlib.*",
133
+ "plotly.*",
134
+ ]
135
+ ignore_missing_imports = true
136
+
137
+ [[tool.mypy.overrides]]
138
+ module = ["tests.*"]
139
+ ignore_errors = true
140
+
141
+ [tool.ruff]
142
+ line-length = 100
143
+ target-version = "py310"
144
+
145
+ [tool.ruff.lint]
146
+ select = ["E", "F", "I"]
147
+ ignore = []
148
+
149
+ [dependency-groups]
150
+ dev = [
151
+ "jupyter>=1.1.1",
152
+ "jupyter-cache>=1.0.1",
153
+ "nbclient>=0.10.2",
154
+ "notebook>=7.5.0",
155
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,50 @@
1
+ from .ae.ae_listing import (
2
+ # AE listing functions
3
+ ae_listing,
4
+ study_plan_to_ae_listing,
5
+ )
6
+ from .ae.ae_specific import (
7
+ # AE specific functions
8
+ ae_specific,
9
+ study_plan_to_ae_specific,
10
+ )
11
+ from .ae.ae_summary import (
12
+ # AE summary functions
13
+ ae_summary,
14
+ study_plan_to_ae_summary,
15
+ )
16
+ from .common.count import (
17
+ count_subject,
18
+ count_subject_with_observation,
19
+ )
20
+ from .common.parse import (
21
+ StudyPlanParser,
22
+ parse_filter_to_sql,
23
+ )
24
+ from .common.plan import (
25
+ # Core classes
26
+ load_plan,
27
+ )
28
+ from .disposition.disposition import study_plan_to_disposition_summary
29
+
30
+ # Main exports for common usage
31
+ __all__ = [
32
+ # Primary user interface
33
+ "load_plan",
34
+ # AE analysis (direct pipeline wrappers)
35
+ "ae_summary",
36
+ "ae_specific",
37
+ "ae_listing",
38
+ # AE analysis (StudyPlan integration)
39
+ "study_plan_to_ae_summary",
40
+ "study_plan_to_ae_specific",
41
+ "study_plan_to_ae_listing",
42
+ # Disposition analysis
43
+ "study_plan_to_disposition_summary",
44
+ # Count functions
45
+ "count_subject",
46
+ "count_subject_with_observation",
47
+ # Parse utilities
48
+ "StudyPlanParser",
49
+ "parse_filter_to_sql",
50
+ ]
@@ -0,0 +1 @@
1
+ # pyre-strict