datalegion 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.
- datalegion-0.1.0/.claude/CLAUDE.md +27 -0
- datalegion-0.1.0/.github/CODEOWNERS +1 -0
- datalegion-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +47 -0
- datalegion-0.1.0/.github/ISSUE_TEMPLATE/config.yml +1 -0
- datalegion-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +25 -0
- datalegion-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- datalegion-0.1.0/.github/dependabot.yml +34 -0
- datalegion-0.1.0/.github/logo-light.svg +54 -0
- datalegion-0.1.0/.github/logo.svg +54 -0
- datalegion-0.1.0/.github/workflows/release.yml +148 -0
- datalegion-0.1.0/.github/workflows/security.yml +73 -0
- datalegion-0.1.0/.github/workflows/test.yml +109 -0
- datalegion-0.1.0/.gitignore +14 -0
- datalegion-0.1.0/.pre-commit-config.yaml +9 -0
- datalegion-0.1.0/CODE_OF_CONDUCT.md +29 -0
- datalegion-0.1.0/CONTRIBUTING.md +39 -0
- datalegion-0.1.0/LICENSE +21 -0
- datalegion-0.1.0/PKG-INFO +24 -0
- datalegion-0.1.0/README.md +285 -0
- datalegion-0.1.0/SECURITY.md +9 -0
- datalegion-0.1.0/pyproject.toml +76 -0
- datalegion-0.1.0/scripts/__init__.py +0 -0
- datalegion-0.1.0/scripts/lint.py +43 -0
- datalegion-0.1.0/scripts/test.py +16 -0
- datalegion-0.1.0/src/datalegion/__init__.py +113 -0
- datalegion-0.1.0/src/datalegion/_client.py +1313 -0
- datalegion-0.1.0/src/datalegion/_exceptions.py +51 -0
- datalegion-0.1.0/src/datalegion/_types.py +438 -0
- datalegion-0.1.0/src/datalegion/types.py +443 -0
- datalegion-0.1.0/tests/__init__.py +0 -0
- datalegion-0.1.0/tests/test_client.py +433 -0
- datalegion-0.1.0/uv.lock +530 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
Python SDK for the Data Legion API. Provides sync (`DataLegion`) and async (`AsyncDataLegion`) clients for person/company enrichment, search, discover, and utility endpoints. All responses are Pydantic v2 models with dot access and autocomplete.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
uv sync --dev # Install dependencies
|
|
9
|
+
uv run lint # Lint (ruff format + check, mdformat)
|
|
10
|
+
uv run pytest tests/ # Run tests (needs DATALEGION_API_KEY env var)
|
|
11
|
+
uv build # Build package
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Architecture
|
|
15
|
+
|
|
16
|
+
- `src/datalegion/__init__.py` - Package exports (clients, exceptions, response types)
|
|
17
|
+
- `src/datalegion/_client.py` - Sync + async HTTP clients with resource namespaces and `@overload` for enrich return types
|
|
18
|
+
- `src/datalegion/_exceptions.py` - Exception hierarchy (AuthenticationError, RateLimitError, etc.)
|
|
19
|
+
- `src/datalegion/_types.py` - Pydantic v2 response models (PersonResponse, CompanyResponse, etc.)
|
|
20
|
+
- `scripts/lint.py` - Lint script
|
|
21
|
+
- `tests/test_client.py` - Integration tests (call real API)
|
|
22
|
+
|
|
23
|
+
## Guidelines
|
|
24
|
+
|
|
25
|
+
- Use `uv run` for all commands
|
|
26
|
+
- Run lint and tests after changes
|
|
27
|
+
- Keep it simple, no over-engineering
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @datalegion-ai/sdk-maintainers
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in the Python SDK
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: description
|
|
7
|
+
attributes:
|
|
8
|
+
label: Description
|
|
9
|
+
description: A clear description of the bug.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: reproduction
|
|
14
|
+
attributes:
|
|
15
|
+
label: Steps to Reproduce
|
|
16
|
+
description: Minimal code example or steps to reproduce the issue.
|
|
17
|
+
render: python
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: expected
|
|
22
|
+
attributes:
|
|
23
|
+
label: Expected Behavior
|
|
24
|
+
description: What you expected to happen.
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: actual
|
|
29
|
+
attributes:
|
|
30
|
+
label: Actual Behavior
|
|
31
|
+
description: What actually happened. Include any error messages or tracebacks.
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: input
|
|
35
|
+
id: sdk-version
|
|
36
|
+
attributes:
|
|
37
|
+
label: SDK Version
|
|
38
|
+
description: Output of `pip show datalegion | grep Version`
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
- type: input
|
|
42
|
+
id: python-version
|
|
43
|
+
attributes:
|
|
44
|
+
label: Python Version
|
|
45
|
+
description: Output of `python --version`
|
|
46
|
+
validations:
|
|
47
|
+
required: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest a feature or improvement
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: description
|
|
7
|
+
attributes:
|
|
8
|
+
label: Description
|
|
9
|
+
description: A clear description of the feature you'd like.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: use-case
|
|
14
|
+
attributes:
|
|
15
|
+
label: Use Case
|
|
16
|
+
description: Why do you need this? What problem does it solve?
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: alternatives
|
|
21
|
+
attributes:
|
|
22
|
+
label: Alternatives Considered
|
|
23
|
+
description: Any workarounds or alternatives you've considered.
|
|
24
|
+
validations:
|
|
25
|
+
required: false
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
day: "sunday"
|
|
8
|
+
time: "09:00"
|
|
9
|
+
timezone: "America/Los_Angeles"
|
|
10
|
+
labels:
|
|
11
|
+
- "dependencies"
|
|
12
|
+
- "python"
|
|
13
|
+
commit-message:
|
|
14
|
+
prefix: "chore(deps)"
|
|
15
|
+
groups:
|
|
16
|
+
minor-patch:
|
|
17
|
+
patterns:
|
|
18
|
+
- "*"
|
|
19
|
+
update-types:
|
|
20
|
+
- "minor"
|
|
21
|
+
- "patch"
|
|
22
|
+
|
|
23
|
+
- package-ecosystem: "github-actions"
|
|
24
|
+
directory: "/"
|
|
25
|
+
schedule:
|
|
26
|
+
interval: "weekly"
|
|
27
|
+
day: "sunday"
|
|
28
|
+
time: "09:00"
|
|
29
|
+
timezone: "America/Los_Angeles"
|
|
30
|
+
labels:
|
|
31
|
+
- "dependencies"
|
|
32
|
+
- "github-actions"
|
|
33
|
+
commit-message:
|
|
34
|
+
prefix: "chore(deps)"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<svg width="260" height="80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="goldGrad">
|
|
4
|
+
<stop stop-color="#905e26" offset="0"/>
|
|
5
|
+
<stop stop-color="#f5ec9b" offset="0.5"/>
|
|
6
|
+
<stop stop-color="#905e26" offset="1"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<clipPath id="iconClip">
|
|
9
|
+
<rect x="4" y="8" width="64" height="64" rx="14" ry="14"/>
|
|
10
|
+
</clipPath>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Icon scaled to fit -->
|
|
14
|
+
<g>
|
|
15
|
+
<g transform="translate(4, 8) scale(0.05333)">
|
|
16
|
+
<g transform="scale(1.4411527580125738) translate(-83.81662835015196, -83.66665734185113)">
|
|
17
|
+
<g fill="url(#goldGrad)">
|
|
18
|
+
<g>
|
|
19
|
+
<path d="M661.8,226L637,215.3c-12.6-5.4-27.4,0.4-32.8,13l-36.9,85.7L269.8,185.9c-4.2-34.1-33.4-60.6-68.6-60.6 c-38.1,0-69.2,31-69.2,69.1c0,38.1,31,69.2,69.2,69.2c12.3,0,23.9-3.2,33.9-8.9l322.4,138.9l27.1,11.7c10.8,4.7,23.3,1,30-8.2 c1.1-1.5,2-3.1,2.7-4.8l11.1-25.7l0.2-0.4l46.3-107.5C680.3,246.2,674.4,231.5,661.8,226z M201.2,231.9c-2.4,0-4.7-0.2-7-0.7 c-17.3-3.3-30.4-18.5-30.4-36.8c0-20.6,16.8-37.4,37.4-37.4c11.2,0,21.2,4.9,28,12.7c5.8,6.6,9.4,15.3,9.4,24.8 C238.6,215.1,221.8,231.9,201.2,231.9z"/>
|
|
20
|
+
<path d="M628.3,366.7c-0.1,0.3-0.2,0.5-0.3,0.8l-10.7,24.8c0,0,0,0.1-0.1,0.1L628.3,366.7z"/>
|
|
21
|
+
<path d="M545.3,279.8L387.9,212c-6.1-2.6-8.9-9.7-6.3-15.8l21-48.7c2.6-6.1,9.7-8.9,15.8-6.3l157.4,67.8 c6.1,2.6,8.9,9.7,6.3,15.8l-21,48.7C558.5,279.6,551.4,282.4,545.3,279.8z"/>
|
|
22
|
+
<path d="M614.5,397.2c-6.7,9.2-19.2,12.9-30.1,8.3l-24.8-10.7c-0.7-0.3-1.5-0.7-2.2-1.1l27.1,11.7 C595.4,410,607.8,406.4,614.5,397.2z"/>
|
|
23
|
+
<path d="M630.3,632.5l-24.9-10.6c0,0-0.1,0-0.1-0.1L630.3,632.5z"/>
|
|
24
|
+
<path d="M717.5,549.4l67.1-157.7c2.6-6.1,9.7-8.9,15.7-6.3l48.7,20.7c6.1,2.6,8.9,9.7,6.3,15.7l-67.1,157.7 c-2.6,6.1-9.7,8.9-15.7,6.3l-48.7-20.7C717.8,562.5,714.9,555.4,717.5,549.4z"/>
|
|
25
|
+
<path d="M597,616.1c0.1,0.1,0.1,0.1,0.2,0.2C597.2,616.2,597.1,616.2,597,616.1C597.1,616.1,597.1,616.1,597,616.1z"/>
|
|
26
|
+
<path d="M597.2,616.2c0.3,0.3,0.5,0.6,0.8,0.8C597.7,616.8,597.5,616.5,597.2,616.2z"/>
|
|
27
|
+
<path d="M596.1,615c0.3,0.4,0.6,0.7,0.9,1c-6.7-7-9-17.6-5-27l10.6-24.9c0.3-0.7,0.7-1.4,1.1-2.1l-11.5,27.1 c-1.5,3.6-2.2,7.4-2,11.1c0,0.3,0,0.5,0.1,0.7c0,0.3,0,0.5,0.1,0.8c0,0,0,0.1,0,0.1c0.1,0.4,0.1,0.9,0.2,1.3 c0.1,0.4,0.1,0.8,0.2,1.2c0,0.2,0.1,0.4,0.2,0.6c0.1,0.4,0.2,0.7,0.3,1c0.1,0.4,0.2,0.8,0.4,1.2c0,0.2,0.1,0.3,0.2,0.5 c0.1,0.4,0.3,0.8,0.5,1.1c0.2,0.4,0.3,0.7,0.5,1.1c0.1,0.2,0.2,0.5,0.4,0.7c0,0.1,0.1,0.2,0.1,0.3c0.2,0.3,0.3,0.6,0.5,0.8 c0.1,0.3,0.3,0.5,0.5,0.7c0.2,0.3,0.4,0.7,0.7,1c0.2,0.2,0.3,0.5,0.5,0.7C595.6,614.4,595.8,614.7,596.1,615z"/>
|
|
28
|
+
<path d="M599.3,618.2c-0.4-0.4-0.8-0.7-1.2-1.1C598.4,617.4,598.8,617.8,599.3,618.2z"/>
|
|
29
|
+
<path d="M375.8,610.9L365,636.6c0.1-0.2,0.2-0.5,0.3-0.7l10.5-24.9C375.8,610.9,375.8,610.9,375.8,610.9z"/>
|
|
30
|
+
<path d="M448.8,722.8l158,66.4c6.1,2.6,9,9.6,6.4,15.7l-20.5,48.8c-2.6,6.1-9.6,9-15.7,6.4l-158-66.4 c-6.1-2.6-9-9.6-6.4-15.7l20.5-48.8C435.6,723.1,442.7,720.2,448.8,722.8z"/>
|
|
31
|
+
<path d="M435.5,609l-27.1-11.4c-9.7-4-20.6-1.5-27.5,5.6c6.9-7.2,17.9-9.8,27.6-5.7l24.9,10.5 C434.2,608.3,434.9,608.6,435.5,609z"/>
|
|
32
|
+
<path d="M385.7,381.4l-26-10.8c0.3,0.1,0.6,0.2,0.9,0.4l25,10.4C385.7,381.3,385.7,381.3,385.7,381.4z"/>
|
|
33
|
+
<path d="M274.1,454.8l-65.7,158.3c-2.5,6.1-9.6,9-15.7,6.5l-48.9-20.3c-6.1-2.5-9-9.6-6.5-15.7L203,425.4 c2.5-6.1,9.6-9,15.7-6.5l48.9,20.3C273.8,441.7,276.7,448.7,274.1,454.8z"/>
|
|
34
|
+
<g>
|
|
35
|
+
<path d="M798.8,133c-38.1,0-69.2,31-69.2,69.1c0,13.9,4.1,26.8,11.2,37.6L603.7,562l-11.5,27.1 c-1.5,3.6-2.2,7.4-2,11.1c0,0.2,0,0.5,0.1,0.7c0,0.3,0,0.5,0.1,0.8c0,0,0,0.1,0,0.1c0.1,0.4,0.1,0.9,0.2,1.3 c0.1,0.4,0.1,0.8,0.2,1.2c0,0.2,0.1,0.4,0.2,0.6c0.1,0.4,0.2,0.7,0.3,1c0.1,0.4,0.2,0.8,0.4,1.2c0,0.2,0.1,0.3,0.2,0.5 c0.1,0.4,0.3,0.8,0.5,1.1c0.2,0.4,0.3,0.7,0.5,1.1c0.1,0.2,0.2,0.5,0.4,0.7c0,0.1,0.1,0.2,0.1,0.3c0.2,0.3,0.3,0.6,0.5,0.8 c0.1,0.3,0.3,0.5,0.5,0.7c0.2,0.3,0.4,0.7,0.7,1c0.2,0.2,0.3,0.5,0.5,0.7c0.3,0.3,0.5,0.6,0.8,1c0.2,0.2,0.3,0.4,0.5,0.6 c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.1,0.1,0.1c0.7,0.7,1.4,1.4,2.2,2c0,0,0,0,0,0 c0.4,0.3,0.8,0.6,1.2,0.9c1.5,1.1,3.1,2,4.8,2.7l25,10.7l1.2,0.5l107.7,45.8c12.6,5.4,27.4-0.6,32.7-13.2l10.6-24.9 c5.4-12.6-0.6-27.3-13.2-32.7l-85.9-36.5l128.2-301.3c32.1-6,56.4-34.2,56.4-68C868,164,837,133,798.8,133z M826.1,227.7 c-6.8,7.3-16.5,11.8-27.3,11.8c-20.6,0-37.4-16.8-37.4-37.4c0-0.7,0-1.5,0.1-2.2v0c1.1-19.6,17.4-35.2,37.4-35.2 c20.6,0,37.4,16.8,37.4,37.4C836.3,212,832.4,221,826.1,227.7z"/>
|
|
36
|
+
</g>
|
|
37
|
+
<g>
|
|
38
|
+
<path d="M392.1,385.2c-1.9-1.6-4-2.9-6.3-3.8l-26-10.8l-0.3-0.1l-108.1-44.8c-12.7-5.3-27.4,0.8-32.6,13.5 l-10.4,25c-5.3,12.7,0.8,27.4,13.5,32.6l86.2,35.8L181.7,737.2c-28.7,8.4-49.7,35-49.7,66.4c0,38.1,31,69.2,69.2,69.2 c38.1,0,69.2-31,69.2-69.2c0-16.2-5.6-31.1-15-42.9l132.5-319.5c0.4-0.7,0.7-1.4,1-2.1l10.4-25C403.5,403.7,400.3,392,392.1,385.2 z M201.2,841c-20.6,0-37.4-16.8-37.4-37.4c0-7.6,2.3-14.6,6.1-20.5c6.7-10.2,18.2-16.9,31.3-16.9c19.3,0,35.2,14.7,37.2,33.5v0 c0.1,1.3,0.2,2.6,0.2,3.9C238.6,824.2,221.8,841,201.2,841z"/>
|
|
39
|
+
</g>
|
|
40
|
+
<g>
|
|
41
|
+
<path d="M795,736.3c-12.5,0-24.3,3.4-34.5,9.2L435.5,609l-27.1-11.4c-9.7-4-20.6-1.5-27.5,5.6 c-2.1,2.2-3.9,4.7-5.1,7.7L365,636.6L319.5,745c-5.3,12.7,0.7,27.4,13.3,32.7l24.9,10.5c12.7,5.3,27.4-0.7,32.7-13.3l36.2-86.1 l299.9,126c4.5,33.8,33.5,59.9,68.5,59.9c38.1,0,69.2-31,69.2-69.2C864.2,767.4,833.2,736.3,795,736.3z M795,842.9 c-11.3,0-21.4-5-28.2-12.9h0c-5.7-6.6-9.2-15.2-9.2-24.5c0-20.6,16.8-37.4,37.4-37.4c1.9,0,3.7,0.1,5.6,0.4 c18,2.7,31.9,18.3,31.9,37C832.5,826.1,815.7,842.9,795,842.9z"/>
|
|
42
|
+
</g>
|
|
43
|
+
</g>
|
|
44
|
+
</g>
|
|
45
|
+
</g>
|
|
46
|
+
</g>
|
|
47
|
+
</g>
|
|
48
|
+
|
|
49
|
+
<!-- Data Legion text — white for dark backgrounds -->
|
|
50
|
+
<text x="80" y="38" font-family="Inter, -apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif" font-size="24" font-weight="600" fill="#1c1917">Data Legion</text>
|
|
51
|
+
|
|
52
|
+
<!-- Enterprise Data Solutions tagline -->
|
|
53
|
+
<text x="80" y="58" font-family="Inter, -apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif" font-size="13" font-weight="500" fill="#d4af37">Enterprise Data Solutions</text>
|
|
54
|
+
</svg>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<svg width="260" height="80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="goldGrad">
|
|
4
|
+
<stop stop-color="#905e26" offset="0"/>
|
|
5
|
+
<stop stop-color="#f5ec9b" offset="0.5"/>
|
|
6
|
+
<stop stop-color="#905e26" offset="1"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<clipPath id="iconClip">
|
|
9
|
+
<rect x="4" y="8" width="64" height="64" rx="14" ry="14"/>
|
|
10
|
+
</clipPath>
|
|
11
|
+
</defs>
|
|
12
|
+
|
|
13
|
+
<!-- Icon scaled to fit -->
|
|
14
|
+
<g>
|
|
15
|
+
<g transform="translate(4, 8) scale(0.05333)">
|
|
16
|
+
<g transform="scale(1.4411527580125738) translate(-83.81662835015196, -83.66665734185113)">
|
|
17
|
+
<g fill="url(#goldGrad)">
|
|
18
|
+
<g>
|
|
19
|
+
<path d="M661.8,226L637,215.3c-12.6-5.4-27.4,0.4-32.8,13l-36.9,85.7L269.8,185.9c-4.2-34.1-33.4-60.6-68.6-60.6 c-38.1,0-69.2,31-69.2,69.1c0,38.1,31,69.2,69.2,69.2c12.3,0,23.9-3.2,33.9-8.9l322.4,138.9l27.1,11.7c10.8,4.7,23.3,1,30-8.2 c1.1-1.5,2-3.1,2.7-4.8l11.1-25.7l0.2-0.4l46.3-107.5C680.3,246.2,674.4,231.5,661.8,226z M201.2,231.9c-2.4,0-4.7-0.2-7-0.7 c-17.3-3.3-30.4-18.5-30.4-36.8c0-20.6,16.8-37.4,37.4-37.4c11.2,0,21.2,4.9,28,12.7c5.8,6.6,9.4,15.3,9.4,24.8 C238.6,215.1,221.8,231.9,201.2,231.9z"/>
|
|
20
|
+
<path d="M628.3,366.7c-0.1,0.3-0.2,0.5-0.3,0.8l-10.7,24.8c0,0,0,0.1-0.1,0.1L628.3,366.7z"/>
|
|
21
|
+
<path d="M545.3,279.8L387.9,212c-6.1-2.6-8.9-9.7-6.3-15.8l21-48.7c2.6-6.1,9.7-8.9,15.8-6.3l157.4,67.8 c6.1,2.6,8.9,9.7,6.3,15.8l-21,48.7C558.5,279.6,551.4,282.4,545.3,279.8z"/>
|
|
22
|
+
<path d="M614.5,397.2c-6.7,9.2-19.2,12.9-30.1,8.3l-24.8-10.7c-0.7-0.3-1.5-0.7-2.2-1.1l27.1,11.7 C595.4,410,607.8,406.4,614.5,397.2z"/>
|
|
23
|
+
<path d="M630.3,632.5l-24.9-10.6c0,0-0.1,0-0.1-0.1L630.3,632.5z"/>
|
|
24
|
+
<path d="M717.5,549.4l67.1-157.7c2.6-6.1,9.7-8.9,15.7-6.3l48.7,20.7c6.1,2.6,8.9,9.7,6.3,15.7l-67.1,157.7 c-2.6,6.1-9.7,8.9-15.7,6.3l-48.7-20.7C717.8,562.5,714.9,555.4,717.5,549.4z"/>
|
|
25
|
+
<path d="M597,616.1c0.1,0.1,0.1,0.1,0.2,0.2C597.2,616.2,597.1,616.2,597,616.1C597.1,616.1,597.1,616.1,597,616.1z"/>
|
|
26
|
+
<path d="M597.2,616.2c0.3,0.3,0.5,0.6,0.8,0.8C597.7,616.8,597.5,616.5,597.2,616.2z"/>
|
|
27
|
+
<path d="M596.1,615c0.3,0.4,0.6,0.7,0.9,1c-6.7-7-9-17.6-5-27l10.6-24.9c0.3-0.7,0.7-1.4,1.1-2.1l-11.5,27.1 c-1.5,3.6-2.2,7.4-2,11.1c0,0.3,0,0.5,0.1,0.7c0,0.3,0,0.5,0.1,0.8c0,0,0,0.1,0,0.1c0.1,0.4,0.1,0.9,0.2,1.3 c0.1,0.4,0.1,0.8,0.2,1.2c0,0.2,0.1,0.4,0.2,0.6c0.1,0.4,0.2,0.7,0.3,1c0.1,0.4,0.2,0.8,0.4,1.2c0,0.2,0.1,0.3,0.2,0.5 c0.1,0.4,0.3,0.8,0.5,1.1c0.2,0.4,0.3,0.7,0.5,1.1c0.1,0.2,0.2,0.5,0.4,0.7c0,0.1,0.1,0.2,0.1,0.3c0.2,0.3,0.3,0.6,0.5,0.8 c0.1,0.3,0.3,0.5,0.5,0.7c0.2,0.3,0.4,0.7,0.7,1c0.2,0.2,0.3,0.5,0.5,0.7C595.6,614.4,595.8,614.7,596.1,615z"/>
|
|
28
|
+
<path d="M599.3,618.2c-0.4-0.4-0.8-0.7-1.2-1.1C598.4,617.4,598.8,617.8,599.3,618.2z"/>
|
|
29
|
+
<path d="M375.8,610.9L365,636.6c0.1-0.2,0.2-0.5,0.3-0.7l10.5-24.9C375.8,610.9,375.8,610.9,375.8,610.9z"/>
|
|
30
|
+
<path d="M448.8,722.8l158,66.4c6.1,2.6,9,9.6,6.4,15.7l-20.5,48.8c-2.6,6.1-9.6,9-15.7,6.4l-158-66.4 c-6.1-2.6-9-9.6-6.4-15.7l20.5-48.8C435.6,723.1,442.7,720.2,448.8,722.8z"/>
|
|
31
|
+
<path d="M435.5,609l-27.1-11.4c-9.7-4-20.6-1.5-27.5,5.6c6.9-7.2,17.9-9.8,27.6-5.7l24.9,10.5 C434.2,608.3,434.9,608.6,435.5,609z"/>
|
|
32
|
+
<path d="M385.7,381.4l-26-10.8c0.3,0.1,0.6,0.2,0.9,0.4l25,10.4C385.7,381.3,385.7,381.3,385.7,381.4z"/>
|
|
33
|
+
<path d="M274.1,454.8l-65.7,158.3c-2.5,6.1-9.6,9-15.7,6.5l-48.9-20.3c-6.1-2.5-9-9.6-6.5-15.7L203,425.4 c2.5-6.1,9.6-9,15.7-6.5l48.9,20.3C273.8,441.7,276.7,448.7,274.1,454.8z"/>
|
|
34
|
+
<g>
|
|
35
|
+
<path d="M798.8,133c-38.1,0-69.2,31-69.2,69.1c0,13.9,4.1,26.8,11.2,37.6L603.7,562l-11.5,27.1 c-1.5,3.6-2.2,7.4-2,11.1c0,0.2,0,0.5,0.1,0.7c0,0.3,0,0.5,0.1,0.8c0,0,0,0.1,0,0.1c0.1,0.4,0.1,0.9,0.2,1.3 c0.1,0.4,0.1,0.8,0.2,1.2c0,0.2,0.1,0.4,0.2,0.6c0.1,0.4,0.2,0.7,0.3,1c0.1,0.4,0.2,0.8,0.4,1.2c0,0.2,0.1,0.3,0.2,0.5 c0.1,0.4,0.3,0.8,0.5,1.1c0.2,0.4,0.3,0.7,0.5,1.1c0.1,0.2,0.2,0.5,0.4,0.7c0,0.1,0.1,0.2,0.1,0.3c0.2,0.3,0.3,0.6,0.5,0.8 c0.1,0.3,0.3,0.5,0.5,0.7c0.2,0.3,0.4,0.7,0.7,1c0.2,0.2,0.3,0.5,0.5,0.7c0.3,0.3,0.5,0.6,0.8,1c0.2,0.2,0.3,0.4,0.5,0.6 c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.1,0.1,0.1c0.7,0.7,1.4,1.4,2.2,2c0,0,0,0,0,0 c0.4,0.3,0.8,0.6,1.2,0.9c1.5,1.1,3.1,2,4.8,2.7l25,10.7l1.2,0.5l107.7,45.8c12.6,5.4,27.4-0.6,32.7-13.2l10.6-24.9 c5.4-12.6-0.6-27.3-13.2-32.7l-85.9-36.5l128.2-301.3c32.1-6,56.4-34.2,56.4-68C868,164,837,133,798.8,133z M826.1,227.7 c-6.8,7.3-16.5,11.8-27.3,11.8c-20.6,0-37.4-16.8-37.4-37.4c0-0.7,0-1.5,0.1-2.2v0c1.1-19.6,17.4-35.2,37.4-35.2 c20.6,0,37.4,16.8,37.4,37.4C836.3,212,832.4,221,826.1,227.7z"/>
|
|
36
|
+
</g>
|
|
37
|
+
<g>
|
|
38
|
+
<path d="M392.1,385.2c-1.9-1.6-4-2.9-6.3-3.8l-26-10.8l-0.3-0.1l-108.1-44.8c-12.7-5.3-27.4,0.8-32.6,13.5 l-10.4,25c-5.3,12.7,0.8,27.4,13.5,32.6l86.2,35.8L181.7,737.2c-28.7,8.4-49.7,35-49.7,66.4c0,38.1,31,69.2,69.2,69.2 c38.1,0,69.2-31,69.2-69.2c0-16.2-5.6-31.1-15-42.9l132.5-319.5c0.4-0.7,0.7-1.4,1-2.1l10.4-25C403.5,403.7,400.3,392,392.1,385.2 z M201.2,841c-20.6,0-37.4-16.8-37.4-37.4c0-7.6,2.3-14.6,6.1-20.5c6.7-10.2,18.2-16.9,31.3-16.9c19.3,0,35.2,14.7,37.2,33.5v0 c0.1,1.3,0.2,2.6,0.2,3.9C238.6,824.2,221.8,841,201.2,841z"/>
|
|
39
|
+
</g>
|
|
40
|
+
<g>
|
|
41
|
+
<path d="M795,736.3c-12.5,0-24.3,3.4-34.5,9.2L435.5,609l-27.1-11.4c-9.7-4-20.6-1.5-27.5,5.6 c-2.1,2.2-3.9,4.7-5.1,7.7L365,636.6L319.5,745c-5.3,12.7,0.7,27.4,13.3,32.7l24.9,10.5c12.7,5.3,27.4-0.7,32.7-13.3l36.2-86.1 l299.9,126c4.5,33.8,33.5,59.9,68.5,59.9c38.1,0,69.2-31,69.2-69.2C864.2,767.4,833.2,736.3,795,736.3z M795,842.9 c-11.3,0-21.4-5-28.2-12.9h0c-5.7-6.6-9.2-15.2-9.2-24.5c0-20.6,16.8-37.4,37.4-37.4c1.9,0,3.7,0.1,5.6,0.4 c18,2.7,31.9,18.3,31.9,37C832.5,826.1,815.7,842.9,795,842.9z"/>
|
|
42
|
+
</g>
|
|
43
|
+
</g>
|
|
44
|
+
</g>
|
|
45
|
+
</g>
|
|
46
|
+
</g>
|
|
47
|
+
</g>
|
|
48
|
+
|
|
49
|
+
<!-- Data Legion text — white for dark backgrounds -->
|
|
50
|
+
<text x="80" y="38" font-family="Inter, -apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif" font-size="24" font-weight="600" fill="#f8f8f8">Data Legion</text>
|
|
51
|
+
|
|
52
|
+
<!-- Enterprise Data Solutions tagline -->
|
|
53
|
+
<text x="80" y="58" font-family="Inter, -apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif" font-size="13" font-weight="500" fill="#d4af37">Enterprise Data Solutions</text>
|
|
54
|
+
</svg>
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint:
|
|
14
|
+
name: Lint & Build
|
|
15
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
16
|
+
timeout-minutes: 5
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@v6
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v7
|
|
25
|
+
with:
|
|
26
|
+
version: "0.10.x"
|
|
27
|
+
enable-cache: true
|
|
28
|
+
cache-dependency-glob: "uv.lock"
|
|
29
|
+
|
|
30
|
+
- name: Set up Python
|
|
31
|
+
run: uv python install 3.12
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: uv sync --frozen --dev
|
|
35
|
+
|
|
36
|
+
- name: Run lint
|
|
37
|
+
run: uv run lint
|
|
38
|
+
|
|
39
|
+
- name: Build
|
|
40
|
+
run: uv build
|
|
41
|
+
|
|
42
|
+
- name: Prune uv cache
|
|
43
|
+
if: always()
|
|
44
|
+
run: uv cache prune --ci
|
|
45
|
+
|
|
46
|
+
test:
|
|
47
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
48
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
49
|
+
timeout-minutes: 10
|
|
50
|
+
permissions:
|
|
51
|
+
contents: read
|
|
52
|
+
strategy:
|
|
53
|
+
fail-fast: false
|
|
54
|
+
matrix:
|
|
55
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
56
|
+
steps:
|
|
57
|
+
- name: Checkout
|
|
58
|
+
uses: actions/checkout@v6
|
|
59
|
+
|
|
60
|
+
- name: Install uv
|
|
61
|
+
uses: astral-sh/setup-uv@v7
|
|
62
|
+
with:
|
|
63
|
+
version: "0.10.x"
|
|
64
|
+
enable-cache: true
|
|
65
|
+
cache-dependency-glob: "uv.lock"
|
|
66
|
+
|
|
67
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
68
|
+
run: uv python install ${{ matrix.python-version }}
|
|
69
|
+
|
|
70
|
+
- name: Install dependencies
|
|
71
|
+
run: uv sync --frozen --dev
|
|
72
|
+
|
|
73
|
+
- name: Run tests
|
|
74
|
+
run: uv run pytest tests/ -v --tb=short
|
|
75
|
+
env:
|
|
76
|
+
DATALEGION_API_KEY: ${{ secrets.DATALEGION_API_KEY }}
|
|
77
|
+
|
|
78
|
+
- name: Prune uv cache
|
|
79
|
+
if: always()
|
|
80
|
+
run: uv cache prune --ci
|
|
81
|
+
|
|
82
|
+
publish-pypi:
|
|
83
|
+
name: Publish to PyPI
|
|
84
|
+
needs: [lint, test]
|
|
85
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
86
|
+
timeout-minutes: 5
|
|
87
|
+
permissions:
|
|
88
|
+
contents: read
|
|
89
|
+
id-token: write
|
|
90
|
+
steps:
|
|
91
|
+
- name: Checkout
|
|
92
|
+
uses: actions/checkout@v6
|
|
93
|
+
|
|
94
|
+
- name: Install uv
|
|
95
|
+
uses: astral-sh/setup-uv@v7
|
|
96
|
+
with:
|
|
97
|
+
version: "0.10.x"
|
|
98
|
+
|
|
99
|
+
- name: Set up Python
|
|
100
|
+
run: uv python install 3.12
|
|
101
|
+
|
|
102
|
+
- name: Set version from tag
|
|
103
|
+
run: |
|
|
104
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
105
|
+
sed -i "s/^version = .*/version = \"${VERSION}\"/" pyproject.toml
|
|
106
|
+
|
|
107
|
+
- name: Build
|
|
108
|
+
run: uv build
|
|
109
|
+
|
|
110
|
+
- name: Publish to PyPI
|
|
111
|
+
run: uv publish --trusted-publishing always
|
|
112
|
+
|
|
113
|
+
github-release:
|
|
114
|
+
name: Create GitHub Release
|
|
115
|
+
needs: [publish-pypi]
|
|
116
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
117
|
+
timeout-minutes: 5
|
|
118
|
+
permissions:
|
|
119
|
+
contents: write
|
|
120
|
+
steps:
|
|
121
|
+
- name: Checkout
|
|
122
|
+
uses: actions/checkout@v6
|
|
123
|
+
with:
|
|
124
|
+
ref: main
|
|
125
|
+
token: ${{ secrets.GH_PAT }}
|
|
126
|
+
|
|
127
|
+
- name: Update version in pyproject.toml
|
|
128
|
+
run: |
|
|
129
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
130
|
+
sed -i "s/^version = .*/version = \"${VERSION}\"/" pyproject.toml
|
|
131
|
+
git config user.name "github-actions[bot]"
|
|
132
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
133
|
+
git add pyproject.toml
|
|
134
|
+
git diff --staged --quiet || git commit -m "chore: bump version to ${VERSION} [skip ci]"
|
|
135
|
+
git push
|
|
136
|
+
|
|
137
|
+
- name: Create Release
|
|
138
|
+
uses: actions/github-script@v8
|
|
139
|
+
with:
|
|
140
|
+
script: |
|
|
141
|
+
const tag = context.ref.replace('refs/tags/', '');
|
|
142
|
+
await github.rest.repos.createRelease({
|
|
143
|
+
owner: context.repo.owner,
|
|
144
|
+
repo: context.repo.repo,
|
|
145
|
+
tag_name: tag,
|
|
146
|
+
name: tag,
|
|
147
|
+
generate_release_notes: true,
|
|
148
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Security
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
changes:
|
|
18
|
+
name: Check Changes
|
|
19
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
20
|
+
if: github.event.pull_request.draft != true
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
pull-requests: read
|
|
24
|
+
outputs:
|
|
25
|
+
should_run: ${{ steps.filter.outputs.src }}
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v6
|
|
28
|
+
- uses: dorny/paths-filter@v3
|
|
29
|
+
id: filter
|
|
30
|
+
with:
|
|
31
|
+
filters: |
|
|
32
|
+
src:
|
|
33
|
+
- '**.py'
|
|
34
|
+
- 'pyproject.toml'
|
|
35
|
+
- 'uv.lock'
|
|
36
|
+
- '.github/workflows/**'
|
|
37
|
+
|
|
38
|
+
security:
|
|
39
|
+
name: Security Scan
|
|
40
|
+
needs: changes
|
|
41
|
+
if: needs.changes.outputs.should_run == 'true'
|
|
42
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
43
|
+
timeout-minutes: 5
|
|
44
|
+
permissions:
|
|
45
|
+
contents: read
|
|
46
|
+
steps:
|
|
47
|
+
- name: Checkout
|
|
48
|
+
uses: actions/checkout@v6
|
|
49
|
+
|
|
50
|
+
- name: Install uv
|
|
51
|
+
uses: astral-sh/setup-uv@v7
|
|
52
|
+
with:
|
|
53
|
+
version: "0.10.x"
|
|
54
|
+
|
|
55
|
+
- name: Set up Python
|
|
56
|
+
uses: actions/setup-python@v6
|
|
57
|
+
with:
|
|
58
|
+
python-version: "3.12"
|
|
59
|
+
cache: "pip"
|
|
60
|
+
|
|
61
|
+
- name: Install security tools
|
|
62
|
+
run: pip install bandit pip-audit
|
|
63
|
+
|
|
64
|
+
- name: Run Bandit (SAST)
|
|
65
|
+
run: |
|
|
66
|
+
bandit -r src/ \
|
|
67
|
+
--severity-level high \
|
|
68
|
+
--confidence-level high
|
|
69
|
+
|
|
70
|
+
- name: Run pip-audit (dependency vulnerabilities)
|
|
71
|
+
run: |
|
|
72
|
+
uv export --format requirements-txt --no-hashes > requirements.txt
|
|
73
|
+
pip-audit -r requirements.txt --disable-pip --no-deps
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
changes:
|
|
18
|
+
name: Check Changes
|
|
19
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
20
|
+
if: github.event.pull_request.draft != true
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
pull-requests: read
|
|
24
|
+
outputs:
|
|
25
|
+
should_run: ${{ steps.filter.outputs.src }}
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v6
|
|
28
|
+
- uses: dorny/paths-filter@v3
|
|
29
|
+
id: filter
|
|
30
|
+
with:
|
|
31
|
+
filters: |
|
|
32
|
+
src:
|
|
33
|
+
- '**.py'
|
|
34
|
+
- 'pyproject.toml'
|
|
35
|
+
- 'uv.lock'
|
|
36
|
+
- '.github/workflows/**'
|
|
37
|
+
|
|
38
|
+
lint:
|
|
39
|
+
name: Lint & Build
|
|
40
|
+
needs: changes
|
|
41
|
+
if: needs.changes.outputs.should_run == 'true'
|
|
42
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
43
|
+
timeout-minutes: 5
|
|
44
|
+
permissions:
|
|
45
|
+
contents: read
|
|
46
|
+
steps:
|
|
47
|
+
- name: Checkout
|
|
48
|
+
uses: actions/checkout@v6
|
|
49
|
+
|
|
50
|
+
- name: Install uv
|
|
51
|
+
uses: astral-sh/setup-uv@v7
|
|
52
|
+
with:
|
|
53
|
+
version: "0.10.x"
|
|
54
|
+
enable-cache: true
|
|
55
|
+
cache-dependency-glob: "uv.lock"
|
|
56
|
+
|
|
57
|
+
- name: Set up Python
|
|
58
|
+
run: uv python install 3.12
|
|
59
|
+
|
|
60
|
+
- name: Install dependencies
|
|
61
|
+
run: uv sync --frozen --dev
|
|
62
|
+
|
|
63
|
+
- name: Run lint
|
|
64
|
+
run: uv run lint
|
|
65
|
+
|
|
66
|
+
- name: Build
|
|
67
|
+
run: uv build
|
|
68
|
+
|
|
69
|
+
- name: Prune uv cache
|
|
70
|
+
if: always()
|
|
71
|
+
run: uv cache prune --ci
|
|
72
|
+
|
|
73
|
+
test:
|
|
74
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
75
|
+
needs: changes
|
|
76
|
+
if: needs.changes.outputs.should_run == 'true'
|
|
77
|
+
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
78
|
+
timeout-minutes: 10
|
|
79
|
+
permissions:
|
|
80
|
+
contents: read
|
|
81
|
+
strategy:
|
|
82
|
+
fail-fast: false
|
|
83
|
+
matrix:
|
|
84
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
85
|
+
steps:
|
|
86
|
+
- name: Checkout
|
|
87
|
+
uses: actions/checkout@v6
|
|
88
|
+
|
|
89
|
+
- name: Install uv
|
|
90
|
+
uses: astral-sh/setup-uv@v7
|
|
91
|
+
with:
|
|
92
|
+
version: "0.10.x"
|
|
93
|
+
enable-cache: true
|
|
94
|
+
cache-dependency-glob: "uv.lock"
|
|
95
|
+
|
|
96
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
97
|
+
run: uv python install ${{ matrix.python-version }}
|
|
98
|
+
|
|
99
|
+
- name: Install dependencies
|
|
100
|
+
run: uv sync --frozen --dev
|
|
101
|
+
|
|
102
|
+
- name: Run tests
|
|
103
|
+
run: uv run pytest tests/ -v --tb=short
|
|
104
|
+
env:
|
|
105
|
+
DATALEGION_API_KEY: ${{ secrets.DATALEGION_API_KEY }}
|
|
106
|
+
|
|
107
|
+
- name: Prune uv cache
|
|
108
|
+
if: always()
|
|
109
|
+
run: uv cache prune --ci
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We are committed to making participation in this project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
6
|
+
|
|
7
|
+
## Our Standards
|
|
8
|
+
|
|
9
|
+
Examples of behavior that contributes to a positive environment:
|
|
10
|
+
|
|
11
|
+
- Using welcoming and inclusive language
|
|
12
|
+
- Being respectful of differing viewpoints and experiences
|
|
13
|
+
- Gracefully accepting constructive criticism
|
|
14
|
+
- Focusing on what is best for the community
|
|
15
|
+
|
|
16
|
+
Examples of unacceptable behavior:
|
|
17
|
+
|
|
18
|
+
- Trolling, insulting/derogatory comments, and personal or political attacks
|
|
19
|
+
- Public or private harassment
|
|
20
|
+
- Publishing others' private information without explicit permission
|
|
21
|
+
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
22
|
+
|
|
23
|
+
## Enforcement
|
|
24
|
+
|
|
25
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at **engineering@datalegion.ai**. All complaints will be reviewed and investigated promptly and fairly.
|
|
26
|
+
|
|
27
|
+
## Attribution
|
|
28
|
+
|
|
29
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
|