blindpay 0.1.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 (39) hide show
  1. blindpay-0.1.0/.gitignore +145 -0
  2. blindpay-0.1.0/LICENSE +21 -0
  3. blindpay-0.1.0/PKG-INFO +94 -0
  4. blindpay-0.1.0/README.md +71 -0
  5. blindpay-0.1.0/py.typed +0 -0
  6. blindpay-0.1.0/pyproject.toml +101 -0
  7. blindpay-0.1.0/src/blindpay/__init__.py +54 -0
  8. blindpay-0.1.0/src/blindpay/_internal/__init__.py +4 -0
  9. blindpay-0.1.0/src/blindpay/_internal/api_client.py +54 -0
  10. blindpay-0.1.0/src/blindpay/_internal/exceptions.py +6 -0
  11. blindpay-0.1.0/src/blindpay/client.py +536 -0
  12. blindpay-0.1.0/src/blindpay/resources/__init__.py +29 -0
  13. blindpay-0.1.0/src/blindpay/resources/api_keys/__init__.py +21 -0
  14. blindpay-0.1.0/src/blindpay/resources/api_keys/api_keys.py +82 -0
  15. blindpay-0.1.0/src/blindpay/resources/available/__init__.py +25 -0
  16. blindpay-0.1.0/src/blindpay/resources/available/available.py +113 -0
  17. blindpay-0.1.0/src/blindpay/resources/bank_accounts/__init__.py +69 -0
  18. blindpay-0.1.0/src/blindpay/resources/bank_accounts/bank_accounts.py +473 -0
  19. blindpay-0.1.0/src/blindpay/resources/instances/__init__.py +23 -0
  20. blindpay-0.1.0/src/blindpay/resources/instances/instances.py +82 -0
  21. blindpay-0.1.0/src/blindpay/resources/partner_fees/__init__.py +21 -0
  22. blindpay-0.1.0/src/blindpay/resources/partner_fees/partner_fees.py +100 -0
  23. blindpay-0.1.0/src/blindpay/resources/payins/__init__.py +69 -0
  24. blindpay-0.1.0/src/blindpay/resources/payins/payins.py +246 -0
  25. blindpay-0.1.0/src/blindpay/resources/payins/quotes.py +100 -0
  26. blindpay-0.1.0/src/blindpay/resources/payouts/__init__.py +35 -0
  27. blindpay-0.1.0/src/blindpay/resources/payouts/payouts.py +241 -0
  28. blindpay-0.1.0/src/blindpay/resources/quotes/__init__.py +25 -0
  29. blindpay-0.1.0/src/blindpay/resources/quotes/quotes.py +114 -0
  30. blindpay-0.1.0/src/blindpay/resources/receivers/__init__.py +66 -0
  31. blindpay-0.1.0/src/blindpay/resources/receivers/receivers.py +452 -0
  32. blindpay-0.1.0/src/blindpay/resources/virtual_accounts/__init__.py +31 -0
  33. blindpay-0.1.0/src/blindpay/resources/virtual_accounts/virtual_accounts.py +106 -0
  34. blindpay-0.1.0/src/blindpay/resources/wallets/__init__.py +63 -0
  35. blindpay-0.1.0/src/blindpay/resources/wallets/blockchain.py +167 -0
  36. blindpay-0.1.0/src/blindpay/resources/wallets/offramp.py +117 -0
  37. blindpay-0.1.0/src/blindpay/resources/webhooks/__init__.py +27 -0
  38. blindpay-0.1.0/src/blindpay/resources/webhooks/webhooks.py +103 -0
  39. blindpay-0.1.0/src/blindpay/types.py +361 -0
@@ -0,0 +1,145 @@
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
+ *.manifest
31
+ *.spec
32
+
33
+ # Installer logs
34
+ pip-log.txt
35
+ pip-delete-this-directory.txt
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+ .coverage
42
+ .coverage.*
43
+ .cache
44
+ nosetests.xml
45
+ coverage.xml
46
+ *.cover
47
+ *.py,cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+ cover/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Django stuff:
57
+ *.log
58
+ local_settings.py
59
+ db.sqlite3
60
+ db.sqlite3-journal
61
+
62
+ # Flask stuff:
63
+ instance/
64
+ .webassets-cache
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ .pybuilder/
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # IPython
80
+ profile_default/
81
+ ipython_config.py
82
+
83
+ # pyenv
84
+ .python-version
85
+
86
+ # pipenv
87
+ Pipfile.lock
88
+
89
+ # poetry
90
+ poetry.lock
91
+
92
+ # pdm
93
+ .pdm.toml
94
+ .pdm-python
95
+ .pdm-build/
96
+
97
+ # PEP 582
98
+ __pypackages__/
99
+
100
+ # Celery stuff
101
+ celerybeat-schedule
102
+ celerybeat.pid
103
+
104
+ # SageMath parsed files
105
+ *.sage.py
106
+
107
+ # Environments
108
+ .env
109
+ .venv
110
+ env/
111
+ venv/
112
+ ENV/
113
+ env.bak/
114
+ venv.bak/
115
+
116
+ # Spyder project settings
117
+ .spyderproject
118
+ .spyproject
119
+
120
+ # Rope project settings
121
+ .ropeproject
122
+
123
+ # mkdocs documentation
124
+ /site
125
+
126
+ # mypy
127
+ .mypy_cache/
128
+ .dmypy.json
129
+ dmypy.json
130
+
131
+ # Pyre type checker
132
+ .pyre/
133
+
134
+ # pytype static type analyzer
135
+ .pytype/
136
+
137
+ # Cython debug symbols
138
+ cython_debug/
139
+
140
+ # PyCharm
141
+ .idea/
142
+
143
+
144
+ # uv
145
+ .uv/
blindpay-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Blind Pay, Inc.
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,94 @@
1
+ Metadata-Version: 2.3
2
+ Name: blindpay
3
+ Version: 0.1.0
4
+ Summary: Official Python SDK for the Blindpay API — Global payments infrastructure
5
+ Project-URL: Homepage, https://github.com/blindpaylabs/blindpay-python
6
+ Project-URL: Repository, https://github.com/blindpaylabs/blindpay-python
7
+ Project-URL: Documentation, https://api.blindpay.com/reference
8
+ Project-URL: Bug Tracker, https://github.com/blindpaylabs/blindpay-python/issues
9
+ Author-email: Blindpay <gabriel@blindpay.com>
10
+ License: MIT
11
+ Keywords: api,blindpay,global-payments,payment-processing,payments,sdk
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Typing :: Typed
18
+ Requires-Python: >=3.12
19
+ Requires-Dist: httpx<1,>=0.23.0
20
+ Requires-Dist: pydantic<3,>=1.9.0
21
+ Requires-Dist: typing-extensions<5,>=4.11
22
+ Description-Content-Type: text/markdown
23
+
24
+ # BlindPay Python SDK
25
+
26
+ The official Python SDK for Blindpay - Global payments infrastructure made simple.
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ pip install blindpay
32
+ ```
33
+
34
+ ## Requirements
35
+
36
+ - Python 3.12 or higher
37
+
38
+ ## Error Handling
39
+
40
+ All API methods return a response dictionary with either `data` or `error`:
41
+
42
+ ```python
43
+ blindpay = BlindPay(
44
+ api_key="your_api_key_here",
45
+ instance_id="your_instance_id_here"
46
+ )
47
+
48
+ response = await blindpay.receivers.get("receiver-id")
49
+
50
+ if response['error']:
51
+ print(f"Error: {response['error']['message']}")
52
+ return
53
+
54
+ receiver = response['data']
55
+ print(f"Receiver: {receiver}")
56
+ ```
57
+
58
+ ## Types
59
+
60
+ The SDK includes comprehensive type definitions for all API resources and parameters. These can be imported from the main package:
61
+
62
+ ```python
63
+ from blindpay import (
64
+ AccountClass,
65
+ BankAccountType,
66
+ Country,
67
+ Currency,
68
+ CurrencyType,
69
+ Network,
70
+ Rail,
71
+ StablecoinToken,
72
+ TransactionDocumentType,
73
+ TransactionStatus,
74
+ PaginationParams,
75
+ PaginationMetadata,
76
+ # ... and more
77
+ )
78
+ ```
79
+
80
+ ## Development
81
+
82
+ This SDK uses:
83
+ - `uv` for package management
84
+ - `httpx` for async HTTP requests
85
+ - `pydantic` for data validation
86
+ - `typing_extensions` for typing
87
+
88
+ ## License
89
+
90
+ MIT
91
+
92
+ ## Support
93
+
94
+ For support, please contact gabriel@blindpay.com or visit [blindpay](https://blindpay.com)
@@ -0,0 +1,71 @@
1
+ # BlindPay Python SDK
2
+
3
+ The official Python SDK for Blindpay - Global payments infrastructure made simple.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install blindpay
9
+ ```
10
+
11
+ ## Requirements
12
+
13
+ - Python 3.12 or higher
14
+
15
+ ## Error Handling
16
+
17
+ All API methods return a response dictionary with either `data` or `error`:
18
+
19
+ ```python
20
+ blindpay = BlindPay(
21
+ api_key="your_api_key_here",
22
+ instance_id="your_instance_id_here"
23
+ )
24
+
25
+ response = await blindpay.receivers.get("receiver-id")
26
+
27
+ if response['error']:
28
+ print(f"Error: {response['error']['message']}")
29
+ return
30
+
31
+ receiver = response['data']
32
+ print(f"Receiver: {receiver}")
33
+ ```
34
+
35
+ ## Types
36
+
37
+ The SDK includes comprehensive type definitions for all API resources and parameters. These can be imported from the main package:
38
+
39
+ ```python
40
+ from blindpay import (
41
+ AccountClass,
42
+ BankAccountType,
43
+ Country,
44
+ Currency,
45
+ CurrencyType,
46
+ Network,
47
+ Rail,
48
+ StablecoinToken,
49
+ TransactionDocumentType,
50
+ TransactionStatus,
51
+ PaginationParams,
52
+ PaginationMetadata,
53
+ # ... and more
54
+ )
55
+ ```
56
+
57
+ ## Development
58
+
59
+ This SDK uses:
60
+ - `uv` for package management
61
+ - `httpx` for async HTTP requests
62
+ - `pydantic` for data validation
63
+ - `typing_extensions` for typing
64
+
65
+ ## License
66
+
67
+ MIT
68
+
69
+ ## Support
70
+
71
+ For support, please contact gabriel@blindpay.com or visit [blindpay](https://blindpay.com)
File without changes
@@ -0,0 +1,101 @@
1
+ [project]
2
+ name = "blindpay"
3
+ version = "0.1.0"
4
+ description = "Official Python SDK for the Blindpay API — Global payments infrastructure"
5
+ readme = "README.md"
6
+ authors = [{ name = "Blindpay", email = "gabriel@blindpay.com" }]
7
+ license = { text = "MIT" }
8
+ keywords = ["blindpay", "payments", "api", "sdk", "global-payments", "payment-processing"]
9
+ requires-python = ">=3.12"
10
+ dependencies = [
11
+ "httpx>=0.23.0, <1",
12
+ "pydantic>=1.9.0, <3",
13
+ "typing-extensions>=4.11, <5",
14
+ ]
15
+ classifiers = [
16
+ "Typing :: Typed",
17
+ "Intended Audience :: Developers",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Operating System :: OS Independent",
21
+ "License :: OSI Approved :: MIT License",
22
+ ]
23
+
24
+ [project.urls]
25
+ Homepage = "https://github.com/blindpaylabs/blindpay-python"
26
+ Repository = "https://github.com/blindpaylabs/blindpay-python"
27
+ Documentation = "https://api.blindpay.com/reference"
28
+ "Bug Tracker" = "https://github.com/blindpaylabs/blindpay-python/issues"
29
+
30
+ [build-system]
31
+ requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"]
32
+ build-backend = "hatchling.build"
33
+
34
+ [tool.hatch.version]
35
+ path = "src/blindpay/__init__.py"
36
+
37
+ [tool.hatch.build]
38
+ include = ["src/*", "README.md", "LICENSE", "py.typed"]
39
+
40
+ [tool.hatch.build.targets.wheel]
41
+ packages = ["src/blindpay"]
42
+
43
+ [tool.hatch.build.targets.sdist]
44
+ include = ["/src", "/README.md", "/LICENSE", "/pyproject.toml", "/py.typed"]
45
+
46
+ [tool.hatch.metadata.hooks.fancy-pypi-readme]
47
+ content-type = "text/markdown"
48
+
49
+ [[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
50
+ path = "README.md"
51
+
52
+ [[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
53
+ pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
54
+ replacement = '[\1](https://github.com/blindpaylabs/blindpay-python/tree/main/\g<2>)'
55
+
56
+ [dependency-groups]
57
+ dev = [
58
+ "ruff",
59
+ "pyright==1.1.399",
60
+ "mypy",
61
+ ]
62
+
63
+ [tool.ruff]
64
+ line-length = 120
65
+ target-version = "py312"
66
+ output-format = "grouped"
67
+
68
+ [tool.ruff.format]
69
+ docstring-code-format = true
70
+
71
+ [tool.ruff.lint]
72
+ select = ["I","B","E","F","ARG","T201","T203"]
73
+ ignore = ["B006"]
74
+ unfixable = ["T201","T203"]
75
+
76
+ [tool.ruff.lint.isort]
77
+ combine-as-imports = true
78
+ known-first-party = ["blindpay"]
79
+
80
+ [tool.ruff.lint.per-file-ignores]
81
+ "examples/*.py" = ["T201"]
82
+
83
+ [tool.mypy]
84
+ pretty = true
85
+ show_error_codes = true
86
+ strict_equality = true
87
+ implicit_reexport = true
88
+ check_untyped_defs = true
89
+ no_implicit_optional = true
90
+ warn_return_any = true
91
+ warn_unreachable = true
92
+ warn_unused_configs = true
93
+ disallow_any_generics = true
94
+ disallow_untyped_defs = true
95
+ disallow_untyped_calls = true
96
+ disallow_subclassing_any = true
97
+ disallow_incomplete_defs = true
98
+ disallow_untyped_decorators = true
99
+ exclude = [
100
+ "^examples/",
101
+ ]
@@ -0,0 +1,54 @@
1
+ __version__ = "0.1.0"
2
+
3
+ from ._internal.exceptions import BlindPayError
4
+ from .client import BlindPay, BlindPaySync
5
+ from .types import (
6
+ AccountClass,
7
+ BankAccountType,
8
+ BlindpayApiResponse,
9
+ BlindpayErrorResponse,
10
+ BlindpaySuccessResponse,
11
+ Country,
12
+ Currency,
13
+ CurrencyType,
14
+ ErrorResponse,
15
+ Network,
16
+ PaginationMetadata,
17
+ PaginationParams,
18
+ Rail,
19
+ StablecoinToken,
20
+ TrackingComplete,
21
+ TrackingLiquidity,
22
+ TrackingPartnerFee,
23
+ TrackingPayment,
24
+ TrackingTransaction,
25
+ TransactionDocumentType,
26
+ TransactionStatus,
27
+ )
28
+
29
+ __all__ = [
30
+ "BlindPay",
31
+ "BlindPaySync",
32
+ "BlindPayError",
33
+ "AccountClass",
34
+ "BankAccountType",
35
+ "Country",
36
+ "Currency",
37
+ "CurrencyType",
38
+ "Network",
39
+ "Rail",
40
+ "StablecoinToken",
41
+ "TransactionDocumentType",
42
+ "TransactionStatus",
43
+ "BlindpayApiResponse",
44
+ "BlindpayErrorResponse",
45
+ "BlindpaySuccessResponse",
46
+ "ErrorResponse",
47
+ "PaginationMetadata",
48
+ "PaginationParams",
49
+ "TrackingComplete",
50
+ "TrackingLiquidity",
51
+ "TrackingPartnerFee",
52
+ "TrackingPayment",
53
+ "TrackingTransaction",
54
+ ]
@@ -0,0 +1,4 @@
1
+ from .api_client import InternalApiClient
2
+ from .exceptions import BlindPayError
3
+
4
+ __all__ = ["InternalApiClient", "BlindPayError"]
@@ -0,0 +1,54 @@
1
+ from typing import Any, Mapping, Optional, Protocol
2
+
3
+ from ..types import BlindpayApiResponse
4
+
5
+
6
+ class InternalApiClient(Protocol):
7
+ """
8
+ Internal API client interface that resources use to make HTTP requests.
9
+ This interface is not exposed to SDK users.
10
+ """
11
+
12
+ async def get(self, path: str) -> BlindpayApiResponse[Any]:
13
+ """Make a GET request"""
14
+ ...
15
+
16
+ async def post(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
17
+ """Make a POST request"""
18
+ ...
19
+
20
+ async def put(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
21
+ """Make a PUT request"""
22
+ ...
23
+
24
+ async def patch(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
25
+ """Make a PATCH request"""
26
+ ...
27
+
28
+ async def delete(self, path: str, body: Optional[Mapping[str, Any]] = None) -> BlindpayApiResponse[Any]:
29
+ """Make a DELETE request"""
30
+ ...
31
+
32
+
33
+ class InternalApiClientSync(Protocol):
34
+ """Synchronous version of InternalApiClient"""
35
+
36
+ def get(self, path: str) -> BlindpayApiResponse[Any]:
37
+ """Make a GET request"""
38
+ ...
39
+
40
+ def post(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
41
+ """Make a POST request"""
42
+ ...
43
+
44
+ def put(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
45
+ """Make a PUT request"""
46
+ ...
47
+
48
+ def patch(self, path: str, body: Mapping[str, Any]) -> BlindpayApiResponse[Any]:
49
+ """Make a PATCH request"""
50
+ ...
51
+
52
+ def delete(self, path: str, body: Optional[Mapping[str, Any]] = None) -> BlindpayApiResponse[Any]:
53
+ """Make a DELETE request"""
54
+ ...
@@ -0,0 +1,6 @@
1
+ class BlindPayError(Exception):
2
+ """BlindPay SDK error"""
3
+
4
+ def __init__(self, message: str):
5
+ super().__init__(message)
6
+ self.name = "BlindpayError"