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.
Files changed (41) hide show
  1. graphora-0.0.0/.github/workflows/publish.yml +96 -0
  2. graphora-0.0.0/.gitignore +174 -0
  3. graphora-0.0.0/CLA.md +97 -0
  4. graphora-0.0.0/CONTRIBUTING.md +406 -0
  5. graphora-0.0.0/LICENSE +21 -0
  6. graphora-0.0.0/PKG-INFO +312 -0
  7. graphora-0.0.0/README.md +276 -0
  8. graphora-0.0.0/SECURITY.md +207 -0
  9. graphora-0.0.0/SUPPORT.md +238 -0
  10. graphora-0.0.0/TRADEMARK.md +136 -0
  11. graphora-0.0.0/docs/api_reference.md +689 -0
  12. graphora-0.0.0/docs/index.md +48 -0
  13. graphora-0.0.0/docs/quickstart.md +177 -0
  14. graphora-0.0.0/examples/manage_ontology.py +132 -0
  15. graphora-0.0.0/examples/merge_graph_data.py +148 -0
  16. graphora-0.0.0/examples/modify_graph.py +157 -0
  17. graphora-0.0.0/examples/quality_validation.py +49 -0
  18. graphora-0.0.0/examples/upload_and_transform.py +163 -0
  19. graphora-0.0.0/graphora/__init__.py +15 -0
  20. graphora-0.0.0/graphora/cli/__init__.py +8 -0
  21. graphora-0.0.0/graphora/cli/api_manager.py +380 -0
  22. graphora-0.0.0/graphora/cli/commands/__init__.py +1 -0
  23. graphora-0.0.0/graphora/cli/commands/config_cmd.py +225 -0
  24. graphora-0.0.0/graphora/cli/commands/extract.py +765 -0
  25. graphora-0.0.0/graphora/cli/commands/schema.py +270 -0
  26. graphora-0.0.0/graphora/cli/config.py +221 -0
  27. graphora-0.0.0/graphora/cli/main.py +241 -0
  28. graphora-0.0.0/graphora/cli/runtime.py +267 -0
  29. graphora-0.0.0/graphora/client.py +669 -0
  30. graphora-0.0.0/graphora/exceptions.py +22 -0
  31. graphora-0.0.0/graphora/models.py +914 -0
  32. graphora-0.0.0/graphora/utils.py +60 -0
  33. graphora-0.0.0/graphora.egg-info/PKG-INFO +312 -0
  34. graphora-0.0.0/graphora.egg-info/SOURCES.txt +39 -0
  35. graphora-0.0.0/graphora.egg-info/dependency_links.txt +1 -0
  36. graphora-0.0.0/graphora.egg-info/entry_points.txt +2 -0
  37. graphora-0.0.0/graphora.egg-info/requires.txt +19 -0
  38. graphora-0.0.0/graphora.egg-info/top_level.txt +1 -0
  39. graphora-0.0.0/pyproject.toml +54 -0
  40. graphora-0.0.0/requirements.txt +3 -0
  41. 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.