graphxr-database-proxy 1.0.0__tar.gz → 1.0.2__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 (63) hide show
  1. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/PKG-INFO +31 -3
  2. graphxr_database_proxy-1.0.0/readme.md → graphxr_database_proxy-1.0.2/README.md +30 -2
  3. graphxr_database_proxy-1.0.0/readme.zh.md → graphxr_database_proxy-1.0.2/README.zh.md +37 -54
  4. graphxr_database_proxy-1.0.2/doc/API_Reference.md +493 -0
  5. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/doc/DEV_GUIDE.md +16 -2
  6. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/doc/DEV_GUIDE.zh.md +16 -1
  7. graphxr_database_proxy-1.0.0/doc/PYPI_PUBLISHING.md → graphxr_database_proxy-1.0.2/doc/PYPI_PUBLISHING.zh.md +3 -3
  8. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/doc/USAGE.md +1 -1
  9. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/doc/USAGE.zh.md +1 -1
  10. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/env_variables_example.py +1 -0
  11. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/quick_start.py +38 -5
  12. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/pyproject.toml +2 -2
  13. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/__init__.py +2 -2
  14. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/api/google.py +31 -7
  15. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/common/util.py +13 -3
  16. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/drivers/spanner.py +108 -51
  17. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/launcher.py +64 -0
  18. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/main.py +14 -1
  19. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/models/project.py +486 -0
  20. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/proxy.py +74 -32
  21. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/static/index.html +1 -1
  22. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/static/main.7391ee9773c403483393.css.map +1 -1
  23. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/static/main.e566ea8f459c5b8df2b4.js +2 -0
  24. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/static/main.e566ea8f459c5b8df2b4.js.map +1 -0
  25. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/static/vendors.f303e096f3b6701f9410.js +3 -0
  26. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/static/vendors.70542a99f336a8021013.js.LICENSE.txt → graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/static/vendors.f303e096f3b6701f9410.js.LICENSE.txt +2 -2
  27. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy/static/vendors.f303e096f3b6701f9410.js.map +1 -0
  28. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy.egg-info/PKG-INFO +31 -3
  29. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy.egg-info/SOURCES.txt +10 -11
  30. graphxr_database_proxy-1.0.2/src/graphxr_database_proxy.egg-info/entry_points.txt +2 -0
  31. graphxr_database_proxy-1.0.0/doc/RELEASE_CHECKLIST.md +0 -86
  32. graphxr_database_proxy-1.0.0/examples/python.test.py +0 -26
  33. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/models/project.py +0 -170
  34. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/static/main.ce3fbb85a7bc9452edb9.js +0 -2
  35. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/static/main.ce3fbb85a7bc9452edb9.js.map +0 -1
  36. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/static/vendors.70542a99f336a8021013.js +0 -3
  37. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy/static/vendors.70542a99f336a8021013.js.map +0 -1
  38. graphxr_database_proxy-1.0.0/src/graphxr_database_proxy.egg-info/entry_points.txt +0 -2
  39. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/LICENSE +0 -0
  40. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/MANIFEST.in +0 -0
  41. /graphxr_database_proxy-1.0.0/doc/FRONTEND_INTEGRATION.md → /graphxr_database_proxy-1.0.2/doc/FRONTEND_INTEGRATION.zh.md +0 -0
  42. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/auth_methods_example.py +0 -0
  43. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/future_database_support.py +0 -0
  44. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/get_project_apis_example.py +0 -0
  45. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/examples/python_api_example.py +0 -0
  46. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/requirements.txt +0 -0
  47. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/setup.cfg +0 -0
  48. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/api/__init__.py +0 -0
  49. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/api/database.py +0 -0
  50. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/api/projects.py +0 -0
  51. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/drivers/__init__.py +0 -0
  52. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/drivers/base.py +0 -0
  53. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/drivers/factory.py +0 -0
  54. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/models/__init__.py +0 -0
  55. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/models/google.py +0 -0
  56. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/proxyForDev.py +0 -0
  57. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/services/__init__.py +0 -0
  58. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/services/project_service.py +0 -0
  59. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/static/favicon.ico +0 -0
  60. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy/static/main.7391ee9773c403483393.css +0 -0
  61. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy.egg-info/dependency_links.txt +0 -0
  62. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy.egg-info/requires.txt +0 -0
  63. {graphxr_database_proxy-1.0.0 → graphxr_database_proxy-1.0.2}/src/graphxr_database_proxy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphxr-database-proxy
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: GraphXR Database Proxy - Secure middleware for connecting GraphXR to databases
5
5
  Author-email: Sean Li <sean@kineviz.com>, Kineviz <support@kineviz.com>
6
6
  License-Expression: MIT
@@ -48,7 +48,7 @@ Dynamic: license-file
48
48
  [![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)
49
49
  [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com)
50
50
 
51
- > **Language**: [English](https://github.com/Kineviz/graphxr-database-proxy/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/readme.zh.md)
51
+ > **Language**: [English](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.zh.md)
52
52
 
53
53
  A secure middleware that connects [GraphXR](https://www.kineviz.com/graphxr) to various backend databases with zero trust architecture.
54
54
 
@@ -115,7 +115,7 @@ graphxr-proxy --ui
115
115
  ```
116
116
  > Open http://localhost:9080/admin for configuration
117
117
 
118
- **Option 2: Python Code**
118
+ **Option 2: Python Code with Service Account JSON**
119
119
  ```python
120
120
  from graphxr_database_proxy import DatabaseProxy
121
121
 
@@ -146,6 +146,34 @@ proxy.start(
146
146
  )
147
147
  ```
148
148
 
149
+ **Option 3: Python Code with Google Cloud ADC**
150
+ > Your should have set up Google Application Default Credentials (ADC) on the machine running the proxy. See [Google Cloud ADC Documentation](https://cloud.google.com/docs/authentication/production#automatically).
151
+
152
+ ```python
153
+ from graphxr_database_proxy import DatabaseProxy
154
+ proxy = DatabaseProxy()
155
+
156
+ google_adc_credentials={
157
+ "type": "google_ADC"
158
+ },
159
+
160
+ project_id = proxy.add_project(
161
+ project_name="project_name",
162
+ database_type="spanner",
163
+ project_id="gcp-project-id",
164
+ instance_id="spanner-instance-id",
165
+ database_id="spanner-database-id",
166
+ credentials=google_adc_credentials,
167
+ graph_name="graph_name" # Optional
168
+ )
169
+
170
+ proxy.start(
171
+ host="0.0.0.0",
172
+ port=9080,
173
+ show_apis=True
174
+ )
175
+ ```
176
+
149
177
  ## 🐳 Docker
150
178
 
151
179
  ```bash
@@ -4,7 +4,7 @@
4
4
  [![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)
5
5
  [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com)
6
6
 
7
- > **Language**: [English](https://github.com/Kineviz/graphxr-database-proxy/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/readme.zh.md)
7
+ > **Language**: [English](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.zh.md)
8
8
 
9
9
  A secure middleware that connects [GraphXR](https://www.kineviz.com/graphxr) to various backend databases with zero trust architecture.
10
10
 
@@ -71,7 +71,7 @@ graphxr-proxy --ui
71
71
  ```
72
72
  > Open http://localhost:9080/admin for configuration
73
73
 
74
- **Option 2: Python Code**
74
+ **Option 2: Python Code with Service Account JSON**
75
75
  ```python
76
76
  from graphxr_database_proxy import DatabaseProxy
77
77
 
@@ -102,6 +102,34 @@ proxy.start(
102
102
  )
103
103
  ```
104
104
 
105
+ **Option 3: Python Code with Google Cloud ADC**
106
+ > Your should have set up Google Application Default Credentials (ADC) on the machine running the proxy. See [Google Cloud ADC Documentation](https://cloud.google.com/docs/authentication/production#automatically).
107
+
108
+ ```python
109
+ from graphxr_database_proxy import DatabaseProxy
110
+ proxy = DatabaseProxy()
111
+
112
+ google_adc_credentials={
113
+ "type": "google_ADC"
114
+ },
115
+
116
+ project_id = proxy.add_project(
117
+ project_name="project_name",
118
+ database_type="spanner",
119
+ project_id="gcp-project-id",
120
+ instance_id="spanner-instance-id",
121
+ database_id="spanner-database-id",
122
+ credentials=google_adc_credentials,
123
+ graph_name="graph_name" # Optional
124
+ )
125
+
126
+ proxy.start(
127
+ host="0.0.0.0",
128
+ port=9080,
129
+ show_apis=True
130
+ )
131
+ ```
132
+
105
133
  ## 🐳 Docker
106
134
 
107
135
  ```bash
@@ -4,7 +4,7 @@
4
4
  [![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)
5
5
  [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com)
6
6
 
7
- > **语言**: [English](https://github.com/Kineviz/graphxr-database-proxy/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/readme.zh.md)
7
+ > **语言**: [English](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.md) | [中文](https://github.com/Kineviz/graphxr-database-proxy/blob/main/readme.zh.md)
8
8
 
9
9
  一个安全的中间件,采用零信任架构将 [GraphXR 前端](https://www.kineviz.com/graphxr) 连接到各种后端数据库。
10
10
 
@@ -53,20 +53,19 @@ graphxr-proxy --ui
53
53
 
54
54
  ## 📚 Python 使用指南
55
55
 
56
- ### DatabaseProxy 类方法
56
+ **方式 1:Web UI(推荐)**
57
+ ```bash
58
+ graphxr-proxy --ui
59
+ ```
60
+ > 打开 http://localhost:9080/admin 进行配置
57
61
 
62
+ **方式 2:使用服务账号 JSON 的 Python 代码**
58
63
  ```python
59
64
  from graphxr_database_proxy import DatabaseProxy
60
65
 
61
66
  proxy = DatabaseProxy()
62
67
 
63
- ```
64
- #### `add_project()` (推荐)
65
-
66
- ```python
67
- # 使用 JSON 字符串
68
- service_account_json =
69
- {
68
+ service_account_json = {
70
69
  "type": "service_account",
71
70
  "project_id": "your-gcp-project-id",
72
71
  "private_key": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n",
@@ -75,64 +74,48 @@ service_account_json =
75
74
  }
76
75
 
77
76
  project_id = proxy.add_project(
78
- project_name="项目名称",
77
+ project_name="project_name",
79
78
  database_type="spanner",
80
79
  project_id="gcp-project-id",
81
80
  instance_id="spanner-instance-id",
82
81
  database_id="spanner-database-id",
83
- credentials=service_account_json, # JSON 字符串
84
- graph_name="图名称" # 可选
82
+ credentials=service_account_json,
83
+ graph_name="graph_name" # 可选
85
84
  )
86
- ```
87
85
 
88
-
89
- #### `get_project_apis()` (增强版)
90
- ```python
91
- # 获取所有项目的 API 端点
92
- all_apis = proxy.get_project_apis()
93
-
94
- # 通过项目名称获取特定项目的 API 端点 (新功能)
95
- project_apis = proxy.get_project_apis("项目名称")
96
- # 错误处理
97
- result = proxy.get_project_apis("不存在的项目")
98
- if "error" in result:
99
- print(f"项目未找到: {result['error']}")
100
- else:
101
- print(f"找到项目: {result['name']}")
102
- ```
103
-
104
- #### `start()`
105
- ```python
106
86
  proxy.start(
107
- host="0.0.0.0", # 绑定主机
108
- port=3002, # 绑定端口
109
- dev=False, # 开发模式(热重载)
110
- show_apis=True # 显示 API 端点信息
87
+ host="0.0.0.0",
88
+ port=9080,
89
+ show_apis=True
111
90
  )
112
91
  ```
113
92
 
114
- ### 示例文件
115
-
116
- - `examples/quick_start.py` - 快速启动示例
117
- - `examples/service-account-example.json` - Service Account JSON 文件模板
118
-
119
- ### 环境变量支持
120
-
121
- 支持以下环境变量来配置默认值:
122
-
123
- | 环境变量 | 说明 | 示例 |
124
- |----------|------|------|
125
- | `PROJECT_NAME` | 默认项目名称 | `MySpannerProject` |
126
- | `SPANNER_PROJECT_ID` | 默认 GCP 项目 ID | `your-gcp-project-id` |
127
- | `SPANNER_INSTANCE_ID` | 默认 Spanner 实例 ID | `your-spanner-instance-id` |
128
- | `SPANNER_DATABASE_ID` | 默认 Spanner 数据库 ID | `your-database-id` |
129
- | `SPANNER_CREDENTIALS_PATH` | 默认服务账户 JSON 路径 | `./service-account.json` |
130
- | `SPANNER_GRAPH_NAME` | 默认图名称 | `my_graph` |
93
+ **方式 3:使用 Google Cloud ADC 的 Python 代码**
94
+ > 您需要在运行代理的机器上设置 Google Application Default Credentials (ADC)。请参阅 [Google Cloud ADC 文档](https://cloud.google.com/docs/authentication/production#automatically)。
131
95
 
132
96
  ```python
133
- # 使用环境变量,无需任何参数
97
+ from graphxr_database_proxy import DatabaseProxy
134
98
  proxy = DatabaseProxy()
135
- project_id = proxy.add_project()
99
+
100
+ google_adc_credentials={
101
+ "type": "google_ADC"
102
+ },
103
+
104
+ project_id = proxy.add_project(
105
+ project_name="project_name",
106
+ database_type="spanner",
107
+ project_id="gcp-project-id",
108
+ instance_id="spanner-instance-id",
109
+ database_id="spanner-database-id",
110
+ credentials=google_adc_credentials,
111
+ graph_name="graph_name" # 可选
112
+ )
113
+
114
+ proxy.start(
115
+ host="0.0.0.0",
116
+ port=9080,
117
+ show_apis=True
118
+ )
136
119
  ```
137
120
 
138
121
  ## 🐳 Docker