graphora 0.0.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.
- graphora-0.0.0/.github/workflows/publish.yml +96 -0
- graphora-0.0.0/.gitignore +174 -0
- graphora-0.0.0/CLA.md +97 -0
- graphora-0.0.0/CONTRIBUTING.md +406 -0
- graphora-0.0.0/LICENSE +21 -0
- graphora-0.0.0/PKG-INFO +312 -0
- graphora-0.0.0/README.md +276 -0
- graphora-0.0.0/SECURITY.md +207 -0
- graphora-0.0.0/SUPPORT.md +238 -0
- graphora-0.0.0/TRADEMARK.md +136 -0
- graphora-0.0.0/docs/api_reference.md +689 -0
- graphora-0.0.0/docs/index.md +48 -0
- graphora-0.0.0/docs/quickstart.md +177 -0
- graphora-0.0.0/examples/manage_ontology.py +132 -0
- graphora-0.0.0/examples/merge_graph_data.py +148 -0
- graphora-0.0.0/examples/modify_graph.py +157 -0
- graphora-0.0.0/examples/quality_validation.py +49 -0
- graphora-0.0.0/examples/upload_and_transform.py +163 -0
- graphora-0.0.0/graphora/__init__.py +15 -0
- graphora-0.0.0/graphora/cli/__init__.py +8 -0
- graphora-0.0.0/graphora/cli/api_manager.py +380 -0
- graphora-0.0.0/graphora/cli/commands/__init__.py +1 -0
- graphora-0.0.0/graphora/cli/commands/config_cmd.py +225 -0
- graphora-0.0.0/graphora/cli/commands/extract.py +765 -0
- graphora-0.0.0/graphora/cli/commands/schema.py +270 -0
- graphora-0.0.0/graphora/cli/config.py +221 -0
- graphora-0.0.0/graphora/cli/main.py +241 -0
- graphora-0.0.0/graphora/cli/runtime.py +267 -0
- graphora-0.0.0/graphora/client.py +669 -0
- graphora-0.0.0/graphora/exceptions.py +22 -0
- graphora-0.0.0/graphora/models.py +914 -0
- graphora-0.0.0/graphora/utils.py +60 -0
- graphora-0.0.0/graphora.egg-info/PKG-INFO +312 -0
- graphora-0.0.0/graphora.egg-info/SOURCES.txt +39 -0
- graphora-0.0.0/graphora.egg-info/dependency_links.txt +1 -0
- graphora-0.0.0/graphora.egg-info/entry_points.txt +2 -0
- graphora-0.0.0/graphora.egg-info/requires.txt +19 -0
- graphora-0.0.0/graphora.egg-info/top_level.txt +1 -0
- graphora-0.0.0/pyproject.toml +54 -0
- graphora-0.0.0/requirements.txt +3 -0
- graphora-0.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
bump:
|
|
7
|
+
description: "Version bump type"
|
|
8
|
+
required: true
|
|
9
|
+
type: choice
|
|
10
|
+
options:
|
|
11
|
+
- patch
|
|
12
|
+
- minor
|
|
13
|
+
- major
|
|
14
|
+
dry_run:
|
|
15
|
+
description: "Dry run (build only, don't upload)"
|
|
16
|
+
required: false
|
|
17
|
+
type: boolean
|
|
18
|
+
default: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
publish:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
permissions:
|
|
24
|
+
contents: write
|
|
25
|
+
id-token: write
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
fetch-depth: 0
|
|
31
|
+
fetch-tags: true
|
|
32
|
+
|
|
33
|
+
- uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.11"
|
|
36
|
+
|
|
37
|
+
- name: Install build tools
|
|
38
|
+
run: pip install build twine setuptools-scm
|
|
39
|
+
|
|
40
|
+
- name: Compute next version
|
|
41
|
+
id: version
|
|
42
|
+
run: |
|
|
43
|
+
# Get latest version tag (fallback to 0.0.0 if none)
|
|
44
|
+
LATEST=$(git tag -l 'v*' --sort=-v:refname | head -1 | sed 's/^v//')
|
|
45
|
+
if [ -z "$LATEST" ]; then
|
|
46
|
+
LATEST="0.0.0"
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST"
|
|
50
|
+
|
|
51
|
+
case "${{ inputs.bump }}" in
|
|
52
|
+
major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
|
|
53
|
+
minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
|
|
54
|
+
patch) PATCH=$((PATCH + 1)) ;;
|
|
55
|
+
esac
|
|
56
|
+
|
|
57
|
+
NEXT="${MAJOR}.${MINOR}.${PATCH}"
|
|
58
|
+
echo "version=$NEXT" >> "$GITHUB_OUTPUT"
|
|
59
|
+
echo "tag=v$NEXT" >> "$GITHUB_OUTPUT"
|
|
60
|
+
echo "Bumping $LATEST → $NEXT (${{ inputs.bump }})"
|
|
61
|
+
|
|
62
|
+
- name: Create version tag
|
|
63
|
+
run: |
|
|
64
|
+
git config user.name "github-actions"
|
|
65
|
+
git config user.email "github-actions@github.com"
|
|
66
|
+
git tag -a "${{ steps.version.outputs.tag }}" -m "Release ${{ steps.version.outputs.tag }}"
|
|
67
|
+
|
|
68
|
+
- name: Build package
|
|
69
|
+
run: python -m build
|
|
70
|
+
|
|
71
|
+
- name: Verify version
|
|
72
|
+
run: |
|
|
73
|
+
BUILT=$(python -c "from setuptools_scm import get_version; print(get_version())")
|
|
74
|
+
echo "Built version: $BUILT"
|
|
75
|
+
EXPECTED="${{ steps.version.outputs.version }}"
|
|
76
|
+
if [ "$BUILT" != "$EXPECTED" ]; then
|
|
77
|
+
echo "::error::Version mismatch: built=$BUILT expected=$EXPECTED"
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
- name: Check package
|
|
82
|
+
run: twine check dist/*
|
|
83
|
+
|
|
84
|
+
- name: Publish to PyPI
|
|
85
|
+
if: ${{ !inputs.dry_run }}
|
|
86
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
87
|
+
with:
|
|
88
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
89
|
+
|
|
90
|
+
- name: Push version tag
|
|
91
|
+
if: ${{ !inputs.dry_run }}
|
|
92
|
+
run: git push origin "${{ steps.version.outputs.tag }}"
|
|
93
|
+
|
|
94
|
+
- name: Clean up tag on dry run
|
|
95
|
+
if: ${{ inputs.dry_run }}
|
|
96
|
+
run: git tag -d "${{ steps.version.outputs.tag }}"
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
#Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# UV
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
#uv.lock
|
|
102
|
+
|
|
103
|
+
# poetry
|
|
104
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
105
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
106
|
+
# commonly ignored for libraries.
|
|
107
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
108
|
+
#poetry.lock
|
|
109
|
+
|
|
110
|
+
# pdm
|
|
111
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
112
|
+
#pdm.lock
|
|
113
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
114
|
+
# in version control.
|
|
115
|
+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
|
116
|
+
.pdm.toml
|
|
117
|
+
.pdm-python
|
|
118
|
+
.pdm-build/
|
|
119
|
+
|
|
120
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
121
|
+
__pypackages__/
|
|
122
|
+
|
|
123
|
+
# Celery stuff
|
|
124
|
+
celerybeat-schedule
|
|
125
|
+
celerybeat.pid
|
|
126
|
+
|
|
127
|
+
# SageMath parsed files
|
|
128
|
+
*.sage.py
|
|
129
|
+
|
|
130
|
+
# Environments
|
|
131
|
+
.env
|
|
132
|
+
.venv
|
|
133
|
+
env/
|
|
134
|
+
venv/
|
|
135
|
+
ENV/
|
|
136
|
+
env.bak/
|
|
137
|
+
venv.bak/
|
|
138
|
+
|
|
139
|
+
# Spyder project settings
|
|
140
|
+
.spyderproject
|
|
141
|
+
.spyproject
|
|
142
|
+
|
|
143
|
+
# Rope project settings
|
|
144
|
+
.ropeproject
|
|
145
|
+
|
|
146
|
+
# mkdocs documentation
|
|
147
|
+
/site
|
|
148
|
+
|
|
149
|
+
# mypy
|
|
150
|
+
.mypy_cache/
|
|
151
|
+
.dmypy.json
|
|
152
|
+
dmypy.json
|
|
153
|
+
|
|
154
|
+
# Pyre type checker
|
|
155
|
+
.pyre/
|
|
156
|
+
|
|
157
|
+
# pytype static type analyzer
|
|
158
|
+
.pytype/
|
|
159
|
+
|
|
160
|
+
# Cython debug symbols
|
|
161
|
+
cython_debug/
|
|
162
|
+
|
|
163
|
+
# PyCharm
|
|
164
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
165
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
166
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
167
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
168
|
+
#.idea/
|
|
169
|
+
|
|
170
|
+
# Ruff stuff:
|
|
171
|
+
.ruff_cache/
|
|
172
|
+
|
|
173
|
+
# PyPI configuration file
|
|
174
|
+
.pypirc
|
graphora-0.0.0/CLA.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Contributor License Agreement (CLA)
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Graphora (the "Project"). This Contributor License Agreement ("Agreement") documents the rights granted by contributors to Arivan Labs.
|
|
4
|
+
|
|
5
|
+
## Why Do We Need a CLA?
|
|
6
|
+
|
|
7
|
+
This CLA allows us to:
|
|
8
|
+
- Offer Graphora under both open source (AGPL v3) and commercial licenses
|
|
9
|
+
- Protect the project and all its users from legal issues
|
|
10
|
+
- Ensure we have the rights to distribute your contributions
|
|
11
|
+
- Maintain the ability to change the license if necessary for the project's health
|
|
12
|
+
|
|
13
|
+
## Agreement
|
|
14
|
+
|
|
15
|
+
By submitting a contribution to this project, you agree to the following terms and conditions for your present and future contributions:
|
|
16
|
+
|
|
17
|
+
### 1. Definitions
|
|
18
|
+
|
|
19
|
+
**"You"** (or **"Your"**) means the copyright owner or legal entity authorized by the copyright owner that is making this Agreement.
|
|
20
|
+
|
|
21
|
+
**"Contribution"** means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project for inclusion in, or documentation of, the Project.
|
|
22
|
+
|
|
23
|
+
**"Submit"** means any form of electronic, verbal, or written communication sent to the Project, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems.
|
|
24
|
+
|
|
25
|
+
### 2. Grant of Copyright License
|
|
26
|
+
|
|
27
|
+
You hereby grant to Arivan Labs and to recipients of software distributed by Arivan Labs a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works under any license, including without limitation:
|
|
28
|
+
- The GNU Affero General Public License v3 (AGPL v3)
|
|
29
|
+
- Any future version of the AGPL
|
|
30
|
+
- A proprietary commercial license
|
|
31
|
+
|
|
32
|
+
### 3. Grant of Patent License
|
|
33
|
+
|
|
34
|
+
You hereby grant to Arivan Labs and to recipients of software distributed by Arivan Labs a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted.
|
|
35
|
+
|
|
36
|
+
### 4. Representations
|
|
37
|
+
|
|
38
|
+
You represent that:
|
|
39
|
+
|
|
40
|
+
a) You are legally entitled to grant the above licenses.
|
|
41
|
+
|
|
42
|
+
b) Each of Your Contributions is Your original creation (see section 6 for submissions on behalf of others).
|
|
43
|
+
|
|
44
|
+
c) Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.
|
|
45
|
+
|
|
46
|
+
d) If Your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, or that your employer has waived such rights for your Contributions to the Project.
|
|
47
|
+
|
|
48
|
+
### 5. Support
|
|
49
|
+
|
|
50
|
+
You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
|
|
51
|
+
|
|
52
|
+
### 6. Third-Party Works
|
|
53
|
+
|
|
54
|
+
Should You wish to submit work that is not Your original creation, You may submit it to the Project separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".
|
|
55
|
+
|
|
56
|
+
### 7. Notification
|
|
57
|
+
|
|
58
|
+
You agree to notify Arivan Labs of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## How to Sign
|
|
63
|
+
|
|
64
|
+
### For Individual Contributors
|
|
65
|
+
|
|
66
|
+
By adding the following line to your pull request description, you acknowledge that you have read and agree to this CLA:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
I have read and agree to the Contributor License Agreement.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Alternatively, you may send an email to `support@graphora.io` with the following information:
|
|
73
|
+
- Your full name
|
|
74
|
+
- Your email address
|
|
75
|
+
- GitHub username
|
|
76
|
+
- The statement: "I have read and agree to the Contributor License Agreement"
|
|
77
|
+
|
|
78
|
+
### For Corporate Contributors
|
|
79
|
+
|
|
80
|
+
If you are contributing on behalf of a corporation, your authorized representative must send an email to `support@graphora.io` with:
|
|
81
|
+
- Corporation name
|
|
82
|
+
- Authorized signatory name and title
|
|
83
|
+
- List of employees authorized to contribute (or "*" for all employees)
|
|
84
|
+
- Corporate email domain
|
|
85
|
+
- The statement: "On behalf of [Corporation Name], I have read and agree to the Corporate Contributor License Agreement"
|
|
86
|
+
|
|
87
|
+
We will maintain a public record of CLA signatories (individual names and corporate entities only, not email addresses).
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Corporate Contributor License Agreement
|
|
92
|
+
|
|
93
|
+
For corporations wishing to contribute, please download and sign the [Corporate CLA](CLA-CORPORATE.md) and send it to `support@graphora.io`.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
**Questions?** Contact us at `support@graphora.io` or open an issue in the repository.
|