abstract-solana 0.0.2.120__tar.gz → 0.0.2.122__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.
Potentially problematic release.
This version of abstract-solana might be problematic. Click here for more details.
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/PKG-INFO +1 -1
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/setup.py +1 -1
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/__init__.py +1 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/abstract_solana_utils/genesis_functions.py +25 -8
- abstract_solana-0.0.2.122/src/abstract_solana/rpc_utils/__init__.py +1 -0
- abstract_solana-0.0.2.122/src/abstract_solana/rpc_utils/rpc_utils.py +42 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/PKG-INFO +1 -1
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/SOURCES.txt +3 -1
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/README.md +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/pyproject.toml +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/setup.cfg +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/abstract_solana_utils/__init__.py +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/abstract_solana_utils/bondingCurves.py +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/abstract_solana_utils/pubKeyUtils.py +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/pumpFun/__init__.py +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/pumpFun/constants.py +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/dependency_links.txt +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/requires.txt +0 -0
- {abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from abstract_apis import get_headers,get_response,get_text_response,load_inner_json
|
|
2
2
|
from abstract_solcatcher import call_solcatcher_db,async_call_solcatcher_py,async_make_rate_limited_call
|
|
3
3
|
from abstract_utilities import get_any_value,make_list
|
|
4
|
+
from ..rpc_utils import get_signatures
|
|
4
5
|
import asyncio,httpx,logging
|
|
5
6
|
def get_block_time_from_txn(txnData):
|
|
6
7
|
return int(get_any_value(txnData,'blockTime') or 0)
|
|
@@ -19,19 +20,35 @@ def return_oldest_last_and_original_length_from_signature_array(signatureArray):
|
|
|
19
20
|
return {"oldest":return_oldest_from_signature_array(signatureArray),
|
|
20
21
|
"oldestValid":return_oldest_from_signature_array(signatureArray,errorless=True),
|
|
21
22
|
"length":len(signatureArray or '')}
|
|
22
|
-
|
|
23
|
+
def get_first_sigs(address, until=None, limit=1000):
|
|
24
|
+
original_length=None
|
|
25
|
+
while True:
|
|
26
|
+
signatureArray = get_signatures(address, until=until, limit=limit)
|
|
27
|
+
if signatureArray:
|
|
28
|
+
original_length = len(signatureArray)
|
|
29
|
+
if original_length:
|
|
30
|
+
return signatureArray
|
|
31
|
+
async def async_getGenesisSignature(address, limit=1000, until=None,encoding='jsonParsed',commitment=0,errorProof=True,url_1_only=True,url_2_only=False):
|
|
23
32
|
method = "getGenesisSignature"
|
|
24
33
|
validBefore=None
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
signatureArray = get_first_sigs(address, until=until, limit=limit)
|
|
35
|
+
original_length=len(signatureArray)
|
|
27
36
|
while True:
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
if validBefore != None:
|
|
38
|
+
signatureArray = get_signatures(address, until=until, limit=limit)
|
|
39
|
+
if signatureArray:
|
|
40
|
+
original_length = len(signatureArray)
|
|
41
|
+
else:
|
|
42
|
+
original_length = 0
|
|
30
43
|
signature_array_data = return_oldest_last_and_original_length_from_signature_array(signatureArray)
|
|
31
|
-
oldest = signature_array_data.get('oldest'
|
|
32
|
-
validOldest = signature_array_data.get('oldestValid'
|
|
33
|
-
if original_length < limit or original_length == 0 or (original_length>0 and (oldest == validOldest or oldest ==
|
|
44
|
+
oldest = signature_array_data.get('oldest')
|
|
45
|
+
validOldest = signature_array_data.get('oldestValid')
|
|
46
|
+
if original_length < limit or original_length == 0 or (original_length>0 and (oldest == validOldest or oldest == validBefore) and oldest != None):
|
|
34
47
|
return validOldest
|
|
48
|
+
validBefore = oldest
|
|
49
|
+
return asyncio.run(async_getGenesisSignature(*args,**kwargs))
|
|
50
|
+
def getGenesisSignature(*args,**kwargs):
|
|
51
|
+
return asyncio.run(async_getGenesisSignature(*args,**kwargs))
|
|
35
52
|
|
|
36
53
|
|
|
37
54
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .rpc_utils import *
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
def get_if_None(obj,fallBack):
|
|
2
|
+
return obj if obj != None else fallBack
|
|
3
|
+
def get_rpc_payload(method,params=None,id=None,jsonrpc=None):
|
|
4
|
+
if method == None:
|
|
5
|
+
return None
|
|
6
|
+
params=get_if_None(params,[])
|
|
7
|
+
rpc_id=int(get_if_None(id,1))
|
|
8
|
+
jsonrpc=str(get_if_None(jsonrpc,"2.0"))
|
|
9
|
+
return {
|
|
10
|
+
"jsonrpc": jsonrpc,
|
|
11
|
+
"id": rpc_id,
|
|
12
|
+
"method": method,
|
|
13
|
+
"params": params
|
|
14
|
+
}
|
|
15
|
+
def get_result(response):
|
|
16
|
+
try:
|
|
17
|
+
response = response.json()
|
|
18
|
+
result = response.get('result',response)
|
|
19
|
+
except:
|
|
20
|
+
result = response.text
|
|
21
|
+
return result
|
|
22
|
+
def make_rpc_call(method, params=[]):
|
|
23
|
+
url = 'https://rpc.ankr.com/solana/c3b7fd92e298d5682b6ef095eaa4e92160989a713f5ee9ac2693b4da8ff5a370'
|
|
24
|
+
headers = {'Content-Type': 'application/json'}
|
|
25
|
+
payload = get_rpc_payload(method=method, params=params)
|
|
26
|
+
response = requests.post(url, data=json.dumps(payload), headers=headers)
|
|
27
|
+
return response
|
|
28
|
+
def get_transaction(signature):
|
|
29
|
+
transaction=None
|
|
30
|
+
method='getTransaction'
|
|
31
|
+
params=[signature,{"maxSupportedTransactionVersion": 0}]
|
|
32
|
+
while True:
|
|
33
|
+
response = make_rpc_call(method=method,params=params)
|
|
34
|
+
transaction = get_result(response)
|
|
35
|
+
if transaction:
|
|
36
|
+
break
|
|
37
|
+
return transaction
|
|
38
|
+
def get_signatures(address, until=None, limit=1000):
|
|
39
|
+
method = 'getSignaturesForAddress'
|
|
40
|
+
params = [address, {"limit": limit}]
|
|
41
|
+
response = make_rpc_call(method=method,params=params)
|
|
42
|
+
return get_result(response)
|
{abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/SOURCES.txt
RENAMED
|
@@ -12,4 +12,6 @@ src/abstract_solana/abstract_solana_utils/bondingCurves.py
|
|
|
12
12
|
src/abstract_solana/abstract_solana_utils/genesis_functions.py
|
|
13
13
|
src/abstract_solana/abstract_solana_utils/pubKeyUtils.py
|
|
14
14
|
src/abstract_solana/pumpFun/__init__.py
|
|
15
|
-
src/abstract_solana/pumpFun/constants.py
|
|
15
|
+
src/abstract_solana/pumpFun/constants.py
|
|
16
|
+
src/abstract_solana/rpc_utils/__init__.py
|
|
17
|
+
src/abstract_solana/rpc_utils/rpc_utils.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/pumpFun/__init__.py
RENAMED
|
File without changes
|
{abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana/pumpFun/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/requires.txt
RENAMED
|
File without changes
|
{abstract_solana-0.0.2.120 → abstract_solana-0.0.2.122}/src/abstract_solana.egg-info/top_level.txt
RENAMED
|
File without changes
|