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.
Files changed (114) hide show
  1. raxtik_etl-0.1.0.dev0/.all-contributorsrc +43 -0
  2. raxtik_etl-0.1.0.dev0/.dlt/config.toml +5 -0
  3. raxtik_etl-0.1.0.dev0/.dlt/secrets.toml.example +5 -0
  4. raxtik_etl-0.1.0.dev0/.github/renovate.json +46 -0
  5. raxtik_etl-0.1.0.dev0/.github/workflows/ci.yml +110 -0
  6. raxtik_etl-0.1.0.dev0/.github/workflows/release.yml +46 -0
  7. raxtik_etl-0.1.0.dev0/.gitignore +70 -0
  8. raxtik_etl-0.1.0.dev0/.pre-commit-config.yaml +27 -0
  9. raxtik_etl-0.1.0.dev0/.python-version +1 -0
  10. raxtik_etl-0.1.0.dev0/.readthedocs.yaml +21 -0
  11. raxtik_etl-0.1.0.dev0/CHANGELOG.md +16 -0
  12. raxtik_etl-0.1.0.dev0/CONTRIBUTORS.md +31 -0
  13. raxtik_etl-0.1.0.dev0/LICENSE +661 -0
  14. raxtik_etl-0.1.0.dev0/Makefile +23 -0
  15. raxtik_etl-0.1.0.dev0/PKG-INFO +268 -0
  16. raxtik_etl-0.1.0.dev0/README.md +217 -0
  17. raxtik_etl-0.1.0.dev0/codecov.yml +25 -0
  18. raxtik_etl-0.1.0.dev0/data/intermediate/.gitkeep +1 -0
  19. raxtik_etl-0.1.0.dev0/data/output/.gitkeep +1 -0
  20. raxtik_etl-0.1.0.dev0/data/packages/.gitkeep +1 -0
  21. raxtik_etl-0.1.0.dev0/data/raw/.gitkeep +1 -0
  22. raxtik_etl-0.1.0.dev0/docs/_static/.gitkeep +1 -0
  23. raxtik_etl-0.1.0.dev0/docs/_templates/.gitkeep +1 -0
  24. raxtik_etl-0.1.0.dev0/docs/api.md +55 -0
  25. raxtik_etl-0.1.0.dev0/docs/architecture.md +52 -0
  26. raxtik_etl-0.1.0.dev0/docs/changelog.md +2 -0
  27. raxtik_etl-0.1.0.dev0/docs/cli_reference.md +109 -0
  28. raxtik_etl-0.1.0.dev0/docs/conf.py +78 -0
  29. raxtik_etl-0.1.0.dev0/docs/contributing.md +111 -0
  30. raxtik_etl-0.1.0.dev0/docs/contributors.md +31 -0
  31. raxtik_etl-0.1.0.dev0/docs/deduplication.md +47 -0
  32. raxtik_etl-0.1.0.dev0/docs/fda_faers_official_data_dictionary.md +143 -0
  33. raxtik_etl-0.1.0.dev0/docs/guides/2004q1_usage_guide.md +150 -0
  34. raxtik_etl-0.1.0.dev0/docs/index.md +84 -0
  35. raxtik_etl-0.1.0.dev0/docs/quickstart.md +97 -0
  36. raxtik_etl-0.1.0.dev0/docs/schema/code_list_history.md +102 -0
  37. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2004Q1.json +172 -0
  38. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2012Q4.json +184 -0
  39. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2014Q3.json +189 -0
  40. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2024Q1.json +189 -0
  41. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2026Q1.json +189 -0
  42. raxtik_etl-0.1.0.dev0/docs/schema/evidence/2026Q2.json +189 -0
  43. raxtik_etl-0.1.0.dev0/docs/schema/evidence/comparison.md +119 -0
  44. raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S1.json +108 -0
  45. raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S2.json +120 -0
  46. raxtik_etl-0.1.0.dev0/docs/schema/evidence/signatures/S3.json +128 -0
  47. raxtik_etl-0.1.0.dev0/docs/schema/field_mapping_matrix.csv +67 -0
  48. raxtik_etl-0.1.0.dev0/docs/schema/historical_schema_audit.md +86 -0
  49. raxtik_etl-0.1.0.dev0/pyproject.toml +102 -0
  50. raxtik_etl-0.1.0.dev0/requirements-dev.txt +3 -0
  51. raxtik_etl-0.1.0.dev0/requirements-docs.txt +5 -0
  52. raxtik_etl-0.1.0.dev0/requirements-lint.txt +4 -0
  53. raxtik_etl-0.1.0.dev0/requirements-tests.txt +3 -0
  54. raxtik_etl-0.1.0.dev0/scripts/fetch_eda_sample.py +56 -0
  55. raxtik_etl-0.1.0.dev0/scripts/run_eda.py +152 -0
  56. raxtik_etl-0.1.0.dev0/scripts/verify_historical_evidence.py +370 -0
  57. raxtik_etl-0.1.0.dev0/src/raxtik_etl/__init__.py +6 -0
  58. raxtik_etl-0.1.0.dev0/src/raxtik_etl/cli.py +298 -0
  59. raxtik_etl-0.1.0.dev0/src/raxtik_etl/config.py +30 -0
  60. raxtik_etl-0.1.0.dev0/src/raxtik_etl/distribution/__init__.py +13 -0
  61. raxtik_etl-0.1.0.dev0/src/raxtik_etl/distribution/huggingface.py +210 -0
  62. raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/__init__.py +6 -0
  63. raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/parquet_exporter.py +77 -0
  64. raxtik_etl-0.1.0.dev0/src/raxtik_etl/exporters/sqlite_exporter.py +137 -0
  65. raxtik_etl-0.1.0.dev0/src/raxtik_etl/longitudinal/__init__.py +11 -0
  66. raxtik_etl-0.1.0.dev0/src/raxtik_etl/longitudinal/merger.py +259 -0
  67. raxtik_etl-0.1.0.dev0/src/raxtik_etl/packaging/builder.py +98 -0
  68. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/__init__.py +24 -0
  69. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/codes.py +38 -0
  70. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/dechallenge.py +54 -0
  71. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/occupations.py +65 -0
  72. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/outcomes.py +105 -0
  73. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/rechallenge.py +54 -0
  74. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/report_sources.py +87 -0
  75. raxtik_etl-0.1.0.dev0/src/raxtik_etl/reference/roles.py +99 -0
  76. raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/__init__.py +51 -0
  77. raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/canonical.py +264 -0
  78. raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/registry.py +854 -0
  79. raxtik_etl-0.1.0.dev0/src/raxtik_etl/schema/views.py +62 -0
  80. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sdk.py +157 -0
  81. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/__init__.py +17 -0
  82. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/__init__.py +13 -0
  83. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/fetcher.py +116 -0
  84. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/parser.py +108 -0
  85. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/resources.py +114 -0
  86. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/faers/source.py +61 -0
  87. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/protocol.py +49 -0
  88. raxtik_etl-0.1.0.dev0/src/raxtik_etl/sources/registry.py +61 -0
  89. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/__init__.py +5 -0
  90. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/metadata.py +437 -0
  91. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/normalization.py +62 -0
  92. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/runner.py +92 -0
  93. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/01_deduplicate.sql +55 -0
  94. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/02_normalize_drugs.sql +20 -0
  95. raxtik_etl-0.1.0.dev0/src/raxtik_etl/transformations/sql/03_aggregate_stats.sql +156 -0
  96. raxtik_etl-0.1.0.dev0/tests/conftest.py +17 -0
  97. raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/DEMO24Q1.txt +6 -0
  98. raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/DRUG24Q1.txt +6 -0
  99. raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/INDI24Q1.txt +6 -0
  100. raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/OUTC24Q1.txt +5 -0
  101. raxtik_etl-0.1.0.dev0/tests/fixtures/sample_faers_ascii/REAC24Q1.txt +6 -0
  102. raxtik_etl-0.1.0.dev0/tests/integration/test_pipeline_flow.py +114 -0
  103. raxtik_etl-0.1.0.dev0/tests/test_huggingface_distribution.py +39 -0
  104. raxtik_etl-0.1.0.dev0/tests/test_longitudinal_deduplication.py +54 -0
  105. raxtik_etl-0.1.0.dev0/tests/test_package_2004q1_audit.py +230 -0
  106. raxtik_etl-0.1.0.dev0/tests/test_schema.py +93 -0
  107. raxtik_etl-0.1.0.dev0/tests/unit/test_dlt_source.py +36 -0
  108. raxtik_etl-0.1.0.dev0/tests/unit/test_exporters.py +56 -0
  109. raxtik_etl-0.1.0.dev0/tests/unit/test_faers_parser.py +37 -0
  110. raxtik_etl-0.1.0.dev0/tests/unit/test_sources_registry.py +54 -0
  111. raxtik_etl-0.1.0.dev0/tests/unit/test_transformations.py +48 -0
  112. raxtik_etl-0.1.0.dev0/tox.ini +30 -0
  113. raxtik_etl-0.1.0.dev0/typos.toml +43 -0
  114. 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,5 @@
1
+ [runtime]
2
+ log_level = "INFO"
3
+
4
+ [load]
5
+ workers = 4
@@ -0,0 +1,5 @@
1
+ # Example secrets file for raxtik-etl
2
+ # Copy to .dlt/secrets.toml if custom credentials or cloud destinations are needed.
3
+
4
+ [destination.duckdb.credentials]
5
+ # database: Optional path override for DuckDB
@@ -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!