raxtik-etl 0.1.0.dev0__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.
- raxtik_etl-0.1.0.dev0/.all-contributorsrc +43 -0
- raxtik_etl-0.1.0.dev0/.dlt/config.toml +5 -0
- raxtik_etl-0.1.0.dev0/.dlt/secrets.toml.example +5 -0
- raxtik_etl-0.1.0.dev0/.github/renovate.json +46 -0
- raxtik_etl-0.1.0.dev0/.github/workflows/ci.yml +110 -0
- raxtik_etl-0.1.0.dev0/.github/workflows/release.yml +46 -0
- raxtik_etl-0.1.0.dev0/.gitignore +70 -0
- raxtik_etl-0.1.0.dev0/.pre-commit-config.yaml +27 -0
- raxtik_etl-0.1.0.dev0/.python-version +1 -0
- raxtik_etl-0.1.0.dev0/.readthedocs.yaml +21 -0
- raxtik_etl-0.1.0.dev0/CHANGELOG.md +16 -0
- raxtik_etl-0.1.0.dev0/CONTRIBUTORS.md +31 -0
- raxtik_etl-0.1.0.dev0/LICENSE +661 -0
- raxtik_etl-0.1.0.dev0/Makefile +23 -0
- raxtik_etl-0.1.0.dev0/PKG-INFO +268 -0
- raxtik_etl-0.1.0.dev0/README.md +217 -0
- raxtik_etl-0.1.0.dev0/codecov.yml +25 -0
- raxtik_etl-0.1.0.dev0/data/intermediate/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/data/output/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/data/packages/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/data/raw/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/docs/_static/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/docs/_templates/.gitkeep +1 -0
- raxtik_etl-0.1.0.dev0/docs/api.md +55 -0
- raxtik_etl-0.1.0.dev0/docs/architecture.md +52 -0
- raxtik_etl-0.1.0.dev0/docs/changelog.md +2 -0
- raxtik_etl-0.1.0.dev0/docs/cli_reference.md +109 -0
- raxtik_etl-0.1.0.dev0/docs/conf.py +78 -0
- raxtik_etl-0.1.0.dev0/docs/contributing.md +111 -0
- raxtik_etl-0.1.0.dev0/docs/contributors.md +31 -0
- raxtik_etl-0.1.0.dev0/docs/deduplication.md +47 -0
- raxtik_etl-0.1.0.dev0/docs/fda_faers_official_data_dictionary.md +143 -0
- raxtik_etl-0.1.0.dev0/docs/guides/2004q1_usage_guide.md +150 -0
- raxtik_etl-0.1.0.dev0/docs/index.md +84 -0
- raxtik_etl-0.1.0.dev0/docs/quickstart.md +97 -0
- raxtik_etl-0.1.0.dev0/docs/schema/code_list_history.md +102 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2004Q1.json +172 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2012Q4.json +184 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2014Q3.json +189 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2024Q1.json +189 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2026Q1.json +189 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/2026Q2.json +189 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/comparison.md +119 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S1.json +108 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S2.json +120 -0
- raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S3.json +128 -0
- raxtik_etl-0.1.0.dev0/docs/schema/field_mapping_matrix.csv +67 -0
- raxtik_etl-0.1.0.dev0/docs/schema/historical_schema_audit.md +86 -0
- raxtik_etl-0.1.0.dev0/pyproject.toml +102 -0
- raxtik_etl-0.1.0.dev0/requirements-dev.txt +3 -0
- raxtik_etl-0.1.0.dev0/requirements-docs.txt +5 -0
- raxtik_etl-0.1.0.dev0/requirements-lint.txt +4 -0
- raxtik_etl-0.1.0.dev0/requirements-tests.txt +3 -0
- raxtik_etl-0.1.0.dev0/scripts/fetch_eda_sample.py +56 -0
- raxtik_etl-0.1.0.dev0/scripts/run_eda.py +152 -0
- raxtik_etl-0.1.0.dev0/scripts/verify_historical_evidence.py +370 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/__init__.py +6 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/cli.py +298 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/config.py +30 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/distribution/__init__.py +13 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/distribution/huggingface.py +210 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/__init__.py +6 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/parquet_exporter.py +77 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/sqlite_exporter.py +137 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/longitudinal/__init__.py +11 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/longitudinal/merger.py +259 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/packaging/builder.py +98 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/__init__.py +24 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/codes.py +38 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/dechallenge.py +54 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/occupations.py +65 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/outcomes.py +105 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/rechallenge.py +54 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/report_sources.py +87 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/roles.py +99 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/__init__.py +51 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/canonical.py +264 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/registry.py +854 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/views.py +62 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sdk.py +157 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/__init__.py +17 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/__init__.py +13 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/fetcher.py +116 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/parser.py +108 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/resources.py +114 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/source.py +61 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/protocol.py +49 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/registry.py +61 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/__init__.py +5 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/metadata.py +437 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/normalization.py +62 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/runner.py +92 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/01_deduplicate.sql +55 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/02_normalize_drugs.sql +20 -0
- raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/03_aggregate_stats.sql +156 -0
- raxtik_etl-0.1.0.dev0/tests/conftest.py +17 -0
- raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/DEMO24Q1.txt +6 -0
- raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/DRUG24Q1.txt +6 -0
- raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/INDI24Q1.txt +6 -0
- raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/OUTC24Q1.txt +5 -0
- raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/REAC24Q1.txt +6 -0
- raxtik_etl-0.1.0.dev0/tests/integration/test_pipeline_flow.py +114 -0
- raxtik_etl-0.1.0.dev0/tests/test_huggingface_distribution.py +39 -0
- raxtik_etl-0.1.0.dev0/tests/test_longitudinal_deduplication.py +54 -0
- raxtik_etl-0.1.0.dev0/tests/test_package_2004q1_audit.py +230 -0
- raxtik_etl-0.1.0.dev0/tests/test_schema.py +93 -0
- raxtik_etl-0.1.0.dev0/tests/unit/test_dlt_source.py +36 -0
- raxtik_etl-0.1.0.dev0/tests/unit/test_exporters.py +56 -0
- raxtik_etl-0.1.0.dev0/tests/unit/test_faers_parser.py +37 -0
- raxtik_etl-0.1.0.dev0/tests/unit/test_sources_registry.py +54 -0
- raxtik_etl-0.1.0.dev0/tests/unit/test_transformations.py +48 -0
- raxtik_etl-0.1.0.dev0/tox.ini +30 -0
- raxtik_etl-0.1.0.dev0/typos.toml +43 -0
- raxtik_etl-0.1.0.dev0/uv.lock +2220 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projectName": "raxtik-etl",
|
|
3
|
+
"projectOwner": "raxtik-org",
|
|
4
|
+
"repoType": "github",
|
|
5
|
+
"repoHost": "https://github.com",
|
|
6
|
+
"files": [
|
|
7
|
+
"CONTRIBUTORS.md",
|
|
8
|
+
"README.md",
|
|
9
|
+
"docs/contributors.md"
|
|
10
|
+
],
|
|
11
|
+
"imageSize": 100,
|
|
12
|
+
"commit": false,
|
|
13
|
+
"contributors": [
|
|
14
|
+
{
|
|
15
|
+
"login": "prateekdagar",
|
|
16
|
+
"name": "Prateek Dagar",
|
|
17
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/1041938?v=4",
|
|
18
|
+
"profile": "https://github.com/prateekdagar",
|
|
19
|
+
"contributions": [
|
|
20
|
+
"code",
|
|
21
|
+
"doc",
|
|
22
|
+
"infra",
|
|
23
|
+
"maintenance"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"login": "prateek-dagar",
|
|
28
|
+
"name": "Prateek Dagar",
|
|
29
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/107306613?v=4",
|
|
30
|
+
"profile": "https://github.com/prateek-dagar",
|
|
31
|
+
"contributions": [
|
|
32
|
+
"code",
|
|
33
|
+
"doc",
|
|
34
|
+
"infra",
|
|
35
|
+
"test"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"contributorsPerLine": 7,
|
|
40
|
+
"linkToUsage": true,
|
|
41
|
+
"commitType": "docs",
|
|
42
|
+
"commitConvention": "angular"
|
|
43
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
+
"description": "Renovate configuration for raxtik-etl",
|
|
4
|
+
"extends": [
|
|
5
|
+
"config:recommended",
|
|
6
|
+
":dependencyDashboard",
|
|
7
|
+
":semanticCommits",
|
|
8
|
+
":combineUpdateAutomations"
|
|
9
|
+
],
|
|
10
|
+
"labels": ["dependencies"],
|
|
11
|
+
"schedule": ["before 6am on monday"],
|
|
12
|
+
"timezone": "UTC",
|
|
13
|
+
"prConcurrentLimit": 5,
|
|
14
|
+
"prHourlyLimit": 2,
|
|
15
|
+
"rebaseWhen": "auto",
|
|
16
|
+
"packageRules": [
|
|
17
|
+
{
|
|
18
|
+
"matchPackagePatterns": ["*"],
|
|
19
|
+
"matchUpdateTypes": ["minor", "patch"],
|
|
20
|
+
"groupName": "all non-major dependencies",
|
|
21
|
+
"groupSlug": "all-minor-patch"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"description": "Pin GitHub Actions to full commit SHAs for security and immutability",
|
|
25
|
+
"matchManagers": ["github-actions"],
|
|
26
|
+
"groupName": "github-actions",
|
|
27
|
+
"pinDigests": true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"description": "Group pre-commit hook updates",
|
|
31
|
+
"matchManagers": ["pre-commit"],
|
|
32
|
+
"groupName": "pre-commit hooks"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"description": "Prevent bumping required Python version automatically",
|
|
36
|
+
"matchPackageNames": ["python"],
|
|
37
|
+
"enabled": false
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"enabledManagers": [
|
|
41
|
+
"pep621",
|
|
42
|
+
"pip_requirements",
|
|
43
|
+
"github-actions",
|
|
44
|
+
"pre-commit"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name != 'pull_request' && github.sha || '' }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
UV_NO_SYNC: "1"
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
quality:
|
|
22
|
+
name: Lint & Type Check
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout repository
|
|
26
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
27
|
+
|
|
28
|
+
- name: Set up uv & Python 3.13
|
|
29
|
+
uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
|
|
30
|
+
with:
|
|
31
|
+
version: "latest"
|
|
32
|
+
python-version: "3.13"
|
|
33
|
+
|
|
34
|
+
- name: Install lint & typing dependencies
|
|
35
|
+
run: |
|
|
36
|
+
uv venv .venv --python 3.13
|
|
37
|
+
uv pip install -e . -r requirements-lint.txt
|
|
38
|
+
|
|
39
|
+
- name: Run code linters
|
|
40
|
+
run: |
|
|
41
|
+
uv run --no-sync ruff check .
|
|
42
|
+
uv run --no-sync ruff format --check .
|
|
43
|
+
uv run --no-sync typos
|
|
44
|
+
|
|
45
|
+
- name: Run Pyrefly static typing
|
|
46
|
+
run: uv run --no-sync pyrefly check src/raxtik_etl
|
|
47
|
+
|
|
48
|
+
docs:
|
|
49
|
+
name: Documentation
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- name: Checkout repository
|
|
53
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
54
|
+
|
|
55
|
+
- name: Set up uv & Python 3.13
|
|
56
|
+
uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
|
|
57
|
+
with:
|
|
58
|
+
version: "latest"
|
|
59
|
+
python-version: "3.13"
|
|
60
|
+
|
|
61
|
+
- name: Install docs dependencies
|
|
62
|
+
run: |
|
|
63
|
+
uv venv .venv --python 3.13
|
|
64
|
+
uv pip install -e . -r requirements-docs.txt
|
|
65
|
+
|
|
66
|
+
- name: Build documentation
|
|
67
|
+
run: uv run --no-sync sphinx-build -b html docs docs/_build/html -W
|
|
68
|
+
|
|
69
|
+
test:
|
|
70
|
+
name: test (${{ matrix.os }} - py${{ matrix.python-version }})
|
|
71
|
+
runs-on: ${{ matrix.os }}
|
|
72
|
+
needs: [quality, docs]
|
|
73
|
+
if: "!startsWith(github.head_ref, 'all-contributors/')"
|
|
74
|
+
timeout-minutes: 15
|
|
75
|
+
strategy:
|
|
76
|
+
fail-fast: false
|
|
77
|
+
matrix:
|
|
78
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
79
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
80
|
+
include:
|
|
81
|
+
- os: ubuntu-latest
|
|
82
|
+
python-version: "3.14"
|
|
83
|
+
- os: ubuntu-latest
|
|
84
|
+
python-version: "3.15"
|
|
85
|
+
|
|
86
|
+
steps:
|
|
87
|
+
- name: Checkout repository
|
|
88
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
89
|
+
|
|
90
|
+
- name: Set up uv & Python ${{ matrix.python-version }}
|
|
91
|
+
uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
|
|
92
|
+
with:
|
|
93
|
+
version: "latest"
|
|
94
|
+
python-version: ${{ matrix.python-version }}
|
|
95
|
+
|
|
96
|
+
- name: Install test dependencies
|
|
97
|
+
run: |
|
|
98
|
+
uv venv .venv --python ${{ matrix.python-version }}
|
|
99
|
+
uv pip install -e . -r requirements-tests.txt
|
|
100
|
+
|
|
101
|
+
- name: Run test suite with coverage
|
|
102
|
+
run: uv run --no-sync pytest -v --cov=raxtik_etl --cov-report=xml --cov-report=term tests/
|
|
103
|
+
|
|
104
|
+
- name: Upload coverage report to Codecov
|
|
105
|
+
uses: codecov/codecov-action@0fb7174895f61a3b6b78fc075e0cd60383518dac # v5.5.5
|
|
106
|
+
with:
|
|
107
|
+
files: ./coverage.xml
|
|
108
|
+
flags: ${{ matrix.os }}-py${{ matrix.python-version }}
|
|
109
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
110
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
target:
|
|
9
|
+
description: 'Publish target (pypi or testpypi)'
|
|
10
|
+
required: true
|
|
11
|
+
default: 'pypi'
|
|
12
|
+
type: choice
|
|
13
|
+
options:
|
|
14
|
+
- pypi
|
|
15
|
+
- testpypi
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build-and-publish:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
permissions:
|
|
21
|
+
id-token: write # Mandatory for PyPI Trusted Publishing
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout code
|
|
25
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
26
|
+
|
|
27
|
+
- name: Install uv
|
|
28
|
+
uses: astral-sh/setup-uv@18d369b23da25a81e9458561248e1aafff6a70fa # v10.3.1
|
|
29
|
+
with:
|
|
30
|
+
version: "latest"
|
|
31
|
+
|
|
32
|
+
- name: Set up Python 3.13
|
|
33
|
+
run: uv python install 3.13
|
|
34
|
+
|
|
35
|
+
- name: Build sdist and wheel
|
|
36
|
+
run: uv build
|
|
37
|
+
|
|
38
|
+
- name: Publish to TestPyPI
|
|
39
|
+
if: ${{ github.event.inputs.target == 'testpypi' }}
|
|
40
|
+
uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
41
|
+
with:
|
|
42
|
+
repository-url: https://test.pypi.org/legacy/
|
|
43
|
+
|
|
44
|
+
- name: Publish to PyPI
|
|
45
|
+
if: ${{ github.event_name == 'release' || github.event.inputs.target == 'pypi' }}
|
|
46
|
+
uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
|
|
23
|
+
# Virtual Environments
|
|
24
|
+
.venv/
|
|
25
|
+
env/
|
|
26
|
+
venv/
|
|
27
|
+
ENV/
|
|
28
|
+
|
|
29
|
+
# Testing & Linting
|
|
30
|
+
.pytest_cache/
|
|
31
|
+
.coverage
|
|
32
|
+
coverage.xml
|
|
33
|
+
*.xml
|
|
34
|
+
htmlcov/
|
|
35
|
+
.ruff_cache/
|
|
36
|
+
.tox/
|
|
37
|
+
|
|
38
|
+
# Documentation
|
|
39
|
+
docs/_build/
|
|
40
|
+
|
|
41
|
+
# dlt & local pipeline data
|
|
42
|
+
.dlt/secrets.toml
|
|
43
|
+
.dlt/*.duckdb
|
|
44
|
+
data/raw/*
|
|
45
|
+
!data/raw/.gitkeep
|
|
46
|
+
data/intermediate/*
|
|
47
|
+
!data/intermediate/.gitkeep
|
|
48
|
+
data/output/*
|
|
49
|
+
!data/output/.gitkeep
|
|
50
|
+
data/packages/*
|
|
51
|
+
!data/packages/.gitkeep
|
|
52
|
+
*.duckdb
|
|
53
|
+
*.duckdb.wal
|
|
54
|
+
|
|
55
|
+
# IDE
|
|
56
|
+
.idea/
|
|
57
|
+
.vscode/
|
|
58
|
+
*.code-workspace
|
|
59
|
+
*.swp
|
|
60
|
+
*.swo
|
|
61
|
+
.DS_Store
|
|
62
|
+
|
|
63
|
+
# Secrets and Tokens
|
|
64
|
+
.env
|
|
65
|
+
*.env
|
|
66
|
+
.token.env
|
|
67
|
+
|
|
68
|
+
# Local Backlog
|
|
69
|
+
TODO.md
|
|
70
|
+
TODO*.md
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
# Note: Configured for PR auto-formatting & CI automation.
|
|
3
|
+
ci:
|
|
4
|
+
autofix_commit_msg: "chore(pr): auto fixes from pre-commit hooks"
|
|
5
|
+
autofix_prs: true
|
|
6
|
+
autoupdate_branch: ""
|
|
7
|
+
|
|
8
|
+
repos:
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v5.0.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
- id: end-of-file-fixer
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
- id: check-toml
|
|
16
|
+
|
|
17
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
18
|
+
rev: v0.9.9
|
|
19
|
+
hooks:
|
|
20
|
+
- id: ruff
|
|
21
|
+
args: [--fix, --exit-non-zero-on-fix]
|
|
22
|
+
- id: ruff-format
|
|
23
|
+
|
|
24
|
+
- repo: https://github.com/crate-ci/typos
|
|
25
|
+
rev: v1.30.1
|
|
26
|
+
hooks:
|
|
27
|
+
- id: typos
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13.5
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Read the Docs configuration file (Version 2)
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
build:
|
|
7
|
+
os: ubuntu-24.04
|
|
8
|
+
tools:
|
|
9
|
+
python: "3.13"
|
|
10
|
+
|
|
11
|
+
# Build documentation with Sphinx using docs/conf.py
|
|
12
|
+
sphinx:
|
|
13
|
+
configuration: docs/conf.py
|
|
14
|
+
fail_on_warning: true
|
|
15
|
+
|
|
16
|
+
# Python environment and dependencies
|
|
17
|
+
python:
|
|
18
|
+
install:
|
|
19
|
+
- requirements: requirements-docs.txt
|
|
20
|
+
- method: pip
|
|
21
|
+
path: .
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0.dev0] - 2026-10-25
|
|
9
|
+
|
|
10
|
+
### Initial Release
|
|
11
|
+
- Canonical 7-entity pharmacovigilance data engine and longitudinal deduplication.
|
|
12
|
+
- Decoupled `SourceAdapter` protocol for external connectors (`raxtik-source-faers`).
|
|
13
|
+
- Dual presentation packaging into DuckDB relational databases and Parquet shards.
|
|
14
|
+
- Zero-copy Python Safety SDK with Polars DataFrames (`FAERS`).
|
|
15
|
+
- Hugging Face Hub remote distribution client (zero-auth streaming downloads).
|
|
16
|
+
- Automated CI quality matrix across Python 3.11–3.15 and multi-OS runners.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Contributors
|
|
2
|
+
|
|
3
|
+
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
4
|
+
|
|
5
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
6
|
+
<!-- prettier-ignore-start -->
|
|
7
|
+
<!-- markdownlint-disable -->
|
|
8
|
+
<table>
|
|
9
|
+
<tbody>
|
|
10
|
+
<tr>
|
|
11
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/prateekdagar"><img src="https://avatars.githubusercontent.com/u/1041938?v=4?s=100" width="100px;" alt="Prateek Dagar"/><br /><sub><b>Prateek Dagar</b></sub></a><br /><a href="https://github.com/raxtik-org/raxtik-etl/commits?author=prateekdagar" title="Code">💻</a> <a href="https://github.com/raxtik-org/raxtik-etl/commits?author=prateekdagar" title="Documentation">📖</a> <a href="#infra-prateekdagar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-prateekdagar" title="Maintenance">🚧</a></td>
|
|
12
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/prateek-dagar"><img src="https://avatars.githubusercontent.com/u/107306613?v=4?s=100" width="100px;" alt="Prateek Dagar"/><br /><sub><b>Prateek Dagar</b></sub></a><br /><a href="https://github.com/raxtik-org/raxtik-etl/commits?author=prateek-dagar" title="Code">💻</a> <a href="https://github.com/raxtik-org/raxtik-etl/commits?author=prateek-dagar" title="Documentation">📖</a> <a href="#infra-prateek-dagar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/raxtik-org/raxtik-etl/commits?author=prateek-dagar" title="Tests">⚠️</a></td>
|
|
13
|
+
</tr>
|
|
14
|
+
</tbody>
|
|
15
|
+
<tfoot>
|
|
16
|
+
<tr>
|
|
17
|
+
<td align="center" size="13px" colspan="7">
|
|
18
|
+
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
|
|
19
|
+
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
|
|
20
|
+
</img>
|
|
21
|
+
</td>
|
|
22
|
+
</tr>
|
|
23
|
+
</tfoot>
|
|
24
|
+
</table>
|
|
25
|
+
|
|
26
|
+
<!-- markdownlint-restore -->
|
|
27
|
+
<!-- prettier-ignore-end -->
|
|
28
|
+
|
|
29
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
30
|
+
|
|
31
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|