silhouette-python-sdk 0.1.0__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.
silhouette/__init__.py ADDED
@@ -0,0 +1,88 @@
1
+ """
2
+ Silhouette Python SDK - Python SDK for trading on Silhouette, the shielded exchange on Hyperliquid.
3
+
4
+ This package is a drop-in REPLACEMENT for the Hyperliquid Python SDK with additional
5
+ convenience methods, plus integration with the Silhouette enclave API.
6
+
7
+ IMPORTANT: Install only silhouette-python-sdk; it depends on hyperliquid-python-sdk,
8
+ do not install hyperliquid-python-sdk separately. The official Hyperliquid SDK is
9
+ included as a dependency, and silhouette-python-sdk provides enhanced versions of
10
+ all Hyperliquid classes.
11
+
12
+ Usage:
13
+ # IMPORTANT: Always import silhouette FIRST, before any hyperliquid imports
14
+ import silhouette
15
+
16
+ # Then use standard hyperliquid imports to get enhanced versions
17
+ from hyperliquid.info import Info
18
+ from hyperliquid.exchange import Exchange
19
+ from hyperliquid.websocket_manager import WebsocketManager
20
+
21
+ info = Info() # Enhanced with get_balance(), await_withdrawal_completion()
22
+ exchange = Exchange(wallet) # Enhanced with deposit_to_silhouette()
23
+ ws_manager = WebsocketManager()
24
+
25
+ # Silhouette enclave API integration
26
+ from silhouette.api import SilhouetteApiClient
27
+
28
+ api_client = SilhouetteApiClient()
29
+ """
30
+
31
+ import sys
32
+ import warnings
33
+ from importlib.metadata import PackageNotFoundError, version
34
+
35
+ # Check if hyperliquid modules were already imported before silhouette
36
+ # This helps users avoid confusion from mixed official/enhanced classes
37
+ _HYPERLIQUID_MODULES = [
38
+ "hyperliquid.info",
39
+ "hyperliquid.exchange",
40
+ "hyperliquid.websocket_manager",
41
+ "hyperliquid.api",
42
+ "hyperliquid.utils",
43
+ ]
44
+ _already_imported = [mod for mod in _HYPERLIQUID_MODULES if mod in sys.modules]
45
+ if _already_imported:
46
+ warnings.warn(
47
+ f"Hyperliquid modules {_already_imported} were imported before silhouette. "
48
+ "For best results, import silhouette FIRST before any hyperliquid imports. "
49
+ "This ensures you get the enhanced versions with all convenience methods.",
50
+ UserWarning,
51
+ stacklevel=2,
52
+ )
53
+
54
+ # Now import our enhanced wrapper modules
55
+ # ruff: noqa: E402 - Imports must come after the warning check above
56
+ import silhouette.hyperliquid.api
57
+ import silhouette.hyperliquid.exchange
58
+ import silhouette.hyperliquid.info
59
+ import silhouette.hyperliquid.utils
60
+ import silhouette.hyperliquid.utils.constants
61
+ import silhouette.hyperliquid.utils.error
62
+ import silhouette.hyperliquid.utils.signing
63
+ import silhouette.hyperliquid.utils.types
64
+ import silhouette.hyperliquid.websocket_manager
65
+ from silhouette.api import SilhouetteApiClient, SilhouetteApiError
66
+
67
+ # Inject our enhanced versions into sys.modules as 'hyperliquid.*'
68
+ # This makes `from hyperliquid.info import Info` work with our enhanced versions
69
+ sys.modules["hyperliquid.info"] = silhouette.hyperliquid.info
70
+ sys.modules["hyperliquid.exchange"] = silhouette.hyperliquid.exchange
71
+ sys.modules["hyperliquid.websocket_manager"] = silhouette.hyperliquid.websocket_manager
72
+ sys.modules["hyperliquid.api"] = silhouette.hyperliquid.api
73
+ sys.modules["hyperliquid.utils"] = silhouette.hyperliquid.utils
74
+ sys.modules["hyperliquid.utils.signing"] = silhouette.hyperliquid.utils.signing
75
+ sys.modules["hyperliquid.utils.constants"] = silhouette.hyperliquid.utils.constants
76
+ sys.modules["hyperliquid.utils.error"] = silhouette.hyperliquid.utils.error
77
+ sys.modules["hyperliquid.utils.types"] = silhouette.hyperliquid.utils.types
78
+
79
+ try:
80
+ # Prefer the distribution name from pyproject
81
+ __version__ = version("silhouette-python-sdk")
82
+ except PackageNotFoundError:
83
+ try:
84
+ __version__ = version("silhouette")
85
+ except PackageNotFoundError:
86
+ __version__ = "0.0.0"
87
+
88
+ __all__ = ["SilhouetteApiClient", "SilhouetteApiError"]