Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
8aca060
Add type hints, dataclasses, and docstrings:
maximiliancw Jan 1, 2026
6586f6f
Add custom exceptions and comprehensive error handling
maximiliancw Jan 1, 2026
3520d90
Fix cache security and add TTL expiration:
maximiliancw Jan 1, 2026
a71cec9
Update dependencies and bump Python version:
maximiliancw Jan 1, 2026
9a1ec00
Modernize Python patterns and implement proper logging:
maximiliancw Jan 1, 2026
4453ce7
Separate unit tests from integration tests and add fixtures:
maximiliancw Jan 1, 2026
a602bcf
Refactor into separate Cache, Parser, and Browser layers:
maximiliancw Jan 1, 2026
3dc0426
Implement additional search parameters:
maximiliancw Jan 1, 2026
bae6720
Update poetry.lock for new dependencies
maximiliancw Jan 1, 2026
d4b4ed0
Update README with new CLI options and examples:
maximiliancw Jan 1, 2026
3da6755
Überarbeitung der README.md
maximiliancw Jan 1, 2026
c54b99e
Einfache search() Funktion als Haupt-API hinzufügen:
maximiliancw Jan 1, 2026
6235574
HandelsRegister Konstruktor für Library-Nutzung refactoren:
maximiliancw Jan 1, 2026
0f4ff11
README mit Library-Beispielen aktualisieren:
maximiliancw Jan 1, 2026
cb8a64f
Tests für neue search() Funktion und API hinzufügen:
maximiliancw Jan 1, 2026
cd8c58d
pyproject.toml auf uv/PEP 621 Format konvertieren
maximiliancw Jan 1, 2026
825a647
uv.lock erstellen und pyproject.toml korrigieren:
maximiliancw Jan 1, 2026
180317b
README aktualisieren
maximiliancw Jan 1, 2026
a668e4f
Poetry/Pipenv Dateien entfernen:
maximiliancw Jan 1, 2026
ee03afe
Add data models for company details:
maximiliancw Jan 1, 2026
0a8a91d
dd DetailsParser for structured register content
maximiliancw Jan 1, 2026
2cbb28c
Add methods to fetch detailed company information from the Handelsreg…
maximiliancw Jan 1, 2026
7907566
Improve the caching system with better support for company details:
maximiliancw Jan 1, 2026
27291bc
feat: Add CLI options for fetching company details
maximiliancw Jan 1, 2026
97bfe53
Add documentation for the new company details feature:
maximiliancw Jan 1, 2026
0a6f4ff
Add mkdocs.yml and required dependencies to pyproject.toml
maximiliancw Jan 2, 2026
1413c2e
Create docs/index.md
maximiliancw Jan 2, 2026
4de434a
Add mkdocs-static-i18n dependency and update package versions in pypr…
maximiliancw Jan 2, 2026
e4918df
Update mkdocs configuration for English localization and enhance docu…
maximiliancw Jan 2, 2026
5be6fbe
Add docs: quickstart.md
maximiliancw Jan 2, 2026
e4c133c
Add docs: installation.md
maximiliancw Jan 2, 2026
7f0ba19
Add `mkdocs build` output folder `sites/` to .gitignore
maximiliancw Jan 2, 2026
b58a532
Add remaining docs (English + German)
maximiliancw Jan 2, 2026
de5bd90
Refactor form control names in HandelsRegister and enhance test suite:
maximiliancw Jan 2, 2026
3b4011c
Improved docstrings and fixed docs
maximiliancw Jan 2, 2026
c939322
Replace custom cache implementation with DiskCache:
maximiliancw Jan 2, 2026
88b8dec
Add Pydantic for data model validation and serialization:
maximiliancw Jan 2, 2026
db8ce69
Add Tenacity for automatic retry logic on network failures:
maximiliancw Jan 2, 2026
f83a593
Add rate limiting to comply with portal terms of service:
maximiliancw Jan 2, 2026
4902d0a
Add python-dateutil for robust date parsing:
maximiliancw Jan 2, 2026
41849f2
Add yarl for safe URL construction:
maximiliancw Jan 2, 2026
ba6cbab
Add pydantic-settings for centralized configuration management:
maximiliancw Jan 2, 2026
125f4cd
refactor: split codebase into modular package structure
maximiliancw Jan 2, 2026
dc9a4b8
Add progress indicators for batch operations:
maximiliancw Jan 2, 2026
06c2652
Improve error recovery and graceful degradation:
maximiliancw Jan 2, 2026
e360e4e
Replace CompanyDict TypedDict with Company Pydantic model
maximiliancw Jan 3, 2026
1d67110
Add backward compatibility for dict inputs in parser methods
maximiliancw Jan 3, 2026
78c5755
Remove unnecessary empty lines in models.py
maximiliancw Jan 3, 2026
36aa400
Replace dict access with attribute access on Company objects:
maximiliancw Jan 3, 2026
607142d
Extract duplicate retry/rate-limit decorator pattern:
maximiliancw Jan 3, 2026
f81f8f9
Use Pydantic's model_dump() instead to_dict():
maximiliancw Jan 3, 2026
01a1381
Remove deprecated cache methods from HandelsRegister class:
maximiliancw Jan 3, 2026
21bc31f
Remove incomplete _fetch_detail_alternative() implementation:
maximiliancw Jan 3, 2026
af8c26a
Update pr_company_info() to accept Company instead of dict:
maximiliancw Jan 3, 2026
c1d652f
Improve error messages with better context:
maximiliancw Jan 3, 2026
d8d4f60
Bump version to 0.3.0 for breaking changes:
maximiliancw Jan 3, 2026
4d637a6
Update documentation to reflect new package structure:
maximiliancw Jan 3, 2026
8f80a75
Add new author to pyproject.toml
maximiliancw Jan 3, 2026
5391a2a
Add ruff for linting and formatting
maximiliancw Jan 3, 2026
f04fcb2
Add pre-commit hook and GH action for linting using ruff
maximiliancw Jan 3, 2026
c9b4a70
Lint and format entire codebase using ruff
maximiliancw Jan 3, 2026
87dd1bd
Enhance pytest configuration and add shared fixture for integration t…
maximiliancw Jan 3, 2026
394f37f
Extend .gitignore
maximiliancw Jan 3, 2026
15a622d
Use Python 3.12 for lint workflow
maximiliancw Jan 3, 2026
cdb2f03
Align test matrix with supported Python versions:
maximiliancw Jan 3, 2026
8e14ded
Use Optional for Python 3.9 compatibility:
maximiliancw Jan 3, 2026
a921600
Add GitHub Actions workflow for docs deployment:
maximiliancw Jan 3, 2026
b238b12
Fix CI workflow for docs deployment:
maximiliancw Jan 3, 2026
9aa5889
Update mkdocs configuration for improved clarity and consistency:
maximiliancw Jan 3, 2026
a3ee4cb
Update docs to reflect changes in main function reference:
maximiliancw Jan 3, 2026
a893070
Add shorter alias for CLI and update docs accordingly:
maximiliancw Jan 3, 2026
2174242
Enhance search functionality and UX/DX with enum support for states a…
maximiliancw Jan 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Deploy Documentation

on:
workflow_run:
workflows: ["Lint", "Run Python 🐍 tests"]
types:
- completed
branches:
- main

jobs:
# Check if docs changed and all checks passed
check-and-deploy:
runs-on: ubuntu-latest
# Only proceed if the triggering workflow succeeded
if: github.event.workflow_run.conclusion == 'success'
permissions:
contents: read
pages: write
id-token: write
actions: read
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_branch }}

# Check if both required workflows have passed for this commit
- name: Check workflow status
id: check-workflows
uses: actions/github-script@v7
with:
script: |
const commitSha = context.payload.workflow_run.head_sha;
const owner = context.repo.owner;
const repo = context.repo.repo;

// Get all workflow runs for this commit
const { data: runs } = await github.rest.actions.listWorkflowRunsForRepo({
owner,
repo,
head_sha: commitSha,
per_page: 100
});

// Check if both Lint and test workflows passed
const lintRun = runs.workflow_runs.find(run => run.name === 'Lint');
const testRun = runs.workflow_runs.find(run => run.name === 'Run Python 🐍 tests');

const bothPassed =
lintRun?.conclusion === 'success' &&
testRun?.conclusion === 'success';

core.setOutput('both-passed', bothPassed);

# Check if docs changed in this commit
- uses: dorny/paths-filter@v3
id: filter
if: steps.check-workflows.outputs.both-passed == 'true'
with:
filters: |
docs:
- 'docs/**'
- 'mkdocs.yml'

# Only deploy if docs actually changed and both workflows passed
- name: Install uv
if: steps.filter.outputs.docs == 'true'
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Set up Python
if: steps.filter.outputs.docs == 'true'
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies
if: steps.filter.outputs.docs == 'true'
run: |
uv sync --extra docs --extra dev
# Ensure package is installed in editable mode for mkdocstrings
uv pip install -e ".[docs]"
- name: Setup Pages
if: steps.filter.outputs.docs == 'true'
uses: actions/configure-pages@v5
- name: Build with MkDocs
if: steps.filter.outputs.docs == 'true'
run: uv run mkdocs build
- name: Upload artifact
if: steps.filter.outputs.docs == 'true'
uses: actions/upload-pages-artifact@v3
with:
path: ./site
- name: Deploy to GitHub Pages
if: steps.filter.outputs.docs == 'true'
id: deployment
uses: actions/deploy-pages@v4

19 changes: 19 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Lint

on: [push, pull_request]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install ruff
run: pip install ruff==0.6.3
- name: Run ruff check
run: ruff check .
- name: Run ruff format check
run: ruff format --check .

6 changes: 3 additions & 3 deletions .github/workflows/runtests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
fail-fast: false

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down
69 changes: 69 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,88 @@
.idea/
*.xml
*.iml
.vscode/
*.swp
*.swo
*~
.project
.pydevproject
.settings/

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python

# Environments
.env
.env.*
!.env.example
.venv/
venv/
env/
ENV/
env.bak/
venv.bak/

# Distribution / Packaging
dist/
build/
*.egg-info/
.eggs/
*.egg
*.whl
pip-log.txt
pip-delete-this-directory.txt

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.nox/
.hypothesis/
.pytest_cache/
test-results/
*.cover
*.log
.cache

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/
.ruff_cache/

# Jupyter Notebook
.ipynb_checkpoints
*.ipynb_checkpoints/

# MkDocs
site/
.mkdocs_cache/

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
desktop.ini

# Temporary files
*.tmp
*.temp
*.bak
*.swp
*~

# Pre-commit
.pre-commit-config.yaml.bak
8 changes: 8 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.3
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format

15 changes: 0 additions & 15 deletions Pipfile

This file was deleted.

Loading