-
Notifications
You must be signed in to change notification settings - Fork 0
Create DataJam for Python. Because reasons. #58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ericburcham
wants to merge
17
commits into
develop
Choose a base branch
from
feature/support-python
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Implement complete Python port of .NET DataJam with: - Core abstractions mirroring .NET interfaces (IDataContext, IRepository, IUnitOfWork, etc.) - SQLAlchemy-based implementation with async support - Oracle-specific utilities for case sensitivity and sequences - Comprehensive build automation using Nox (equivalent to NUKE) - Modern Python tooling (ruff, black, mypy, pytest) with proper type hints - Project structure following Python packaging standards - Test framework foundation with TestContainers support The implementation maintains the same architectural patterns as the .NET version while being properly adapted for Python idioms and async/await patterns.
Complete the test infrastructure for Python DataJam implementation: - Oracle TestContainer manager with proper lifecycle management - Family domain test entities (Person, Father, Mother, Child) with inheritance - SQLAlchemy entity mappings with Oracle naming conventions - Integration test framework using pytest and async fixtures - Working Oracle Free container setup with connection testing - Test support utilities and domain-specific queries - Updated dependencies to use modern python-oracledb driver The test infrastructure now supports full integration testing against real Oracle databases using TestContainers, following the same patterns as the .NET implementation while being adapted for Python async/await.
- Add comprehensive GitHub Actions workflows for both .NET and Python builds - Update README with detailed usage examples and Oracle support documentation - Fix SQLAlchemy 2.0 compatibility by using DeclarativeBase instead of deprecated declarative_base - Clean up unused imports in Oracle container manager - All linting and type checking now passes
- Fix Oracle sequence generation by using explicit Sequence objects instead of autoincrement - Resolve Oracle table existence checking by bypassing checkfirst parameter - Add comprehensive unit test suite covering Repository, DataContext, Domain, and Oracle utilities - Fix async event loop management in pytest fixtures by using function-scoped containers - Improve SQLAlchemy 2.0 compatibility with DeclarativeBase and proper type handling - Add mypy type ignores for SQLAlchemy complex typing edge cases - All 36 tests now passing with 76% code coverage and complete build pipeline working
- Remove unused type ignore comments that were causing mypy errors - Add back required type ignore for SQLAlchemy's first() return type - Clean up Oracle utils type checking to resolve assignment warnings - All linting checks now pass in both local and CI environments
…ironments - Pin exact tool versions (ruff 0.8.0, black 24.10.0, mypy 1.13.0, isort 5.13.2) in pyproject.toml and noxfile.py - Create unified _run_lint_tools() function used by all nox sessions (lint, datajam, ci) - Add comprehensive mypy overrides for SQLAlchemy typing edge cases that vary by environment - Configure GitHub Actions to use identical tool versions as local development - Fix import sorting and remove unused type ignore comments - All linting now produces identical results in nox -s lint, nox -s datajam, and CI environments
- Add .claude/settings.local.json to .gitignore and untrack from git - Update .github/dependabot.yml to include Python package ecosystem monitoring - Remove obsolete .github/workflows/nuke-build.yml (replaced by dotnet-build.yml) - Update .github/workflows/dotnet-build.yml to trigger on all branches instead of specific branch list - Repository now properly configured for both .NET and Python development workflows
- Update PYTHON_VERSIONS in noxfile.py from 3.13 to [3.10, 3.11, 3.12] - Align nox configuration with GitHub Actions runner availability - Resolves test session failures due to missing Python 3.13 interpreter in CI
- Revert noxfile.py back to Python 3.13 to match local development environment - Update GitHub Actions matrix to use Python 3.13 instead of older versions - Ensures consistent behavior between local development and CI/CD pipeline - All nox sessions (test, lint) now work consistently in both environments
Remove invalid versioning-strategy option.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is only here to trigger merge checks.