zeo-integrations 0.1.0.post14__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.
- zeo_integrations-0.1.0.post14/.gitignore +9 -0
- zeo_integrations-0.1.0.post14/LICENSE +21 -0
- zeo_integrations-0.1.0.post14/NOTICE +65 -0
- zeo_integrations-0.1.0.post14/PKG-INFO +119 -0
- zeo_integrations-0.1.0.post14/README.md +41 -0
- zeo_integrations-0.1.0.post14/docs/inventory/README.md +148 -0
- zeo_integrations-0.1.0.post14/packages/README.md +26 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/LICENSE +21 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/NOTICE +21 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/README.md +37 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/pyproject.toml +31 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/src/zeo_integrations/hubspot/__init__.py +38 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/src/zeo_integrations/hubspot/client.py +534 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/src/zeo_integrations/hubspot/models.py +376 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/src/zeo_integrations/hubspot/transport.py +329 -0
- zeo_integrations-0.1.0.post14/packages/hubspot/src/zeo_integrations/hubspot/workflow.py +159 -0
- zeo_integrations-0.1.0.post14/packages/kit/LICENSE +21 -0
- zeo_integrations-0.1.0.post14/packages/kit/NOTICE +26 -0
- zeo_integrations-0.1.0.post14/packages/kit/README.md +80 -0
- zeo_integrations-0.1.0.post14/packages/kit/pyproject.toml +32 -0
- zeo_integrations-0.1.0.post14/packages/kit/src/zeo_integrations/kit/__init__.py +19 -0
- zeo_integrations-0.1.0.post14/packages/kit/src/zeo_integrations/kit/client.py +123 -0
- zeo_integrations-0.1.0.post14/packages/kit/src/zeo_integrations/kit/models.py +89 -0
- zeo_integrations-0.1.0.post14/packages/kit/src/zeo_integrations/kit/transport.py +280 -0
- zeo_integrations-0.1.0.post14/packages/loops/LICENSE +21 -0
- zeo_integrations-0.1.0.post14/packages/loops/NOTICE +6 -0
- zeo_integrations-0.1.0.post14/packages/loops/README.md +81 -0
- zeo_integrations-0.1.0.post14/packages/loops/pyproject.toml +29 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/__init__.py +76 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/client.py +134 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/contacts.py +45 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/models.py +279 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/transport.py +255 -0
- zeo_integrations-0.1.0.post14/packages/loops/src/zeo_integrations/loops/webhooks.py +86 -0
- zeo_integrations-0.1.0.post14/pyproject.toml +79 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/_distribution.py +3 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/NOTICE +161 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/__init__.py +55 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/auth.py +348 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/calendar/__init__.py +75 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/calendar/models.py +239 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/calendar/protocols.py +279 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/calendar/service.py +720 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/config.py +490 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/credential_paths.py +286 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/docs/__init__.py +77 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/docs/models.py +90 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/docs/protocols.py +165 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/docs/request_builder.py +151 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/docs/service.py +724 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/__init__.py +42 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/comments.py +315 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/models.py +145 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/__init__.py +22 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/download.py +167 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/folder.py +138 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/list_files.py +91 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/permissions.py +124 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/operations/upload.py +210 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/protocols.py +191 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/service.py +1087 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/utils/__init__.py +13 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/utils/api.py +96 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/drive/utils/query.py +94 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/__init__.py +27 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/config.py +31 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/operations/__init__.py +14 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/operations/attachments.py +218 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/operations/auth.py +44 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/operations/email.py +481 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/protocols.py +132 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/service.py +457 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/utils/__init__.py +12 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/mail/utils/api.py +111 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/ports.py +35 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/serialization.py +26 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/sheets/__init__.py +90 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/sheets/models.py +351 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/sheets/protocols.py +278 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/sheets/request_builder.py +133 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/sheets/service.py +723 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/slides/__init__.py +101 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/slides/models.py +103 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/slides/protocols.py +144 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/slides/request_builder.py +162 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/slides/service.py +474 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/__init__.py +28 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/job.py +603 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/links.py +175 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/models.py +202 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/publish.py +1103 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/relay.py +122 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/retention.py +193 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/service.py +592 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/google/youtube/transfer.py +352 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/NOTICE +35 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/__init__.py +39 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/client.py +510 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/models.py +354 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/py.typed +0 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/service.py +52 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/transport.py +186 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/hubspot/workflow.py +137 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/NOTICE +34 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/__init__.py +41 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/client.py +630 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/models.py +264 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/py.typed +0 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/service.py +58 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/kit/transport.py +205 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/NOTICE +40 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/__init__.py +76 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/client.py +266 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/hosted.py +112 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/local/__init__.py +19 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/local/__main__.py +249 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/local/auth.py +285 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/local/session.py +386 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/local/store.py +207 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/models.py +330 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/py.typed +0 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/service.py +56 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/revolut/transport.py +243 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/NOTICE +39 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/__init__.py +61 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/auth.py +95 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/client.py +628 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/config.py +106 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/errors.py +38 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/models.py +168 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/protocols.py +225 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/py.typed +0 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/realtime.py +134 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/service.py +407 -0
- zeo_integrations-0.1.0.post14/src/zeo_integrations/supabase/validation.py +75 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zero Employee Organizations
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
zeointegrations
|
|
2
|
+
Copyright (c) 2026 Zero Employee Organizations
|
|
3
|
+
Distributed under the MIT License; see LICENSE.
|
|
4
|
+
|
|
5
|
+
The initial skeleton copied no implementation source. docs/inventory contains
|
|
6
|
+
source-derived metadata, not provider code. Later package ports are listed below.
|
|
7
|
+
|
|
8
|
+
Canonical source: VeyraX/veyrax-platform; inventoried through the local
|
|
9
|
+
rodriveracom/veyrax-platform fork at the identical
|
|
10
|
+
commit 1cdddde9d5d76b9891896ca78a95e069647e81df.
|
|
11
|
+
Its MIT license states Copyright (c) 2025 VeyraX.
|
|
12
|
+
The full source notice is preserved in docs/licenses/VeyraX-MIT.txt.
|
|
13
|
+
|
|
14
|
+
Inventory source: zeroemployeeorg/zeocore,
|
|
15
|
+
commit 2e7cb11fa9aaf133876c02c1eea8f1ccd94bba04 (MIT).
|
|
16
|
+
Its MIT license states Copyright (c) 2026 Rod Rivera.
|
|
17
|
+
|
|
18
|
+
Future ports must add a per-file source-to-destination provenance map here and
|
|
19
|
+
in their package NOTICE, and retain source copyright and permission notices.
|
|
20
|
+
|
|
21
|
+
Kit read-only client port: zeroemployeeorg/zeocore at
|
|
22
|
+
25a9c899c17ac6cdf54f4949e54b0fcc800cce91, Copyright (c) 2026 Rod Rivera.
|
|
23
|
+
MIT permission and copyright notice are retained verbatim in packages/kit/LICENSE
|
|
24
|
+
and referenced in packages/kit/NOTICE; adapted modules retain per-file headers.
|
|
25
|
+
Source-to-destination mapping:
|
|
26
|
+
src/zeo_core/integrations/kit/client.py -> packages/kit/src/zeo_integrations/kit/client.py
|
|
27
|
+
src/zeo_core/integrations/kit/models.py -> packages/kit/src/zeo_integrations/kit/models.py
|
|
28
|
+
src/zeo_core/integrations/kit/transport.py -> packages/kit/src/zeo_integrations/kit/transport.py
|
|
29
|
+
LICENSE -> packages/kit/LICENSE
|
|
30
|
+
Only the current-API read-only subset is adapted; service, registry, credential
|
|
31
|
+
custody and private Broker fixtures are excluded. See package NOTICE for details.
|
|
32
|
+
|
|
33
|
+
HubSpot provider port: zeroemployeeorg/zeocore@6bd62fbbfc4453908ab464219c2a304d7420b15b,
|
|
34
|
+
Copyright (c) 2026 Rod Rivera, MIT permission retained in packages/hubspot/LICENSE.
|
|
35
|
+
Exact source/destination/blob mapping (prefix src/zeo_core/integrations/hubspot/
|
|
36
|
+
-> packages/hubspot/src/zeo_integrations/hubspot/):
|
|
37
|
+
client.py -> client.py; e36ec1c646b1d1b16184e500bdb9bb6008d97a7c
|
|
38
|
+
models.py -> models.py; a0d95437b736cf7a3198acf1d0f88849aad32903
|
|
39
|
+
transport.py -> transport.py; 7e5b9d0be1f54e33ffe999704a042d125beb67a3
|
|
40
|
+
workflow.py -> workflow.py; 97d628d4b42986332c134dfd2d2db25a24bd67b9
|
|
41
|
+
LICENSE [blob ff593bd47616c4602615f901b800f4d0965c805b] -> packages/hubspot/LICENSE; original MIT copyright and permission.
|
|
42
|
+
See package NOTICE for byte-identical first move and separately reviewed changes.
|
|
43
|
+
|
|
44
|
+
Aggregate test support copied without behaviour changes from
|
|
45
|
+
zeroemployeeorg/zeocore@7c9923e6fd93cabb8601040f3e431760be3a18ee:
|
|
46
|
+
tests/conftest.py and tests/__init__.py.
|
|
47
|
+
The initially empty tests/test_integrations/__init__.py now contains an authored
|
|
48
|
+
unittest discovery adapter: provider tests run via the explicit full-gate pytest
|
|
49
|
+
invocation, keeping dependency-free smoke discovery separate.
|
|
50
|
+
MIT Copyright(c)2026 Rod Rivera; repository LICENSE retains the full terms.
|
|
51
|
+
|
|
52
|
+
Whole-provider migration batch1 from zeroemployeeorg/zeocore commit
|
|
53
|
+
7c9923e6fd93cabb8601040f3e431760be3a18ee, MIT Copyright(c)2026 Rod Rivera.
|
|
54
|
+
HubSpot, Kit (legacy full API), Revolut and Supabase plus their tests move
|
|
55
|
+
mechanically with import/module references adapted. Complete per-file old/new
|
|
56
|
+
paths and Git blob provenance: docs/migrations/core-7c9923e6-batch1.json.
|
|
57
|
+
Core contracts, services infrastructure and signer custody remain in zeocore;
|
|
58
|
+
this collection depends on that published framework. Older standalone
|
|
59
|
+
read-only/hardened package artifacts remain separately preserved evidence.
|
|
60
|
+
|
|
61
|
+
Whole-batch test ownership partition, Core7c9923e6: 217 original test functions;
|
|
62
|
+
194 portable functions move here; 23 Core tool, entrypoint or setup-catalog
|
|
63
|
+
functions remain unchanged in Core until the post-PyPI shim. No skips or aliases.
|
|
64
|
+
Per-function ownership, original/moved hashes and assertion counts cover every
|
|
65
|
+
original Python test/support file in docs/migrations/core-7c9923e6-batch1.json.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: zeo-integrations
|
|
3
|
+
Version: 0.1.0.post14
|
|
4
|
+
Summary: Zeo integration collection; provider SDKs are optional
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
License-File: NOTICE
|
|
8
|
+
Requires-Python: >=3.12
|
|
9
|
+
Requires-Dist: httpx<1,>=0.28.1
|
|
10
|
+
Requires-Dist: pydantic<3,>=2.13.4
|
|
11
|
+
Requires-Dist: zeocore<1,>=0.43.0
|
|
12
|
+
Provides-Extra: bluesky
|
|
13
|
+
Requires-Dist: platformdirs>=4; extra == 'bluesky'
|
|
14
|
+
Requires-Dist: requests; extra == 'bluesky'
|
|
15
|
+
Provides-Extra: calendar
|
|
16
|
+
Requires-Dist: google-api-python-client>=2; extra == 'calendar'
|
|
17
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'calendar'
|
|
18
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'calendar'
|
|
19
|
+
Requires-Dist: platformdirs>=4; extra == 'calendar'
|
|
20
|
+
Provides-Extra: docs
|
|
21
|
+
Requires-Dist: google-api-python-client>=2; extra == 'docs'
|
|
22
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'docs'
|
|
23
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'docs'
|
|
24
|
+
Requires-Dist: platformdirs>=4; extra == 'docs'
|
|
25
|
+
Provides-Extra: drive
|
|
26
|
+
Requires-Dist: google-api-python-client>=2; extra == 'drive'
|
|
27
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'drive'
|
|
28
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'drive'
|
|
29
|
+
Requires-Dist: platformdirs>=4; extra == 'drive'
|
|
30
|
+
Provides-Extra: ffmpeg
|
|
31
|
+
Requires-Dist: ffmpeg-zeo>=0.1; extra == 'ffmpeg'
|
|
32
|
+
Provides-Extra: github
|
|
33
|
+
Requires-Dist: requests; extra == 'github'
|
|
34
|
+
Provides-Extra: gmail
|
|
35
|
+
Requires-Dist: google-api-python-client>=2; extra == 'gmail'
|
|
36
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'gmail'
|
|
37
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'gmail'
|
|
38
|
+
Requires-Dist: platformdirs>=4; extra == 'gmail'
|
|
39
|
+
Provides-Extra: google
|
|
40
|
+
Requires-Dist: google-api-python-client>=2; extra == 'google'
|
|
41
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'google'
|
|
42
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'google'
|
|
43
|
+
Requires-Dist: platformdirs>=4; extra == 'google'
|
|
44
|
+
Provides-Extra: jupytext
|
|
45
|
+
Requires-Dist: jupytext>=1.16; extra == 'jupytext'
|
|
46
|
+
Requires-Dist: nbformat>=5.10; extra == 'jupytext'
|
|
47
|
+
Provides-Extra: llms
|
|
48
|
+
Requires-Dist: anthropic; extra == 'llms'
|
|
49
|
+
Requires-Dist: openai; extra == 'llms'
|
|
50
|
+
Requires-Dist: tiktoken; extra == 'llms'
|
|
51
|
+
Provides-Extra: notion
|
|
52
|
+
Requires-Dist: notion-client>=3.1.0; extra == 'notion'
|
|
53
|
+
Provides-Extra: pandoc
|
|
54
|
+
Requires-Dist: beautifulsoup4; extra == 'pandoc'
|
|
55
|
+
Requires-Dist: pypandoc; extra == 'pandoc'
|
|
56
|
+
Provides-Extra: revolut
|
|
57
|
+
Requires-Dist: cryptography>=45; extra == 'revolut'
|
|
58
|
+
Requires-Dist: platformdirs>=4; extra == 'revolut'
|
|
59
|
+
Provides-Extra: sheets
|
|
60
|
+
Requires-Dist: google-api-python-client>=2; extra == 'sheets'
|
|
61
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'sheets'
|
|
62
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'sheets'
|
|
63
|
+
Requires-Dist: platformdirs>=4; extra == 'sheets'
|
|
64
|
+
Provides-Extra: slides
|
|
65
|
+
Requires-Dist: google-api-python-client>=2; extra == 'slides'
|
|
66
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'slides'
|
|
67
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'slides'
|
|
68
|
+
Requires-Dist: platformdirs>=4; extra == 'slides'
|
|
69
|
+
Provides-Extra: supabase
|
|
70
|
+
Requires-Dist: supabase<3,>=2.31.0; extra == 'supabase'
|
|
71
|
+
Provides-Extra: youtube
|
|
72
|
+
Requires-Dist: google-api-python-client>=2; extra == 'youtube'
|
|
73
|
+
Requires-Dist: google-auth-httplib2>=0.1; extra == 'youtube'
|
|
74
|
+
Requires-Dist: google-auth-oauthlib>=0.4; extra == 'youtube'
|
|
75
|
+
Requires-Dist: platformdirs>=4; extra == 'youtube'
|
|
76
|
+
Requires-Dist: requests; extra == 'youtube'
|
|
77
|
+
Description-Content-Type: text/markdown
|
|
78
|
+
|
|
79
|
+
# Zeo integrations
|
|
80
|
+
|
|
81
|
+
One distribution, `zeo-integrations`, containing provider modules under
|
|
82
|
+
`zeo_integrations.<provider>`. The collection depends on published `zeocore`;
|
|
83
|
+
Core does not import the collection at import time. Provider SDKs are optional
|
|
84
|
+
extras, for example `pip install 'zeo-integrations[google]'` after the single
|
|
85
|
+
aggregate publication exists. During migration, install from this repository
|
|
86
|
+
at an exact reviewed commit. Do not register per-provider PyPI projects.
|
|
87
|
+
|
|
88
|
+
This first foundation supplies shared packaging for the provider move PRs;
|
|
89
|
+
it does not claim every provider is present yet. Google remains one family.
|
|
90
|
+
Existing Core entry-point names stay in Core, so installing the collection does
|
|
91
|
+
not register duplicate plugins. Core's optional lazy compatibility shims follow
|
|
92
|
+
actual aggregate PyPI publication. No base-contract extraction or injected ports.
|
|
93
|
+
|
|
94
|
+
The older per-provider source directories and hash-bound release files remain
|
|
95
|
+
historical/consumer evidence during transition; they are not additional future
|
|
96
|
+
PyPI distributions. Core-shaped whole provider moves and earlier standalone
|
|
97
|
+
hardened/read-only APIs have different scope and must not be silently co-installed.
|
|
98
|
+
|
|
99
|
+
# zeointegrations
|
|
100
|
+
|
|
101
|
+
Integrations for zeo tools: install only the packages a tool needs, discovered
|
|
102
|
+
through `zeo_core.integrations`. Split out of zeocore under zeocore-SOW-36.
|
|
103
|
+
|
|
104
|
+
External services use `zeo-integration-<name>`; local capabilities use
|
|
105
|
+
`zeo-plugin-<name>`. Google is one package with six existing entry-point names.
|
|
106
|
+
Credentialed integrations execute inside ZEOconnect with injected credentials.
|
|
107
|
+
|
|
108
|
+
This initial repository contains the development skeleton and a
|
|
109
|
+
[read-only source inventory](docs/inventory/README.md). No provider package is
|
|
110
|
+
installable yet. PyPI publication requires the approved trusted-publisher setup.
|
|
111
|
+
The first slice is tracked as `zeointegrations-SOW-01`, minted by zeo-rt.
|
|
112
|
+
|
|
113
|
+
```sh
|
|
114
|
+
make setup
|
|
115
|
+
make verify
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for layout, qualification, migration and
|
|
119
|
+
review rules; [NOTICE](NOTICE) records source attribution.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Zeo integrations
|
|
2
|
+
|
|
3
|
+
One distribution, `zeo-integrations`, containing provider modules under
|
|
4
|
+
`zeo_integrations.<provider>`. The collection depends on published `zeocore`;
|
|
5
|
+
Core does not import the collection at import time. Provider SDKs are optional
|
|
6
|
+
extras, for example `pip install 'zeo-integrations[google]'` after the single
|
|
7
|
+
aggregate publication exists. During migration, install from this repository
|
|
8
|
+
at an exact reviewed commit. Do not register per-provider PyPI projects.
|
|
9
|
+
|
|
10
|
+
This first foundation supplies shared packaging for the provider move PRs;
|
|
11
|
+
it does not claim every provider is present yet. Google remains one family.
|
|
12
|
+
Existing Core entry-point names stay in Core, so installing the collection does
|
|
13
|
+
not register duplicate plugins. Core's optional lazy compatibility shims follow
|
|
14
|
+
actual aggregate PyPI publication. No base-contract extraction or injected ports.
|
|
15
|
+
|
|
16
|
+
The older per-provider source directories and hash-bound release files remain
|
|
17
|
+
historical/consumer evidence during transition; they are not additional future
|
|
18
|
+
PyPI distributions. Core-shaped whole provider moves and earlier standalone
|
|
19
|
+
hardened/read-only APIs have different scope and must not be silently co-installed.
|
|
20
|
+
|
|
21
|
+
# zeointegrations
|
|
22
|
+
|
|
23
|
+
Integrations for zeo tools: install only the packages a tool needs, discovered
|
|
24
|
+
through `zeo_core.integrations`. Split out of zeocore under zeocore-SOW-36.
|
|
25
|
+
|
|
26
|
+
External services use `zeo-integration-<name>`; local capabilities use
|
|
27
|
+
`zeo-plugin-<name>`. Google is one package with six existing entry-point names.
|
|
28
|
+
Credentialed integrations execute inside ZEOconnect with injected credentials.
|
|
29
|
+
|
|
30
|
+
This initial repository contains the development skeleton and a
|
|
31
|
+
[read-only source inventory](docs/inventory/README.md). No provider package is
|
|
32
|
+
installable yet. PyPI publication requires the approved trusted-publisher setup.
|
|
33
|
+
The first slice is tracked as `zeointegrations-SOW-01`, minted by zeo-rt.
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
make setup
|
|
37
|
+
make verify
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for layout, qualification, migration and
|
|
41
|
+
review rules; [NOTICE](NOTICE) records source attribution.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# First-hour read-only inventory
|
|
2
|
+
|
|
3
|
+
Prepared 2026-10-17 by the zeointegrations seat under charter v1 and runtime-minted
|
|
4
|
+
`zeointegrations-SOW-01`. Mint record:
|
|
5
|
+
`matorclawson/org-zeroemployeeorg@d72aba45ac75f20d302295352dd50f3572894ffb:projects/zeointegrations/sow/zeointegrations/zeointegrations-SOW-01-integration-inventory-packaging-skeleton-and.md`.
|
|
6
|
+
Sources:
|
|
7
|
+
|
|
8
|
+
- VeyraX: canonical `VeyraX/veyrax-platform@1cdddde9d5d76b9891896ca78a95e069647e81df`,
|
|
9
|
+
inventoried through the identical local `rodriveracom/veyrax-platform` fork.
|
|
10
|
+
- zeocore: `zeroemployeeorg/zeocore@2e7cb11fa9aaf133876c02c1eea8f1ccd94bba04`.
|
|
11
|
+
- Council-reviewed design: zeocore-SOW-36 rev 5,
|
|
12
|
+
`matorclawson/org-zeroemployeeorg@0f2bf62e2`, with Architect rulings
|
|
13
|
+
`ans_cbd9dfb83a794f92`.
|
|
14
|
+
|
|
15
|
+
The [VeyraX table](veyrax.md) covers **84 directories, 79 registered routers,
|
|
16
|
+
79,296 Python lines including tests, and 5,026,896 tracked bytes**. The
|
|
17
|
+
[zeocore table](zeocore.md) covers all **17 registered entry points**. Exact
|
|
18
|
+
sizes, direct import roots, test-only imports and existing dependency declarations
|
|
19
|
+
are in [snapshot.json](snapshot.json). All inspected Python parsed successfully.
|
|
20
|
+
|
|
21
|
+
## Findings that affect the order
|
|
22
|
+
|
|
23
|
+
1. This VeyraX snapshot contains no HubSpot or Stripe integration. HubSpot already
|
|
24
|
+
exists in zeocore; Stripe requires another licensed source or a fresh
|
|
25
|
+
implementation. Neither should be represented as a VeyraX port.
|
|
26
|
+
2. VeyraX has Gmail code, but `gmail_router` is only imported in `main.py`: it is
|
|
27
|
+
absent from `INTEGRATION_ROUTERS` and `catalog.json`. DocuSign, Hilvl and
|
|
28
|
+
veyrax-mcp also have source without registration. `common` is shared support.
|
|
29
|
+
Source presence does not establish a working deployed integration.
|
|
30
|
+
3. Catalog auth `none` conceals server credentials for Apollo, Binance P2P,
|
|
31
|
+
Bybit P2P, OKX P2P, IPinfo, Skyscanner, Yelp and Zillow. Their routes/clients
|
|
32
|
+
read server API keys; they are credentialed integrations under this charter.
|
|
33
|
+
4. Custom auth is not uniform: Amazon uses access/secret keys and associate tag;
|
|
34
|
+
Cloudinary uses key/secret/cloud name; mail uses SMTP/IMAP credentials;
|
|
35
|
+
Sentry uses API key/org slug (and has an OAuth branch). Facebook, Instagram,
|
|
36
|
+
LinkedIn and X combine profile inputs with server RapidAPI credentials.
|
|
37
|
+
`db_access` means database connection credentials; `api_key_with_base` also
|
|
38
|
+
accepts a base URL. WhatsApp uses a QR/session bridge. Port credential and
|
|
39
|
+
origin handling through the Broker's approved interface.
|
|
40
|
+
5. VeyraX NeonDB and Supabase delegate to its PostgreSQL service. Its Supabase
|
|
41
|
+
SQL operations are not equivalent to zeocore's Supabase SDK integration.
|
|
42
|
+
Google Maps uses an API key, distinct from Google Workspace OAuth. Its
|
|
43
|
+
YouTube implementation does not establish coverage of zeocore's upload path.
|
|
44
|
+
6. Shared VeyraX `common` code includes token lookup, refresh and custody. That
|
|
45
|
+
infrastructure belongs to ZEOconnect and will not be copied into packages.
|
|
46
|
+
Existing HTML/component assets need translation into zeocore's data-only
|
|
47
|
+
schema, not direct frontend copying.
|
|
48
|
+
7. `veyrax_auth` is VeyraX's own Supabase-backed credential store with shared
|
|
49
|
+
encryption; catalog `none` is not credential-free execution. `veyrax` is
|
|
50
|
+
a per-user memory store over Supabase `users_memory`. Both remain outside
|
|
51
|
+
the provider-port queue.
|
|
52
|
+
|
|
53
|
+
## Proposed order
|
|
54
|
+
|
|
55
|
+
The approved SOW-36 package migration order and this charter's priority for new
|
|
56
|
+
ports are separate queues. Coordinate each move with zeocore; keep one open PR.
|
|
57
|
+
|
|
58
|
+
1. This skeleton and CI. After merge, the Architect adds the `verify` check to
|
|
59
|
+
the main ruleset. No publishing workflow or provider package in this slice.
|
|
60
|
+
2. zeocore-owned groundwork: local App signer relocation and duplicate-entry
|
|
61
|
+
guard; then the credential-free **ffmpeg pilot** in its own package PR.
|
|
62
|
+
The pilot can prove packaging/discovery, not Broker credential custody.
|
|
63
|
+
3. Local plugins: pandoc, jupytext, notebook (the last keeps no entry point).
|
|
64
|
+
4. Existing credentialed moves in reviewed order: Bluesky; Google (one package,
|
|
65
|
+
six names); HubSpot; Kit; Notion; Supabase; GitHub; LLMs; Gemini; Meetings;
|
|
66
|
+
Revolut last. Google/YouTube has its own follow-on split. zeocore owns shims,
|
|
67
|
+
extras, removals and compatibility. Package moves alone admit no Broker route.
|
|
68
|
+
5. New operation/port work by use: first review HubSpot gaps against its existing
|
|
69
|
+
package, then Gmail/Google gaps against the unified package; source Stripe
|
|
70
|
+
separately; then Notion, GitHub and Slack. Start credentialed proof with an
|
|
71
|
+
already admitted operation and a synthetic provider double agreed with
|
|
72
|
+
zeoconnect-integrations. Runtime priorities remain subject to owner agreement.
|
|
73
|
+
6. Remaining VeyraX work only as a consumer needs it: task/workflow tools
|
|
74
|
+
(Linear, Jira, Asana, Todoist, Trello); mail/storage (Outlook, Dropbox, Resend,
|
|
75
|
+
SMTP); database family (PostgreSQL/Neon/Supabase SQL, ClickHouse, Snowflake);
|
|
76
|
+
search/research and remaining API-key tools; heavier browser, media, social,
|
|
77
|
+
QR bridge and unregistered adapters after their runtime dependencies are
|
|
78
|
+
reviewed. This is a proposed demand order, not authorization for 79 ports.
|
|
79
|
+
|
|
80
|
+
## Contract and runtime boundary
|
|
81
|
+
|
|
82
|
+
SOW-36 specifies manifest metadata, package names, entry-point preservation and
|
|
83
|
+
qualification, but no implemented machine serialization or new Broker ABI.
|
|
84
|
+
zeoconnect-tools confirmed this remains joint zeocore/maintainer/council design
|
|
85
|
+
(`ans_a055ed6a622cf24d`). Its loader will bind explicitly pinned installed
|
|
86
|
+
packages through ConnectorRevision and observation/effect dispatchers after
|
|
87
|
+
admission and custody callback. No package-owned OAuth, refresh/store custody,
|
|
88
|
+
caller-selected origin, or credentials in logs/results.
|
|
89
|
+
|
|
90
|
+
The reviewed design says Broker composition covers two Gmail reads, HubSpot/Kit
|
|
91
|
+
newsletter operations, and two Revolut reads that are HELD; it does not run
|
|
92
|
+
zeocore integration packages today. This is a cited design snapshot, not a claim
|
|
93
|
+
about current live allowlists. Confirm exact per-operation composition and
|
|
94
|
+
admission with the owners before each migration. An existing entry point is not
|
|
95
|
+
proof of an equivalent Broker operation.
|
|
96
|
+
|
|
97
|
+
The source tree's distribution is named `zeocore`; the design sometimes spells
|
|
98
|
+
it `zeo-core`. Package requirements must use the owner's confirmed actual name
|
|
99
|
+
and minimum compatible version, with real installation proof.
|
|
100
|
+
|
|
101
|
+
## Method and reproducibility
|
|
102
|
+
|
|
103
|
+
`tools/inventory.py` obtains the source HEAD commits, uses `git archive` into
|
|
104
|
+
memory, and parses Python AST, TOML and JSON. It executes no source code, loads
|
|
105
|
+
no source environment, reads no live credentials, installs no provider packages,
|
|
106
|
+
and writes only the report outside the source repositories. Dependency lists
|
|
107
|
+
are direct static imports; they do not prove dynamic imports or full transitive
|
|
108
|
+
closure. Lines include comments/blanks and tests. Shared-family sizes are
|
|
109
|
+
identified explicitly rather than counted six times.
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
uv run --frozen python tools/inventory.py \
|
|
113
|
+
--veyrax /path/to/veyrax-platform \
|
|
114
|
+
--zeocore /path/to/zeocore \
|
|
115
|
+
--output docs/inventory/snapshot.json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Use checkouts at the cited commits to reproduce this snapshot. Tables are derived
|
|
119
|
+
from the JSON with auth and overlap qualifications from source review. External
|
|
120
|
+
import roots map to distributions as follows; exact VeyraX source pins appear in
|
|
121
|
+
the JSON and require review for Python 3.14 rather than blind reuse.
|
|
122
|
+
|
|
123
|
+
| Import root | Distribution |
|
|
124
|
+
|---|---|
|
|
125
|
+
| bs4 | beautifulsoup4 |
|
|
126
|
+
| googleapiclient | google-api-python-client |
|
|
127
|
+
| google | google-auth / google-auth-oauthlib (submodule dependent) |
|
|
128
|
+
| dotenv | python-dotenv |
|
|
129
|
+
| dateutil | python-dateutil (not directly pinned in source requirements) |
|
|
130
|
+
| starlette | starlette (transitive through FastAPI) |
|
|
131
|
+
| amazon_paapi | python-amazon-paapi |
|
|
132
|
+
| clickhouse_driver | clickhouse-driver |
|
|
133
|
+
| e2b_code_interpreter | e2b-code-interpreter |
|
|
134
|
+
| psycopg2 | psycopg2-binary |
|
|
135
|
+
| snowflake | snowflake-connector-python |
|
|
136
|
+
| slack_sdk | slack-sdk |
|
|
137
|
+
| sentry_sdk | sentry-sdk |
|
|
138
|
+
| upstash_vector | upstash-vector |
|
|
139
|
+
| yaml | PyYAML |
|
|
140
|
+
| youtube_transcript_api | youtube-transcript-api |
|
|
141
|
+
| pydantic_core | pydantic-core |
|
|
142
|
+
| notion_client | notion-client (zeocore) |
|
|
143
|
+
| ffmpeg_zeo | ffmpeg-zeo (zeocore) |
|
|
144
|
+
| docx | python-docx in zeocore; VeyraX separately pins docx |
|
|
145
|
+
|
|
146
|
+
Other displayed roots use their distribution spelling (normalizing underscores
|
|
147
|
+
to hyphens where applicable). No VeyraX implementation is copied in this slice.
|
|
148
|
+
Its complete MIT notice is preserved in [VeyraX-MIT.txt](../licenses/VeyraX-MIT.txt).
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Packages
|
|
2
|
+
|
|
3
|
+
Each integration or local plugin will be added in its own reviewed PR. See
|
|
4
|
+
[the package layout](../CONTRIBUTING.md#package-layout) and
|
|
5
|
+
[the inventory and proposed order](../docs/inventory/README.md).
|
|
6
|
+
|
|
7
|
+
`loops/` is the first API-client package source, consumed directly by Broker;
|
|
8
|
+
it has no Core lifecycle entry point or credential custody. Qualification and
|
|
9
|
+
release status are recorded in its README.
|
|
10
|
+
|
|
11
|
+
`kit/` is a current-API, read-only migration/audit client for subscribers and
|
|
12
|
+
their states, tags, forms and custom fields. It has no entry point, Core
|
|
13
|
+
dependency, subscriber writes, broadcast or sequence surface. Core retains its
|
|
14
|
+
legacy service and registry; legacy write consumers are not redirected here.
|
|
15
|
+
Qualification, independent review and actual migration/audit consumer receiving
|
|
16
|
+
remain unfinished until their separate receipts are recorded. No provider
|
|
17
|
+
retirement or live readiness follows from package source.
|
|
18
|
+
|
|
19
|
+
HubSpot follows under the operator's October 24 priority; the ffmpeg pilot
|
|
20
|
+
remains parked.
|
|
21
|
+
|
|
22
|
+
`hubspot/` extracts the existing provider client, models, transport and workflow
|
|
23
|
+
validator, preserving reviewed guards. Core retains credential discovery, service,
|
|
24
|
+
factory and sole entry point. Core forwarding and the pinned hard dependency wait
|
|
25
|
+
for an actually installable, separately approved release; no consumer adoption
|
|
26
|
+
or provider execution is established by this source package.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rod Rivera
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
zeo-integration-hubspot
|
|
2
|
+
Copyright (c) 2026 Rod Rivera
|
|
3
|
+
Licensed under the MIT License; full permission notice in LICENSE.
|
|
4
|
+
|
|
5
|
+
Source: zeroemployeeorg/zeocore
|
|
6
|
+
Commit: 6bd62fbbfc4453908ab464219c2a304d7420b15b
|
|
7
|
+
Source prefix: src/zeo_core/integrations/hubspot/
|
|
8
|
+
Destination prefix: packages/hubspot/src/zeo_integrations/hubspot/
|
|
9
|
+
client.py -> client.py; source blob e36ec1c646b1d1b16184e500bdb9bb6008d97a7c
|
|
10
|
+
models.py -> models.py; source blob a0d95437b736cf7a3198acf1d0f88849aad32903
|
|
11
|
+
transport.py -> transport.py; source blob 7e5b9d0be1f54e33ffe999704a042d125beb67a3
|
|
12
|
+
workflow.py -> workflow.py; source blob 97d628d4b42986332c134dfd2d2db25a24bd67b9
|
|
13
|
+
LICENSE [blob ff593bd47616c4602615f901b800f4d0965c805b] -> packages/hubspot/LICENSE; MIT copyright and permission retained.
|
|
14
|
+
|
|
15
|
+
The first source commit copies the four modules byte-for-byte. Subsequent
|
|
16
|
+
transport hardening and formatting are separate reviewable changes, preserving
|
|
17
|
+
the original blob pins above. Root exports are explicit provider-only exports;
|
|
18
|
+
Core service, factory, environment discovery and entrypoint are excluded.
|
|
19
|
+
No private Broker fixtures, credentials or custody machinery were copied.
|
|
20
|
+
Tests are original synthetic controls. Package layout follows this repository's
|
|
21
|
+
existing Loops and Kit packages; no new dependency family or runtime SDK.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# HubSpot marketing provider client
|
|
2
|
+
|
|
3
|
+
sow: zeointegrations-SOW-02
|
|
4
|
+
|
|
5
|
+
Provider extraction from Core 6bd62fbb; exact per-file source blobs are in NOTICE.
|
|
6
|
+
Python >=3.12. Inject SecretStr credentials or an HTTP transport explicitly. No
|
|
7
|
+
Core dependency, environment discovery, service factory or entry point is added.
|
|
8
|
+
Core retains its lifecycle and the sole hubspot.marketing registration. Existing
|
|
9
|
+
Core submodule forwarding and class identity are separate Core-owned receiving
|
|
10
|
+
changes; this source does not claim those shims are installed.
|
|
11
|
+
|
|
12
|
+
The existing client supports marketing email drafts and reviewed publishing,
|
|
13
|
+
campaigns, subscription preferences and a strictly bounded linear email workflow
|
|
14
|
+
subset. Existing confirmation/revision/content-digest/audience/consent guards
|
|
15
|
+
remain. Package code grants no permission to send, schedule, enroll or change
|
|
16
|
+
consent; actual credentialed execution remains inside Broker's approved workflow.
|
|
17
|
+
No live provider or subscriber data is used in verification.
|
|
18
|
+
|
|
19
|
+
The first commit preserves four Core module blobs exactly. Transport hardening
|
|
20
|
+
is a separate tested commit. A full current-head gate, installed-source identity,
|
|
21
|
+
namespace, wheel/sdist/license/NOTICE checks and compatibility controls are needed
|
|
22
|
+
before source approval. Gates run only with present interpreters; unavailable
|
|
23
|
+
Python 3.12 is NOT_RUN, never a fabricated pass. No interpreter download is
|
|
24
|
+
implied by this package's declared floor.
|
|
25
|
+
|
|
26
|
+
Release and adoption are separate: Architect requires the existing signed
|
|
27
|
+
vendored-wheel route, no PyPI/new feed, and a pinned HARD dependency from Core
|
|
28
|
+
once the wheel is actually installable. Core shims must not merge first.
|
|
29
|
+
Newsroom and Broker install no separate extra; their exact released-Core locks
|
|
30
|
+
and consumer checks must pass. No release grant, cryptographic wheel signature,
|
|
31
|
+
publication, installed Core forwarding or consumer readiness is claimed here.
|
|
32
|
+
A hash-bound lane record alone is not a cryptographic signature.
|
|
33
|
+
|
|
34
|
+
Pagination returns one page; complete=true is not an atomic account snapshot.
|
|
35
|
+
Callers bound cross-page cursor history and total reads. Mutation errors can have
|
|
36
|
+
outcome_unknown and require provider-state reconciliation, never automatic retry.
|
|
37
|
+
Dynamic audiences and mutable provider assets retain their existing race limits.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling==1.27.0"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "zeo-integration-hubspot"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Credential-injected HubSpot marketing client"
|
|
9
|
+
requires-python = ">=3.12"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
dependencies = ["httpx>=0.28.1,<1", "pydantic>=2.13.4,<3"]
|
|
13
|
+
|
|
14
|
+
[dependency-groups]
|
|
15
|
+
dev = ["ruff==0.15.5"]
|
|
16
|
+
|
|
17
|
+
[tool.hatch.build.targets.wheel]
|
|
18
|
+
packages = ["src/zeo_integrations"]
|
|
19
|
+
|
|
20
|
+
[tool.hatch.build.targets.wheel.force-include]
|
|
21
|
+
"NOTICE" = "zeo_integrations/hubspot/NOTICE"
|
|
22
|
+
|
|
23
|
+
[tool.ruff]
|
|
24
|
+
target-version = "py312"
|
|
25
|
+
line-length = 88
|
|
26
|
+
|
|
27
|
+
[tool.ruff.lint]
|
|
28
|
+
select = ["E", "F", "I", "UP", "B"]
|
|
29
|
+
|
|
30
|
+
[tool.uv]
|
|
31
|
+
constraint-dependencies = ["certifi==2026.7.22", "idna==3.19"]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""HubSpot provider client; credential discovery and lifecycle remain in Core."""
|
|
2
|
+
|
|
3
|
+
from .client import HubSpotClient
|
|
4
|
+
from .models import (
|
|
5
|
+
Audience,
|
|
6
|
+
CampaignProperties,
|
|
7
|
+
EmailAddress,
|
|
8
|
+
EmailContent,
|
|
9
|
+
EmailDraft,
|
|
10
|
+
EmailSequence,
|
|
11
|
+
MarketingPage,
|
|
12
|
+
MarketingRecord,
|
|
13
|
+
PageRequest,
|
|
14
|
+
PublishRequest,
|
|
15
|
+
SequenceStep,
|
|
16
|
+
SubscriptionChange,
|
|
17
|
+
send_spec_digest,
|
|
18
|
+
)
|
|
19
|
+
from .transport import HubSpotAPIError, HubSpotTransport
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"Audience",
|
|
23
|
+
"CampaignProperties",
|
|
24
|
+
"EmailAddress",
|
|
25
|
+
"EmailContent",
|
|
26
|
+
"EmailDraft",
|
|
27
|
+
"EmailSequence",
|
|
28
|
+
"HubSpotAPIError",
|
|
29
|
+
"HubSpotClient",
|
|
30
|
+
"HubSpotTransport",
|
|
31
|
+
"MarketingPage",
|
|
32
|
+
"MarketingRecord",
|
|
33
|
+
"PageRequest",
|
|
34
|
+
"PublishRequest",
|
|
35
|
+
"SequenceStep",
|
|
36
|
+
"SubscriptionChange",
|
|
37
|
+
"send_spec_digest",
|
|
38
|
+
]
|