graphaide 0.4.1__py3-none-any.whl

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 (57) hide show
  1. graphaide-0.4.1.dist-info/METADATA +191 -0
  2. graphaide-0.4.1.dist-info/RECORD +57 -0
  3. graphaide-0.4.1.dist-info/WHEEL +5 -0
  4. graphaide-0.4.1.dist-info/entry_points.txt +2 -0
  5. graphaide-0.4.1.dist-info/licenses/LICENSE.txt +23 -0
  6. graphaide-0.4.1.dist-info/top_level.txt +1 -0
  7. graphgen/__init__.py +16 -0
  8. graphgen/api.py +463 -0
  9. graphgen/cli.py +747 -0
  10. graphgen/core.py +713 -0
  11. graphgen/v2/GraphDBManager.py +116 -0
  12. graphgen/v2/ModelManager.py +225 -0
  13. graphgen/v2/VectorStoreManager.py +148 -0
  14. graphgen/v2/__init__.py +5 -0
  15. graphgen/v2/agents/AgentManager.py +193 -0
  16. graphgen/v2/agents/__init__.py +87 -0
  17. graphgen/v2/agents/base.py +125 -0
  18. graphgen/v2/agents/edgesloader.py +140 -0
  19. graphgen/v2/agents/edgetable2textgenerator.py +65 -0
  20. graphgen/v2/agents/embeddingprojector.py +129 -0
  21. graphgen/v2/agents/embeddingvisualizer.py +231 -0
  22. graphgen/v2/agents/extractmerger.py +182 -0
  23. graphgen/v2/agents/extractor.py +488 -0
  24. graphgen/v2/agents/intentpredictor.py +51 -0
  25. graphgen/v2/agents/neo4jloader.py +119 -0
  26. graphgen/v2/agents/neo4jpostprocessor.py +178 -0
  27. graphgen/v2/agents/neo4jqueryrunner.py +82 -0
  28. graphgen/v2/agents/nodes4edgesloader.py +151 -0
  29. graphgen/v2/agents/nodesloader.py +131 -0
  30. graphgen/v2/agents/ontologygenerator.py +251 -0
  31. graphgen/v2/agents/ontologyloader.py +173 -0
  32. graphgen/v2/agents/questiongraphgenerator.py +52 -0
  33. graphgen/v2/agents/simpleagent.py +55 -0
  34. graphgen/v2/agents/simplerag.py +90 -0
  35. graphgen/v2/agents/textaugmentor.py +60 -0
  36. graphgen/v2/agents/vectordbloader.py +1441 -0
  37. graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/data_level0.bin +0 -0
  38. graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/header.bin +0 -0
  39. graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/length.bin +0 -0
  40. graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/link_lists.bin +0 -0
  41. graphgen/v2/docs/GA_VDB/chroma.sqlite3 +0 -0
  42. graphgen/v2/functionnode.py +272 -0
  43. graphgen/v2/globalconfig.py +55 -0
  44. graphgen/v2/mcp_server.py +40 -0
  45. graphgen/v2/query.py +0 -0
  46. graphgen/v2/state.py +409 -0
  47. graphgen/v2/tools.py +339 -0
  48. graphgen/v2/utils/__init__.py +238 -0
  49. graphgen/v2/utils/image_utils.py +184 -0
  50. graphgen/v2/utils.py +175 -0
  51. graphgen/v2/workflows/KGIngest.py +84 -0
  52. graphgen/v2/workflows/__init__.py +71 -0
  53. graphgen/v2/workflows/base.py +244 -0
  54. graphgen/v2/workflows/manager.py +1195 -0
  55. graphgen/v2/workflows/retriever_factory.py +204 -0
  56. graphgen/v2/workflows/schemas.py +435 -0
  57. graphgen/v2/workflows/utils.py +274 -0
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: graphaide
3
+ Version: 0.4.1
4
+ Summary: Multi-agentic knowledge graph construction and reasoning system
5
+ Home-page: https://github.com/pnnl-int/GraphAide
6
+ Author: Sumit Purohit
7
+ Author-email: sumit.purohit@pnnl.gov
8
+ License: MIT
9
+ Project-URL: Source, https://github.com/pnnl-int/GraphAide
10
+ Project-URL: Documentation, https://github.com/pnnl-int/GraphAide#quickstart
11
+ Project-URL: Tracker, https://github.com/pnnl-int/GraphAide/issues
12
+ Project-URL: License, https://github.com/pnnl-int/GraphAide/blob/main/LICENSE.txt
13
+ Platform: any
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Requires-Python: >=3.11
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE.txt
25
+ Requires-Dist: importlib-metadata==8.7.1
26
+ Requires-Dist: openai==2.15.0
27
+ Requires-Dist: langchain<1.2.0,>=1.0.7
28
+ Requires-Dist: sentence_transformers==5.2.1
29
+ Requires-Dist: langchain_community
30
+ Requires-Dist: langchain_openai
31
+ Requires-Dist: langchain-chroma
32
+ Requires-Dist: langgraph==1.0.8
33
+ Requires-Dist: langgraph-prebuilt==1.0.7
34
+ Requires-Dist: langchain-aws
35
+ Requires-Dist: botocore[crt]>=1.42.0
36
+ Requires-Dist: boto3>=1.42.0
37
+ Requires-Dist: langchain-anthropic
38
+ Requires-Dist: langchain_google_genai
39
+ Requires-Dist: langchain-mcp-adapters
40
+ Requires-Dist: langchain-neo4j==0.8.0
41
+ Requires-Dist: fastmcp==2.14.5
42
+ Requires-Dist: neo4j==6.1.0
43
+ Requires-Dist: ragas==0.4.3
44
+ Requires-Dist: pathlib==1.0.1
45
+ Requires-Dist: pypdf==6.6.2
46
+ Requires-Dist: pydantic==2.12.5
47
+ Requires-Dist: rdflib>=6.0.0
48
+ Requires-Dist: numba==0.61.2
49
+ Requires-Dist: umap-learn==0.5.11
50
+ Requires-Dist: plotly==6.5.2
51
+ Requires-Dist: kaleido==0.2.1
52
+ Requires-Dist: pandas==3.0.0
53
+ Requires-Dist: numpy==2.2.6
54
+ Requires-Dist: matplotlib==3.10.8
55
+ Requires-Dist: dash==3.4.0
56
+ Requires-Dist: py2neo==2021.2.4
57
+ Requires-Dist: autogen-agentchat==0.7.5
58
+ Requires-Dist: autogen-ext[openai]==0.7.5
59
+ Requires-Dist: python-dotenv==1.2.1
60
+ Requires-Dist: ipykernel==7.1.0
61
+ Requires-Dist: jupyterlab==4.5.3
62
+ Requires-Dist: webencodings==0.5.1
63
+ Requires-Dist: langchain-text-splitters==1.1.0
64
+ Requires-Dist: typer[all]>=0.9.0
65
+ Requires-Dist: fastapi>=0.110.0
66
+ Requires-Dist: uvicorn[standard]>=0.29.0
67
+ Requires-Dist: rich>=13.0.0
68
+ Requires-Dist: qdrant-client<=1.18.0,>=1.18.0
69
+ Requires-Dist: langchain-qdrant>=0.1.0
70
+ Requires-Dist: pillow>=10.0.0
71
+ Requires-Dist: pdf2image>=1.16.0
72
+ Provides-Extra: testing
73
+ Requires-Dist: setuptools; extra == "testing"
74
+ Requires-Dist: pytest; extra == "testing"
75
+ Requires-Dist: pytest-cov; extra == "testing"
76
+ Dynamic: license-file
77
+
78
+ # GraphAide
79
+
80
+ <p align="center">
81
+ <img src="tests/notebooks/GraphAideLogo_Label_Final.png" alt="GraphAide Logo" width="400">
82
+ </p>
83
+
84
+ GraphAide is an advanced multi-agentic query and reasoning system that constructs knowledge graphs (KG) from diverse sources and enables querying and reasoning over the resulting graphs. It harnesses both knowledge graphs and LLMs to rapidly develop domain-specific digital assistants.
85
+
86
+ ## Technical Summary
87
+
88
+ GraphAide v2 is a multi-agent system that uses LangGraph for workflow orchestration, LLMs for entity/relationship extraction, Neo4j for graph storage, and ChromaDB for vector embeddings.
89
+
90
+ The codebase follows a factory pattern: `ModelFactory`, `GraphDBFactory`, `VectorStoreFactory`, and `AgentFactory` create and inject dependencies into specialized agents. Agents communicate through shared state objects (`KGGenerationState`) that track nodes, edges, and messages as data flows through the pipeline.
91
+
92
+ **Project Structure:**
93
+ - `src/graphgen/v2/` - Core modules (factories, state, workflows)
94
+ - `src/graphgen/v2/agents/` - Agent implementations (extractor, loaders, visualizers)
95
+ - `templates/` - Prompt templates for each agent
96
+ - `tests/notebooks/` - Demo notebooks and test data
97
+
98
+ **Tested Models:**
99
+
100
+ | Provider | LLM | Embedding |
101
+ |----------|-----|-----------|
102
+ | LMStudio (local) | `google/gemma-3-27b:2` | `text-embedding-nomic-embed-text-v1.5` |
103
+ | AWS Bedrock | `anthropic.claude-3-5-sonnet-20241022-v2:0` | `amazon.titan-embed-text-v1` |
104
+ | OpenAI | `gpt-4o` | `text-embedding-3-small` |
105
+
106
+ ## Quick Start
107
+
108
+ 📚 **Documentation:**
109
+ - **[QUICKSTART.md](QUICKSTART.md)** - Installation, setup, and first examples
110
+ - **[ARCHITECTURE.md](ARCHITECTURE.md)** - Deep technical overview (factories, agents, state, workflows)
111
+ - **[REFERENCE.md](REFERENCE.md)** - Complete CLI/API reference and feature matrix
112
+ - **[CLAUDE.md](CLAUDE.md)** - Guide for Claude AI Code (developers only)
113
+
114
+ ## Installation
115
+
116
+ ```bash
117
+ # From project root
118
+ pip install .
119
+
120
+ # With Docker
121
+ docker compose up -d
122
+ ```
123
+
124
+ ## Deployment Scripts
125
+
126
+ ### Linux/Mac/WSL
127
+ ```bash
128
+ ./graphaide_docker_build.sh 2.0.1 # Build production + dev images
129
+ ./start-graphaide-prod.sh # Start production services
130
+ ./start-graphaide-dev.sh # Start development services
131
+ ```
132
+
133
+ ### Windows (PowerShell)
134
+ ```powershell
135
+ .\scripts\windows\graphaide_docker_build.ps1 2.0.1 # Build images
136
+ .\scripts\windows\start-graphaide-prod.ps1 # Start production
137
+ .\scripts\windows\start-graphaide-dev.ps1 # Start development
138
+ ```
139
+
140
+ **Note:** For Windows users, we recommend using WSL (Windows Subsystem for Linux) with the bash scripts above. Native PowerShell scripts are available in `scripts/windows/` for reference.
141
+
142
+ ## Usage
143
+
144
+ **Ways to Run GraphAide:**
145
+
146
+ | Mode | Description |
147
+ |------|-------------|
148
+ | **CLI (Host)** | `graphaide extract`, `graphaide query`, etc. |
149
+ | **CLI (Docker)** | Run inside container via `docker exec` |
150
+ | **Python API** | Import `WorkflowManager` for programmatic access |
151
+ | **REST API** | FastAPI endpoints at http://localhost:8000 |
152
+
153
+ **Getting Started:**
154
+ - Start with [QUICKSTART.md](QUICKSTART.md) for 5-minute setup
155
+ - Run `graphaide extract document.pdf` to test locally
156
+ - See `tests/notebooks/demoGraphAide.ipynb` for advanced examples
157
+
158
+ ## Support
159
+
160
+ Please reach out to Sumit.Purohit@pnnl.gov for any questions.
161
+
162
+ ## Authors and acknowledgment
163
+ Please reach out to Sumit.Purohit@pnnl.gov for any questions.
164
+
165
+ ## Citation
166
+ If you use GraphAide in your research, please cite:
167
+
168
+ ```bibtex
169
+ @inproceedings{purohit2024graphaide,
170
+ title={GraphAide: Advanced Graph-Assisted Query and Reasoning System},
171
+ author={Purohit, Sumit and Chin, George and Mackey, Patrick S and Cottam, Joseph A},
172
+ booktitle={2024 IEEE International Conference on Big Data (BigData)},
173
+ pages={3485--3493},
174
+ year={2024},
175
+ organization={IEEE}
176
+ }
177
+ ```
178
+
179
+ The research described in this paper is partially supported
180
+ by the Resilience Through Data Driven, Intelligently Designed
181
+ Control (RD2C) Initiative at Pacific Northwest National Laboratory (PNNL) and the United States federal government.
182
+ Pacific Northwest National Laboratory is a multiprogram
183
+ national laboratory operated for the US Department of Energy
184
+ (DOE) by Battelle Memorial Institute under Contract No. DEAC05-76RL01830. PNNL Information Release PNNL-SA205147.
185
+
186
+ ## License
187
+ Please refer LICENSE and DISCLAIMER files for details.
188
+
189
+
190
+ ## Project status
191
+ Active development
@@ -0,0 +1,57 @@
1
+ graphaide-0.4.1.dist-info/licenses/LICENSE.txt,sha256=XizNJii1UyZPqD_WoPhuwJLmiYj4VN21wQZwtic9xFQ,1309
2
+ graphgen/__init__.py,sha256=1LPGNCSfVziFCQWdmP-b-RC6jAAsMnq01DD_6TTX_sE,580
3
+ graphgen/api.py,sha256=5c8LLKVD0VwTzje-OgcvwPYl1Ibx5vggcRoBHAe8eXo,15973
4
+ graphgen/cli.py,sha256=0z5foIoFVgTtBBhYZHFSgH4A31w0Xzzp3H-4Seyc7uE,28390
5
+ graphgen/core.py,sha256=yheFcQczpnze6f1IMCuN-gD6Uq63zqEfb0b77UFDNMs,27666
6
+ graphgen/v2/GraphDBManager.py,sha256=quHwfUr5m2q-zbtWTk7E9Q_hfS3PSDeZwKWrcChXnIM,5305
7
+ graphgen/v2/ModelManager.py,sha256=1FwnYaXj6ot8gI7yZuCYQBbX9Ipw6xO0jj0Kz59u9x4,10606
8
+ graphgen/v2/VectorStoreManager.py,sha256=lAFAKlH203jpO4gcnPfm_ysTGtpF_7Ktql59H67ZZQ8,6906
9
+ graphgen/v2/__init__.py,sha256=2m46cz8aZsaEy7kxDiY3DUr47rwEGeSyoDV9SHyIEPk,77
10
+ graphgen/v2/functionnode.py,sha256=vuSpeZSohru_WBp0MEwT_Hc7oAuofaAuUynBUa7LIIM,9805
11
+ graphgen/v2/globalconfig.py,sha256=4_6lWGCHv-CJdiyivB5DVp1kRPwP_eqFlP269OuUBvg,1856
12
+ graphgen/v2/mcp_server.py,sha256=tHt5vnqvEjoXhLMzycn4Ft8wWGimq31TD8JpvhqMLHM,1205
13
+ graphgen/v2/query.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ graphgen/v2/state.py,sha256=8Wqj2BDGhod-37YdI2L8u3Y98LQKAW6d3MQL-tGNF-c,18997
15
+ graphgen/v2/tools.py,sha256=_oSC5XMelmBO08hx0fWuvjN2IBR3euXnhSxMonKDYDk,11403
16
+ graphgen/v2/utils.py,sha256=5PXBfmoCf215sMXZ2PvrL070DZvyjEUoGcrAinzqhlU,5750
17
+ graphgen/v2/agents/AgentManager.py,sha256=-L_UxrmUZg810aeyYkQW6xQJa5f-5WOEB7Qjvz5DfPw,7838
18
+ graphgen/v2/agents/__init__.py,sha256=uW982BAP7E5gBikOBIvZ3B0imrOqJfAGDKxxRtPgn3A,4398
19
+ graphgen/v2/agents/base.py,sha256=dMcp5A_mDxqUA1KC5WjkeeZxq8C6KcItQ9a8d8rnb2s,5153
20
+ graphgen/v2/agents/edgesloader.py,sha256=HL_PBnbl09AJ8saDQviJ0YFKc1BCr-ZNK2dfOIa4mAc,5401
21
+ graphgen/v2/agents/edgetable2textgenerator.py,sha256=AGTGerYtRTXojPNNe5leVy5lOn8D0pzmjpDyfTuszW4,2398
22
+ graphgen/v2/agents/embeddingprojector.py,sha256=byRnPHLXRh1-YxBcUKisBoG9OtP5aaqRdgEqcBSMvf8,5332
23
+ graphgen/v2/agents/embeddingvisualizer.py,sha256=QDdMP3_jcj9nCJLYU5vDoEsAf-3Qg0NrU5aHqBKfuU8,8975
24
+ graphgen/v2/agents/extractmerger.py,sha256=JJvBJ2DjBl7GHCQLWZUMy9lvuS1WL9EXA9WGnXgz9Y0,7478
25
+ graphgen/v2/agents/extractor.py,sha256=9Sxc-o1VlibkKhuavsr26XXlJMOj_QR0EI0M4gOolFw,21854
26
+ graphgen/v2/agents/intentpredictor.py,sha256=uYx57hzCt1MYYdqovanvGoRp0GKj7zF_Aq-zPUPEAO0,1898
27
+ graphgen/v2/agents/neo4jloader.py,sha256=rO5EqDUP8HXDFp5fD4ZrkxJVpoGx0g9vSJT0sczQ7e4,4398
28
+ graphgen/v2/agents/neo4jpostprocessor.py,sha256=GS-2CjdB23TrgV1acwvpAAQOOM-UIHXHFO-xUpkjQrg,7614
29
+ graphgen/v2/agents/neo4jqueryrunner.py,sha256=Z8YIBUMA4-cgWUTk0j3GUycU7WdUYFGiowmwYz0wOEA,3134
30
+ graphgen/v2/agents/nodes4edgesloader.py,sha256=rW3znLSkDep8NZhoFG-O641JLblefDjNSsdnQ9sbsw0,6054
31
+ graphgen/v2/agents/nodesloader.py,sha256=H9yg-DKeu94peEOJUsiDPIbw9RRCHacrqjfrOQJXlak,5076
32
+ graphgen/v2/agents/ontologygenerator.py,sha256=-zH0fednMI3hmbKdUnNp6IGUW1iZ9UdBXXCc-2c4pvY,9781
33
+ graphgen/v2/agents/ontologyloader.py,sha256=AoatH-_Nw30kcttZ7840uJL81Um7WrwmJzKr-L0cvLc,6487
34
+ graphgen/v2/agents/questiongraphgenerator.py,sha256=UwbVzvfnVApLnCX1XV1yipg1Wnvc1EuZ4T3j3eUuzps,1887
35
+ graphgen/v2/agents/simpleagent.py,sha256=07k5VK8CetdEtsdMSOVMgTsew5QX_5MkE52cdQWxOMc,1896
36
+ graphgen/v2/agents/simplerag.py,sha256=KHWp3P0TWMncM8fyMigcRimQGa4XwDAPC3bloXvfPoA,3904
37
+ graphgen/v2/agents/textaugmentor.py,sha256=NoenlYCgwNXQBDO4Q_GxNS7oMmNJl-TvXPBts30hlH8,2215
38
+ graphgen/v2/agents/vectordbloader.py,sha256=B9STfAMljjrl-pEa_mfrWs36PC6iMPOWf_VcfB5tr0Q,62970
39
+ graphgen/v2/docs/GA_VDB/chroma.sqlite3,sha256=WxVim5siFJrVHiyL-xz8tLaya2hCeg0KSRj6ANljZJY,196608
40
+ graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/data_level0.bin,sha256=ErXt3nOYJ48PFYpTXpJnKd6H7G4ye6Yk_H8T2sPRVhA,423600
41
+ graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/header.bin,sha256=vxLUSGUYx63fSIy0hUUmkCx46RlRmQ4eL04FXOyBTl0,100
42
+ graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/length.bin,sha256=2tsvOqjW_e4v5cUPpXVS7QgK-fXpzbl8gUVI1zAmt8I,400
43
+ graphgen/v2/docs/GA_VDB/6fc79c82-1c20-4a02-bb10-71dcaf3a17d7/link_lists.bin,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ graphgen/v2/utils/__init__.py,sha256=fnHehIMDRQhKB3lbGwH13HruuDMTMUJuxoBiBOKUX-M,7835
45
+ graphgen/v2/utils/image_utils.py,sha256=gvS9cwmLNE2wh2RU6iaDH-fv3XT26gHGrUTl4lGVF0k,5421
46
+ graphgen/v2/workflows/KGIngest.py,sha256=dgOyCzQyJaOhoEoOTyNi4sKn6hV2ciYK7kA1mRsqL0I,3654
47
+ graphgen/v2/workflows/__init__.py,sha256=rhoo2VttkXPANeFv_vdMLG_Zk5cJvCy74iETz3iBkak,1987
48
+ graphgen/v2/workflows/base.py,sha256=3-Bst-0XfsLe02DvxqmEn7PDiCc3Iebm_i8R1DTQ_aU,8680
49
+ graphgen/v2/workflows/manager.py,sha256=XnhFQ7dFt2vMJ794aMaGapFmPfdGNfNbHTeyEUvQqmQ,51308
50
+ graphgen/v2/workflows/retriever_factory.py,sha256=h_DLVQtvSfToIe1oo158bbdGkWQsPS6yh299anrVBUw,9516
51
+ graphgen/v2/workflows/schemas.py,sha256=ODLegGebQS06l63yvcnoDQDX-8GfvDGd-KfVsFiV18o,16760
52
+ graphgen/v2/workflows/utils.py,sha256=8Vx7nlnQDeHjV5MKbdHYV_zHUh7CF2y1tUpRnL_mWe8,8879
53
+ graphaide-0.4.1.dist-info/METADATA,sha256=AEd8M3TJbCRHUOUIy9vz4H36qgiUDWXK7ilqbxSVCRI,7473
54
+ graphaide-0.4.1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
55
+ graphaide-0.4.1.dist-info/entry_points.txt,sha256=nk2ho92XQRjingyCWGkzNW1r9Ka_EzznmvHbmyQF1fI,48
56
+ graphaide-0.4.1.dist-info/top_level.txt,sha256=z2O0X06I0LLZ5qPMl9yvMh3KoPdmwIgqYvXoJ8aZ_1U,9
57
+ graphaide-0.4.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ graphaide = graphgen.cli:main
@@ -0,0 +1,23 @@
1
+ LICENSE
2
+ Copyright Battelle Memorial Institute 2026
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1 @@
1
+ graphgen
graphgen/__init__.py ADDED
@@ -0,0 +1,16 @@
1
+ import sys
2
+
3
+ if sys.version_info[:2] >= (3, 8):
4
+ # TODO: Import directly (no need for conditional) when `python_requires = >= 3.8`
5
+ from importlib.metadata import PackageNotFoundError, version # pragma: no cover
6
+ else:
7
+ from importlib_metadata import PackageNotFoundError, version # pragma: no cover
8
+
9
+ try:
10
+ # Change here if project is renamed and does not equal the package name
11
+ dist_name = "GraphAide"
12
+ __version__ = version(dist_name)
13
+ except PackageNotFoundError: # pragma: no cover
14
+ __version__ = "unknown"
15
+ finally:
16
+ del version, PackageNotFoundError