aio-sf 0.1.0b5__tar.gz → 0.1.0b6__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 (44) hide show
  1. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/PKG-INFO +17 -10
  2. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/README.md +9 -5
  3. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/RELEASE.md +0 -25
  4. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/pyproject.toml +8 -3
  5. aio_sf-0.1.0b6/src/aio_sf/__init__.py +61 -0
  6. aio_sf-0.1.0b5/src/aio_sf/__init__.py +0 -28
  7. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.cursor/rules/api-structure.mdc +0 -0
  8. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.cursor/rules/async-patterns.mdc +0 -0
  9. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.cursor/rules/project-tooling.mdc +0 -0
  10. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.github/workflows/publish.yml +0 -0
  11. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.github/workflows/test.yml +0 -0
  12. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/.gitignore +0 -0
  13. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/LICENSE +0 -0
  14. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/pytest.ini +0 -0
  15. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/__init__.py +0 -0
  16. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/__init__.py +0 -0
  17. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/base.py +0 -0
  18. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/client_credentials.py +0 -0
  19. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/refresh_token.py +0 -0
  20. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/sfdx_cli.py +0 -0
  21. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/auth/static_token.py +0 -0
  22. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/bulk_v2/__init__.py +0 -0
  23. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/bulk_v2/client.py +0 -0
  24. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/bulk_v2/types.py +0 -0
  25. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/client.py +0 -0
  26. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/collections/__init__.py +0 -0
  27. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/collections/client.py +0 -0
  28. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/collections/types.py +0 -0
  29. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/describe/__init__.py +0 -0
  30. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/describe/client.py +0 -0
  31. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/describe/types.py +0 -0
  32. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/query/__init__.py +0 -0
  33. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/query/client.py +0 -0
  34. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/query/types.py +0 -0
  35. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/api/types.py +0 -0
  36. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/exporter/__init__.py +0 -0
  37. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/exporter/bulk_export.py +0 -0
  38. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/src/aio_sf/exporter/parquet_writer.py +0 -0
  39. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/tests/__init__.py +0 -0
  40. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/tests/conftest.py +0 -0
  41. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/tests/test_api_clients.py +0 -0
  42. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/tests/test_auth.py +0 -0
  43. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/tests/test_client.py +0 -0
  44. {aio_sf-0.1.0b5 → aio_sf-0.1.0b6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aio-sf
3
- Version: 0.1.0b5
3
+ Version: 0.1.0b6
4
4
  Summary: Async Salesforce library for Python
5
5
  Project-URL: Homepage, https://github.com/callawaycloud/aio-salesforce
6
6
  Project-URL: Repository, https://github.com/callawaycloud/aio-salesforce
@@ -35,13 +35,16 @@ Classifier: Programming Language :: Python :: 3
35
35
  Classifier: Programming Language :: Python :: 3.11
36
36
  Classifier: Programming Language :: Python :: 3.12
37
37
  Requires-Python: >=3.11
38
+ Requires-Dist: boto3>=1.34.0
38
39
  Requires-Dist: httpx>=0.25.0
40
+ Requires-Dist: pandas>=2.0.0
41
+ Requires-Dist: pyarrow>=10.0.0
39
42
  Requires-Dist: pydantic>=2.0.0
40
43
  Requires-Dist: python-dotenv>=1.0.0
41
- Provides-Extra: all
42
- Requires-Dist: boto3>=1.34.0; extra == 'all'
43
- Requires-Dist: pandas>=2.0.0; extra == 'all'
44
- Requires-Dist: pyarrow>=10.0.0; extra == 'all'
44
+ Provides-Extra: core
45
+ Requires-Dist: httpx>=0.25.0; extra == 'core'
46
+ Requires-Dist: pydantic>=2.0.0; extra == 'core'
47
+ Requires-Dist: python-dotenv>=1.0.0; extra == 'core'
45
48
  Provides-Extra: dev
46
49
  Requires-Dist: black>=23.0.0; extra == 'dev'
47
50
  Requires-Dist: mypy>=1.5.0; extra == 'dev'
@@ -88,16 +91,16 @@ An async Salesforce library for Python.
88
91
 
89
92
  ## Installation
90
93
 
91
- ### Core (Connection Only)
94
+ ### Full Package (Default - Includes Everything)
92
95
  ```bash
93
96
  uv add aio-sf
94
97
  # or: pip install aio-sf
95
98
  ```
96
99
 
97
- ### With Export Capabilities
100
+ ### Core Only (Minimal Dependencies)
98
101
  ```bash
99
- uv add "aio-sf[exporter]"
100
- # or: pip install "aio-sf[exporter]"
102
+ uv add "aio-sf[core]"
103
+ # or: pip install "aio-sf[core]"
101
104
  ```
102
105
 
103
106
  ## Quick Start
@@ -157,7 +160,11 @@ The Exporter library contains a streamlined and "opinionated" way to export data
157
160
 
158
161
  ### 3. Export to Parquet
159
162
  ```python
160
- from aio_sf.exporter import bulk_query, write_query_to_parquet
163
+ # With full installation (default), you can import directly from aio_sf
164
+ from aio_sf import SalesforceClient, ClientCredentialsAuth, bulk_query, write_query_to_parquet
165
+
166
+ # Or import from the exporter module (both work)
167
+ # from aio_sf.exporter import bulk_query, write_query_to_parquet
161
168
 
162
169
  async def main():
163
170
  # ... authentication code from above ...
@@ -28,16 +28,16 @@ An async Salesforce library for Python.
28
28
 
29
29
  ## Installation
30
30
 
31
- ### Core (Connection Only)
31
+ ### Full Package (Default - Includes Everything)
32
32
  ```bash
33
33
  uv add aio-sf
34
34
  # or: pip install aio-sf
35
35
  ```
36
36
 
37
- ### With Export Capabilities
37
+ ### Core Only (Minimal Dependencies)
38
38
  ```bash
39
- uv add "aio-sf[exporter]"
40
- # or: pip install "aio-sf[exporter]"
39
+ uv add "aio-sf[core]"
40
+ # or: pip install "aio-sf[core]"
41
41
  ```
42
42
 
43
43
  ## Quick Start
@@ -97,7 +97,11 @@ The Exporter library contains a streamlined and "opinionated" way to export data
97
97
 
98
98
  ### 3. Export to Parquet
99
99
  ```python
100
- from aio_sf.exporter import bulk_query, write_query_to_parquet
100
+ # With full installation (default), you can import directly from aio_sf
101
+ from aio_sf import SalesforceClient, ClientCredentialsAuth, bulk_query, write_query_to_parquet
102
+
103
+ # Or import from the exporter module (both work)
104
+ # from aio_sf.exporter import bulk_query, write_query_to_parquet
101
105
 
102
106
  async def main():
103
107
  # ... authentication code from above ...
@@ -39,31 +39,6 @@
39
39
  - Builds and publishes to PyPI automatically
40
40
  - Requires manual approval in the `pypi` environment
41
41
 
42
- ## Manual Release (Backup)
43
-
44
- If you need to publish manually:
45
-
46
- ```bash
47
- # Build the package
48
- uv build
49
-
50
- # Publish to PyPI (requires PYPI_API_TOKEN env var)
51
- export PYPI_API_TOKEN=your_token_here
52
- uv publish --token $PYPI_API_TOKEN
53
- ```
54
-
55
- ## Test Release
56
-
57
- To test on TestPyPI first:
58
-
59
- ```bash
60
- # Get TestPyPI token from test.pypi.org
61
- uv publish --repository testpypi --token $TEST_PYPI_TOKEN
62
-
63
- # Test install from TestPyPI
64
- pip install --index-url https://test.pypi.org/simple/ aio-salesforce
65
- ```
66
-
67
42
  ## Version Strategy
68
43
 
69
44
  ### Automatic Versioning
@@ -24,17 +24,22 @@ dependencies = [
24
24
  "httpx>=0.25.0",
25
25
  "pydantic>=2.0.0",
26
26
  "python-dotenv>=1.0.0",
27
+ "pandas>=2.0.0",
28
+ "pyarrow>=10.0.0",
29
+ "boto3>=1.34.0", # For S3 uploads (future feature)
27
30
  ]
28
31
 
29
32
  [project.optional-dependencies]
33
+ core = [
34
+ "httpx>=0.25.0",
35
+ "pydantic>=2.0.0",
36
+ "python-dotenv>=1.0.0",
37
+ ]
30
38
  exporter = [
31
39
  "pandas>=2.0.0",
32
40
  "pyarrow>=10.0.0",
33
41
  "boto3>=1.34.0", # For S3 uploads (future feature)
34
42
  ]
35
- all = [
36
- "aio-sf[exporter]",
37
- ]
38
43
  dev = [
39
44
  "pytest>=7.0.0",
40
45
  "pytest-asyncio>=0.21.0",
@@ -0,0 +1,61 @@
1
+ """aio-salesforce: Async Salesforce library for Python with Bulk API 2.0 support."""
2
+
3
+ __author__ = "Jonas"
4
+ __email__ = "charlie@callaway.cloud"
5
+
6
+ # Client functionality
7
+ from .api.client import SalesforceClient # noqa: F401
8
+ from .api.auth import ( # noqa: F401
9
+ SalesforceAuthError,
10
+ AuthStrategy,
11
+ ClientCredentialsAuth,
12
+ RefreshTokenAuth,
13
+ StaticTokenAuth,
14
+ SfdxCliAuth,
15
+ )
16
+
17
+ # Core package exports client functionality
18
+ # Exporter functionality is included by default, but gracefully handles missing deps
19
+ __all__ = [
20
+ "SalesforceClient",
21
+ "SalesforceAuthError",
22
+ "AuthStrategy",
23
+ "ClientCredentialsAuth",
24
+ "RefreshTokenAuth",
25
+ "StaticTokenAuth",
26
+ "SfdxCliAuth",
27
+ ]
28
+
29
+ # Try to import exporter functionality if dependencies are available
30
+ try:
31
+ from .exporter import ( # noqa: F401
32
+ bulk_query,
33
+ get_bulk_fields,
34
+ resume_from_locator,
35
+ write_records_to_csv,
36
+ QueryResult,
37
+ batch_records_async,
38
+ ParquetWriter,
39
+ create_schema_from_metadata,
40
+ write_query_to_parquet,
41
+ salesforce_to_arrow_type,
42
+ )
43
+
44
+ __all__.extend(
45
+ [
46
+ "bulk_query",
47
+ "get_bulk_fields",
48
+ "resume_from_locator",
49
+ "write_records_to_csv",
50
+ "QueryResult",
51
+ "batch_records_async",
52
+ "ParquetWriter",
53
+ "create_schema_from_metadata",
54
+ "write_query_to_parquet",
55
+ "salesforce_to_arrow_type",
56
+ ]
57
+ )
58
+
59
+ except ImportError:
60
+ # Exporter dependencies not available - this is fine for core-only installs
61
+ pass
@@ -1,28 +0,0 @@
1
- """aio-salesforce: Async Salesforce library for Python with Bulk API 2.0 support."""
2
-
3
- __author__ = "Jonas"
4
- __email__ = "charlie@callaway.cloud"
5
-
6
- # Client functionality
7
- from .api.client import SalesforceClient # noqa: F401
8
- from .api.auth import ( # noqa: F401
9
- SalesforceAuthError,
10
- AuthStrategy,
11
- ClientCredentialsAuth,
12
- RefreshTokenAuth,
13
- StaticTokenAuth,
14
- SfdxCliAuth,
15
- )
16
-
17
- # Core package only exports client functionality
18
- # Users import exporter functions directly: from aio_sf.exporter import bulk_query
19
-
20
- __all__ = [
21
- "SalesforceClient",
22
- "SalesforceAuthError",
23
- "AuthStrategy",
24
- "ClientCredentialsAuth",
25
- "RefreshTokenAuth",
26
- "StaticTokenAuth",
27
- "SfdxCliAuth",
28
- ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes