deltaglider 0.1.0__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 (51) hide show
  1. deltaglider-0.1.0/.gitignore +84 -0
  2. deltaglider-0.1.0/CONTRIBUTING.md +141 -0
  3. deltaglider-0.1.0/LICENSE +21 -0
  4. deltaglider-0.1.0/PKG-INFO +517 -0
  5. deltaglider-0.1.0/README.md +472 -0
  6. deltaglider-0.1.0/docs/aws-s3-cli-compatibility.md +219 -0
  7. deltaglider-0.1.0/docs/case-study-readonlyrest.md +347 -0
  8. deltaglider-0.1.0/docs/deltaglider.png +0 -0
  9. deltaglider-0.1.0/docs/deltaglider_architecture_guidelines.txt +159 -0
  10. deltaglider-0.1.0/docs/deltaglider_metadata_schema.txt +60 -0
  11. deltaglider-0.1.0/docs/deltaglider_specs.txt +105 -0
  12. deltaglider-0.1.0/pyproject.toml +153 -0
  13. deltaglider-0.1.0/src/deltaglider/__init__.py +3 -0
  14. deltaglider-0.1.0/src/deltaglider/adapters/__init__.py +19 -0
  15. deltaglider-0.1.0/src/deltaglider/adapters/cache_fs.py +49 -0
  16. deltaglider-0.1.0/src/deltaglider/adapters/clock_utc.py +13 -0
  17. deltaglider-0.1.0/src/deltaglider/adapters/diff_xdelta.py +57 -0
  18. deltaglider-0.1.0/src/deltaglider/adapters/hash_sha.py +29 -0
  19. deltaglider-0.1.0/src/deltaglider/adapters/logger_std.py +65 -0
  20. deltaglider-0.1.0/src/deltaglider/adapters/metrics_noop.py +19 -0
  21. deltaglider-0.1.0/src/deltaglider/adapters/storage_s3.py +140 -0
  22. deltaglider-0.1.0/src/deltaglider/app/__init__.py +1 -0
  23. deltaglider-0.1.0/src/deltaglider/app/cli/__init__.py +1 -0
  24. deltaglider-0.1.0/src/deltaglider/app/cli/aws_compat.py +269 -0
  25. deltaglider-0.1.0/src/deltaglider/app/cli/main.py +689 -0
  26. deltaglider-0.1.0/src/deltaglider/app/cli/sync.py +249 -0
  27. deltaglider-0.1.0/src/deltaglider/core/__init__.py +41 -0
  28. deltaglider-0.1.0/src/deltaglider/core/errors.py +49 -0
  29. deltaglider-0.1.0/src/deltaglider/core/models.py +133 -0
  30. deltaglider-0.1.0/src/deltaglider/core/service.py +586 -0
  31. deltaglider-0.1.0/src/deltaglider/ports/__init__.py +21 -0
  32. deltaglider-0.1.0/src/deltaglider/ports/cache.py +24 -0
  33. deltaglider-0.1.0/src/deltaglider/ports/clock.py +12 -0
  34. deltaglider-0.1.0/src/deltaglider/ports/diff.py +16 -0
  35. deltaglider-0.1.0/src/deltaglider/ports/hash.py +12 -0
  36. deltaglider-0.1.0/src/deltaglider/ports/logger.py +35 -0
  37. deltaglider-0.1.0/src/deltaglider/ports/metrics.py +19 -0
  38. deltaglider-0.1.0/src/deltaglider/ports/storage.py +56 -0
  39. deltaglider-0.1.0/src/deltaglider/py.typed +0 -0
  40. deltaglider-0.1.0/tests/__init__.py +1 -0
  41. deltaglider-0.1.0/tests/conftest.py +111 -0
  42. deltaglider-0.1.0/tests/e2e/__init__.py +1 -0
  43. deltaglider-0.1.0/tests/e2e/test_localstack.py +183 -0
  44. deltaglider-0.1.0/tests/integration/__init__.py +1 -0
  45. deltaglider-0.1.0/tests/integration/test_aws_cli_commands_v2.py +197 -0
  46. deltaglider-0.1.0/tests/integration/test_full_workflow.py +189 -0
  47. deltaglider-0.1.0/tests/integration/test_get_command.py +146 -0
  48. deltaglider-0.1.0/tests/integration/test_xdelta.py +105 -0
  49. deltaglider-0.1.0/tests/unit/__init__.py +1 -0
  50. deltaglider-0.1.0/tests/unit/test_adapters.py +211 -0
  51. deltaglider-0.1.0/tests/unit/test_core_service.py +240 -0
@@ -0,0 +1,84 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg
7
+ *.egg-info/
8
+ dist/
9
+ build/
10
+ eggs/
11
+ .eggs/
12
+ lib/
13
+ lib64/
14
+ parts/
15
+ sdist/
16
+ var/
17
+ wheels/
18
+ pip-wheel-metadata/
19
+ share/python-wheels/
20
+ *.manifest
21
+ *.spec
22
+
23
+ # Virtual environments
24
+ .env
25
+ .venv
26
+ env/
27
+ venv/
28
+ ENV/
29
+ env.bak/
30
+ venv.bak/
31
+
32
+ # UV
33
+ .uv/
34
+ uv.lock
35
+
36
+ # Testing
37
+ .tox/
38
+ .nox/
39
+ .coverage
40
+ .coverage.*
41
+ .cache
42
+ nosetests.xml
43
+ coverage.xml
44
+ *.cover
45
+ .hypothesis/
46
+ .pytest_cache/
47
+
48
+ # IDEs
49
+ .vscode/
50
+ .idea/
51
+ *.swp
52
+ *.swo
53
+ *~
54
+ .DS_Store
55
+
56
+ # Project specific
57
+ *.delta
58
+ reference.bin
59
+ /cache/
60
+ .deltaglider-cache/
61
+
62
+ # Test data
63
+ 1.66.1/
64
+ test_*.txt
65
+ test_*.zip
66
+ *.dmg
67
+ *.tar.gz
68
+ app_*.zip
69
+ binary_*.exe
70
+ config_*.json
71
+ content_*/
72
+ recovered_*.zip
73
+
74
+ # MinIO/S3 test files
75
+ /tmp/
76
+ /test-data/
77
+
78
+ # Documentation builds
79
+ docs/_build/
80
+ docs/_static/
81
+ docs/_templates/
82
+
83
+ # Logs
84
+ *.log
@@ -0,0 +1,141 @@
1
+ # Contributing to DeltaGlider
2
+
3
+ We love your input! We want to make contributing to DeltaGlider as easy and transparent as possible, whether it's:
4
+
5
+ - Reporting a bug
6
+ - Discussing the current state of the code
7
+ - Submitting a fix
8
+ - Proposing new features
9
+ - Becoming a maintainer
10
+
11
+ ## We Develop with Github
12
+
13
+ We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
14
+
15
+ ## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html)
16
+
17
+ Pull requests are the best way to propose changes to the codebase:
18
+
19
+ 1. Fork the repo and create your branch from `main`.
20
+ 2. If you've added code that should be tested, add tests.
21
+ 3. If you've changed APIs, update the documentation.
22
+ 4. Ensure the test suite passes.
23
+ 5. Make sure your code lints.
24
+ 6. Issue that pull request!
25
+
26
+ ## Any contributions you make will be under the MIT Software License
27
+
28
+ In short, when you submit code changes, your submissions are understood to be under the same [MIT License](LICENSE) that covers the project. Feel free to contact the maintainers if that's a concern.
29
+
30
+ ## Report bugs using Github's [issues](https://github.com/beshu-tech/deltaglider/issues)
31
+
32
+ We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/beshu-tech/deltaglider/issues/new).
33
+
34
+ **Great Bug Reports** tend to have:
35
+
36
+ - A quick summary and/or background
37
+ - Steps to reproduce
38
+ - Be specific!
39
+ - Give sample code if you can
40
+ - What you expected would happen
41
+ - What actually happens
42
+ - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
43
+
44
+ ## Development Setup
45
+
46
+ 1. Install UV package manager:
47
+ ```bash
48
+ curl -LsSf https://astral.sh/uv/install.sh | sh
49
+ ```
50
+
51
+ 2. Clone the repository:
52
+ ```bash
53
+ git clone https://github.com/beshu-tech/deltaglider.git
54
+ cd deltaglider
55
+ ```
56
+
57
+ 3. Install development dependencies:
58
+ ```bash
59
+ uv pip install -e ".[dev]"
60
+ ```
61
+
62
+ 4. Run tests:
63
+ ```bash
64
+ uv run pytest
65
+ ```
66
+
67
+ 5. Run linting:
68
+ ```bash
69
+ uv run ruff check .
70
+ uv run ruff format .
71
+ ```
72
+
73
+ 6. Run type checking:
74
+ ```bash
75
+ uv run mypy src
76
+ ```
77
+
78
+ ## Testing
79
+
80
+ - Write tests for any new functionality
81
+ - Ensure all tests pass before submitting PR
82
+ - Aim for >90% test coverage for new code
83
+ - Use `pytest` for testing
84
+
85
+ ### Running specific test categories:
86
+ ```bash
87
+ # Unit tests only
88
+ uv run pytest -m unit
89
+
90
+ # Integration tests
91
+ uv run pytest -m integration
92
+
93
+ # End-to-end tests (requires Docker)
94
+ docker-compose up -d
95
+ uv run pytest -m e2e
96
+ ```
97
+
98
+ ## Code Style
99
+
100
+ - We use `ruff` for linting and formatting
101
+ - Follow PEP 8 guidelines
102
+ - Use type hints for all function signatures
103
+ - Write docstrings for all public functions and classes
104
+
105
+ ## Pull Request Process
106
+
107
+ 1. Update the README.md with details of changes to the interface, if applicable
108
+ 2. Update the docs/ with any new functionality
109
+ 3. The PR will be merged once you have the sign-off of at least one maintainer
110
+
111
+ ## Performance Considerations
112
+
113
+ DeltaGlider is performance-critical software. When contributing:
114
+
115
+ - Profile your changes if they affect the core delta engine
116
+ - Consider memory usage for large files
117
+ - Test with real-world data sizes (GB-scale files)
118
+ - Document any performance implications
119
+
120
+ ## Ideas for Contribution
121
+
122
+ ### Good First Issues
123
+ - Add support for more file extensions in delta detection
124
+ - Improve error messages and user feedback
125
+ - Add progress bars for large file operations
126
+ - Write more integration tests
127
+
128
+ ### Advanced Features
129
+ - Implement parallel delta generation
130
+ - Add support for other diff algorithms beyond xdelta3
131
+ - Create a web UI for managing deltafied files
132
+ - Implement cloud-native reference management
133
+ - Add support for other S3-compatible providers (Backblaze B2, Wasabi)
134
+
135
+ ## Questions?
136
+
137
+ Feel free to open an issue with the "question" label or reach out to the maintainers at support@beshu.tech.
138
+
139
+ ## License
140
+
141
+ By contributing, you agree that your contributions will be licensed under the MIT License.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Beshu Tech Limited
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.