Skip to content

Commit 4e330e6

Browse files
authored
Merge pull request #1 from getyourguide/initial-commits
Initial commit - includes base code, CI setup and Sphinx Documentation Generator
2 parents de3d6a8 + 5cac802 commit 4e330e6

File tree

84 files changed

+19385
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+19385
-1
lines changed

.github/dependabot.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
version: 2
2+
updates:
3+
# UV package manager support
4+
- package-ecosystem: "uv"
5+
directory: "/"
6+
schedule:
7+
interval: "weekly"
8+
day: "sunday"
9+
timezone: "Europe/Berlin"
10+
open-pull-requests-limit: 10
11+
# Group updates to reduce PR noise
12+
groups:
13+
major-updates:
14+
patterns:
15+
- "*"
16+
update-types:
17+
- "major"
18+
minor-updates:
19+
patterns:
20+
- "*"
21+
update-types:
22+
- "minor"
23+
patch-updates:
24+
patterns:
25+
- "*"
26+
update-types:
27+
- "patch"
28+
# Ignore dependencies that need manual review
29+
ignore:
30+
- dependency-name: "pyspark"
31+
# PySpark updates can break compatibility, needs manual testing
32+
- dependency-name: "pandas"
33+
update-types: ["version-update:semver-major"]
34+
# Only allow minor/patch updates for pandas to avoid breaking changes

.github/pull_request_template.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## Description
2+
<!--
3+
Describe the change at a high-level.
4+
-->
5+
6+
## Checklist
7+
<!--
8+
Please consider the following when submitting code changes.
9+
10+
Note: You can check the boxes once you submit, or put an x in the [ ]
11+
12+
like [x]
13+
-->
14+
15+
- [ ] Tests have been added in the prescribed format
16+
- [ ] `CHANGELOG.md` has been updated to reflect changes
17+
- [ ] Version has been updated in `pyproject.toml`

.github/workflows/main.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: CI
2+
3+
on: [push]
4+
5+
permissions:
6+
contents: write
7+
8+
concurrency:
9+
group: ${{ github.workflow }}${{ github.ref_name != github.event.repository.default_branch && github.ref || github.run_id }}
10+
cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }}
11+
12+
jobs:
13+
test:
14+
runs-on: [ self-hosted, python-small ]
15+
strategy:
16+
matrix:
17+
python-version: ["3.10", "3.11", "3.12"]
18+
fail-fast: false # Don't cancel other jobs if one fails
19+
name: Test (Python ${{ matrix.python-version }})
20+
steps:
21+
- uses: actions/checkout@v4
22+
- name: Install Python and UV
23+
uses: astral-sh/setup-uv@v5
24+
with:
25+
python-version: ${{ matrix.python-version }}
26+
- name: Install dependencies
27+
run: |
28+
uv sync --group dev
29+
- name: Run sanity check
30+
run: |
31+
uv run python sanity_checks.py
32+
working-directory: dataframe_expectations
33+
- name: Run tests
34+
run: |
35+
uv run pytest tests/ --cov=dataframe_expectations
36+
37+
lint:
38+
runs-on: [ self-hosted, python-small ]
39+
env:
40+
PYTHON_VERSION: "3.11" # Use a single version for linting
41+
steps:
42+
- uses: actions/checkout@v4
43+
- name: Install Python and UV
44+
uses: astral-sh/setup-uv@v5
45+
with:
46+
python-version: ${{ env.PYTHON_VERSION }}
47+
- name: Install dependencies
48+
run: |
49+
uv sync --group dev
50+
- name: Pre-commit
51+
run: |
52+
uv run pre-commit run --all-files --show-diff-on-failure
53+
54+
docs:
55+
runs-on: [ self-hosted, python-small ]
56+
env:
57+
PYTHON_VERSION: "3.11" # Use a single version for docs
58+
needs: [test, lint]
59+
steps:
60+
- uses: actions/checkout@v4
61+
- name: Install Python and UV
62+
uses: astral-sh/setup-uv@v5
63+
with:
64+
python-version: ${{ env.PYTHON_VERSION }}
65+
- name: Install dependencies
66+
run: |
67+
uv sync --group docs
68+
- name: Build docs
69+
run: |
70+
uv run sphinx-build source build/html
71+
working-directory: docs

.gitignore

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[codz]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
share/python-wheels/
24+
*.egg-info/
25+
.installed.cfg
26+
*.egg
27+
MANIFEST
28+
29+
# PyInstaller
30+
# Usually these files are written by a python script from a template
31+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32+
*.manifest
33+
*.spec
34+
35+
# Installer logs
36+
pip-log.txt
37+
pip-delete-this-directory.txt
38+
39+
# Unit test / coverage reports
40+
htmlcov/
41+
.tox/
42+
.nox/
43+
.coverage
44+
.coverage.*
45+
.cache
46+
nosetests.xml
47+
coverage.xml
48+
*.cover
49+
*.py.cover
50+
.hypothesis/
51+
.pytest_cache/
52+
cover/
53+
54+
# Translations
55+
*.mo
56+
*.pot
57+
58+
# Django stuff:
59+
*.log
60+
local_settings.py
61+
db.sqlite3
62+
db.sqlite3-journal
63+
64+
# Flask stuff:
65+
instance/
66+
.webassets-cache
67+
68+
# Scrapy stuff:
69+
.scrapy
70+
71+
# Sphinx documentation
72+
docs/_build/
73+
74+
# PyBuilder
75+
.pybuilder/
76+
target/
77+
78+
# Jupyter Notebook
79+
.ipynb_checkpoints
80+
81+
# IPython
82+
profile_default/
83+
ipython_config.py
84+
85+
# pyenv
86+
# For a library or package, you might want to ignore these files since the code is
87+
# intended to run in multiple environments; otherwise, check them in:
88+
# .python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94+
# install all needed dependencies.
95+
# Pipfile.lock
96+
97+
# sphinx
98+
# Sphinx documentation build output
99+
build/
100+
101+
# Sphinx cache and temporary files
102+
source/.doctrees/
103+
.doctrees/
104+
105+
# Auto-generated API documentation (if using sphinx-apidoc)
106+
source/_autosummary/
107+
source/_generated/
108+
source/api/
109+
110+
# poetry
111+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
112+
# This is especially recommended for binary packages to ensure reproducibility, and is more
113+
# commonly ignored for libraries.
114+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
115+
# poetry.lock
116+
# poetry.toml
117+
118+
# pdm
119+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
120+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
121+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
122+
# pdm.lock
123+
# pdm.toml
124+
.pdm-python
125+
.pdm-build/
126+
127+
# pixi
128+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
129+
# pixi.lock
130+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
131+
# in the .venv directory. It is recommended not to include this directory in version control.
132+
.pixi
133+
134+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
135+
__pypackages__/
136+
137+
# Celery stuff
138+
celerybeat-schedule
139+
celerybeat.pid
140+
141+
# Redis
142+
*.rdb
143+
*.aof
144+
*.pid
145+
146+
# RabbitMQ
147+
mnesia/
148+
rabbitmq/
149+
rabbitmq-data/
150+
151+
# ActiveMQ
152+
activemq-data/
153+
154+
# SageMath parsed files
155+
*.sage.py
156+
157+
# Environments
158+
.env
159+
.envrc
160+
.venv
161+
env/
162+
venv/
163+
ENV/
164+
env.bak/
165+
venv.bak/
166+
167+
# Spyder project settings
168+
.spyderproject
169+
.spyproject
170+
171+
# Rope project settings
172+
.ropeproject
173+
174+
# mkdocs documentation
175+
/site
176+
177+
# mypy
178+
.mypy_cache/
179+
.dmypy.json
180+
dmypy.json
181+
182+
# Pyre type checker
183+
.pyre/
184+
185+
# pytype static type analyzer
186+
.pytype/
187+
188+
# Cython debug symbols
189+
cython_debug/
190+
191+
# PyCharm
192+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
193+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
194+
# and can be added to the global gitignore or merged into this file. For a more nuclear
195+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
196+
# .idea/
197+
198+
# Abstra
199+
# Abstra is an AI-powered process automation framework.
200+
# Ignore directories containing user credentials, local state, and settings.
201+
# Learn more at https://abstra.io/docs
202+
.abstra/
203+
204+
# Visual Studio Code
205+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
206+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
207+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
208+
# you could uncomment the following to ignore the entire vscode folder
209+
# .vscode/
210+
211+
# Ruff stuff:
212+
.ruff_cache/
213+
214+
# PyPI configuration file
215+
.pypirc
216+
217+
# Marimo
218+
marimo/_static/
219+
marimo/_lsp/
220+
__marimo__/
221+
222+
# Streamlit
223+
.streamlit/secrets.toml
224+
225+
226+
# Ignore generated documentation
227+
docs/build/

0 commit comments

Comments
 (0)