Skip to content

Commit 3cc78c5

Browse files
committed
Initial open-source release
0 parents  commit 3cc78c5

48 files changed

Lines changed: 2600 additions & 0 deletions

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
branches: [main, master]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
python-version: ["3.10", "3.11", "3.12", "3.13"]
16+
include:
17+
- python-version: "3.14"
18+
experimental: true
19+
20+
continue-on-error: ${{ matrix.experimental || false }}
21+
22+
steps:
23+
- uses: actions/checkout@v4
24+
25+
- name: Set up Python ${{ matrix.python-version }}
26+
uses: actions/setup-python@v5
27+
with:
28+
python-version: ${{ matrix.python-version }}
29+
allow-prereleases: true
30+
31+
- name: Install dependencies
32+
run: pip install -e .[dev]
33+
34+
- name: Run tests
35+
run: pytest tests -q

.gitignore

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
__pycache__/
2+
.pytest_cache/
3+
*.pyc
4+
*.pyo
5+
.coverage
6+
htmlcov/
7+
.mypy_cache/
8+
.venv/
9+
venv/
10+
backups/
11+
dist/
12+
build/
13+
*.egg-info/
14+
.idea/
15+
.vscode/
16+
*.iml
17+
.tmp-pytest-*/
18+
pytest_tmp/
19+
engine_test_tmp_*/
20+
uv.lock

CONTRIBUTING.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Contributing
2+
3+
## Before You Start
4+
5+
Open an issue first for anything beyond a small fix. This saves everyone time if the change is out of scope or needs a different approach.
6+
7+
## Development Setup
8+
9+
```bash
10+
pip install -e .[dev]
11+
pytest tests -q
12+
```
13+
14+
To run a single test file:
15+
16+
```bash
17+
pytest tests/test_engine.py -v
18+
```
19+
20+
## Pull Requests
21+
22+
- Keep each PR focused on one change
23+
- Add or update tests for behavior changes
24+
- Update both README.en.md and README.zh-CN.md if the user-facing behavior changes
25+
26+
## What Belongs Here
27+
28+
Improvements to backup execution, YAML configuration, diff generation, CLI usability, and documentation.
29+
30+
Enterprise-only integrations (credential vaults, web APIs, alerting systems) should live in separate repositories.

LICENSE

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
Apache License
2+
Version 2.0, January 2004
3+
http://www.apache.org/licenses/
4+
5+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6+
7+
1. Definitions.
8+
9+
"License" shall mean the terms and conditions for use, reproduction, and
10+
distribution as defined by Sections 1 through 9 of this document.
11+
12+
"Licensor" shall mean the copyright owner or entity authorized by the
13+
copyright owner that is granting the License.
14+
15+
"Legal Entity" shall mean the union of the acting entity and all other
16+
entities that control, are controlled by, or are under common control with
17+
that entity. For the purposes of this definition, "control" means (i) the
18+
power, direct or indirect, to cause the direction or management of such
19+
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
20+
(50%) or more of the outstanding shares, or (iii) beneficial ownership of
21+
such entity.
22+
23+
"You" (or "Your") shall mean an individual or Legal Entity exercising
24+
permissions granted by this License.
25+
26+
"Source" form shall mean the preferred form for making modifications,
27+
including but not limited to software source code, documentation source,
28+
and configuration files.
29+
30+
"Object" form shall mean any form resulting from mechanical transformation or
31+
translation of a Source form, including but not limited to compiled object
32+
code, generated documentation, and conversions to other media types.
33+
34+
"Work" shall mean the work of authorship, whether in Source or Object form,
35+
made available under the License, as indicated by a copyright notice that is
36+
included in or attached to the work.
37+
38+
"Derivative Works" shall mean any work, whether in Source or Object form,
39+
that is based on or derived from the Work and for which the editorial
40+
revisions, annotations, elaborations, or other modifications represent, as a
41+
whole, an original work of authorship. For the purposes of this License,
42+
Derivative Works shall not include works that remain separable from, or
43+
merely link (or bind by name) to the interfaces of, the Work and Derivative
44+
Works thereof.
45+
46+
"Contribution" shall mean any work of authorship, including the original
47+
version of the Work and any modifications or additions to that Work or
48+
Derivative Works thereof, that is intentionally submitted to Licensor for
49+
inclusion in the Work by the copyright owner or by an individual or Legal
50+
Entity authorized to submit on behalf of the copyright owner.
51+
52+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
53+
of whom a Contribution has been received by Licensor and subsequently
54+
incorporated within the Work.
55+
56+
2. Grant of Copyright License. Subject to the terms and conditions of this
57+
License, each Contributor hereby grants to You a perpetual, worldwide,
58+
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
59+
reproduce, prepare Derivative Works of, publicly display, publicly perform,
60+
sublicense, and distribute the Work and such Derivative Works in Source or
61+
Object form.
62+
63+
3. Grant of Patent License. Subject to the terms and conditions of this
64+
License, each Contributor hereby grants to You a perpetual, worldwide,
65+
non-exclusive, no-charge, royalty-free, irrevocable patent license to make,
66+
have made, use, offer to sell, sell, import, and otherwise transfer the Work.
67+
68+
4. Redistribution. You may reproduce and distribute copies of the Work or
69+
Derivative Works thereof in any medium, with or without modifications, and in
70+
Source or Object form, provided that You meet the conditions of the License.
71+
72+
5. Submission of Contributions. Unless You explicitly state otherwise, any
73+
Contribution intentionally submitted for inclusion in the Work by You to the
74+
Licensor shall be under the terms and conditions of this License.
75+
76+
6. Trademarks. This License does not grant permission to use the trade names,
77+
trademarks, service marks, or product names of the Licensor, except as
78+
required for reasonable and customary use in describing the origin of the
79+
Work.
80+
81+
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
82+
writing, Licensor provides the Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR
83+
CONDITIONS OF ANY KIND, either express or implied.
84+
85+
8. Limitation of Liability. In no event and under no legal theory shall any
86+
Contributor be liable to You for damages arising as a result of this License
87+
or out of the use or inability to use the Work.
88+
89+
9. Accepting Warranty or Additional Liability. While redistributing the Work
90+
or Derivative Works thereof, You may choose to offer support, warranty,
91+
indemnity, or other liability obligations consistent with this License.

0 commit comments

Comments
 (0)