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.
- deltaglider-0.1.0/.gitignore +84 -0
- deltaglider-0.1.0/CONTRIBUTING.md +141 -0
- deltaglider-0.1.0/LICENSE +21 -0
- deltaglider-0.1.0/PKG-INFO +517 -0
- deltaglider-0.1.0/README.md +472 -0
- deltaglider-0.1.0/docs/aws-s3-cli-compatibility.md +219 -0
- deltaglider-0.1.0/docs/case-study-readonlyrest.md +347 -0
- deltaglider-0.1.0/docs/deltaglider.png +0 -0
- deltaglider-0.1.0/docs/deltaglider_architecture_guidelines.txt +159 -0
- deltaglider-0.1.0/docs/deltaglider_metadata_schema.txt +60 -0
- deltaglider-0.1.0/docs/deltaglider_specs.txt +105 -0
- deltaglider-0.1.0/pyproject.toml +153 -0
- deltaglider-0.1.0/src/deltaglider/__init__.py +3 -0
- deltaglider-0.1.0/src/deltaglider/adapters/__init__.py +19 -0
- deltaglider-0.1.0/src/deltaglider/adapters/cache_fs.py +49 -0
- deltaglider-0.1.0/src/deltaglider/adapters/clock_utc.py +13 -0
- deltaglider-0.1.0/src/deltaglider/adapters/diff_xdelta.py +57 -0
- deltaglider-0.1.0/src/deltaglider/adapters/hash_sha.py +29 -0
- deltaglider-0.1.0/src/deltaglider/adapters/logger_std.py +65 -0
- deltaglider-0.1.0/src/deltaglider/adapters/metrics_noop.py +19 -0
- deltaglider-0.1.0/src/deltaglider/adapters/storage_s3.py +140 -0
- deltaglider-0.1.0/src/deltaglider/app/__init__.py +1 -0
- deltaglider-0.1.0/src/deltaglider/app/cli/__init__.py +1 -0
- deltaglider-0.1.0/src/deltaglider/app/cli/aws_compat.py +269 -0
- deltaglider-0.1.0/src/deltaglider/app/cli/main.py +689 -0
- deltaglider-0.1.0/src/deltaglider/app/cli/sync.py +249 -0
- deltaglider-0.1.0/src/deltaglider/core/__init__.py +41 -0
- deltaglider-0.1.0/src/deltaglider/core/errors.py +49 -0
- deltaglider-0.1.0/src/deltaglider/core/models.py +133 -0
- deltaglider-0.1.0/src/deltaglider/core/service.py +586 -0
- deltaglider-0.1.0/src/deltaglider/ports/__init__.py +21 -0
- deltaglider-0.1.0/src/deltaglider/ports/cache.py +24 -0
- deltaglider-0.1.0/src/deltaglider/ports/clock.py +12 -0
- deltaglider-0.1.0/src/deltaglider/ports/diff.py +16 -0
- deltaglider-0.1.0/src/deltaglider/ports/hash.py +12 -0
- deltaglider-0.1.0/src/deltaglider/ports/logger.py +35 -0
- deltaglider-0.1.0/src/deltaglider/ports/metrics.py +19 -0
- deltaglider-0.1.0/src/deltaglider/ports/storage.py +56 -0
- deltaglider-0.1.0/src/deltaglider/py.typed +0 -0
- deltaglider-0.1.0/tests/__init__.py +1 -0
- deltaglider-0.1.0/tests/conftest.py +111 -0
- deltaglider-0.1.0/tests/e2e/__init__.py +1 -0
- deltaglider-0.1.0/tests/e2e/test_localstack.py +183 -0
- deltaglider-0.1.0/tests/integration/__init__.py +1 -0
- deltaglider-0.1.0/tests/integration/test_aws_cli_commands_v2.py +197 -0
- deltaglider-0.1.0/tests/integration/test_full_workflow.py +189 -0
- deltaglider-0.1.0/tests/integration/test_get_command.py +146 -0
- deltaglider-0.1.0/tests/integration/test_xdelta.py +105 -0
- deltaglider-0.1.0/tests/unit/__init__.py +1 -0
- deltaglider-0.1.0/tests/unit/test_adapters.py +211 -0
- 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.
|