abstract-solana 0.0.2.121__tar.gz → 0.0.2.123__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 (19) hide show
  1. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/PKG-INFO +1 -1
  2. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/setup.py +1 -1
  3. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/__init__.py +1 -0
  4. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/abstract_solana_utils/genesis_functions.py +23 -8
  5. abstract_solana-0.0.2.123/src/abstract_solana/rpc_utils/__init__.py +1 -0
  6. abstract_solana-0.0.2.123/src/abstract_solana/rpc_utils/rpc_utils.py +43 -0
  7. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana.egg-info/PKG-INFO +1 -1
  8. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana.egg-info/SOURCES.txt +3 -1
  9. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/README.md +0 -0
  10. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/pyproject.toml +0 -0
  11. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/setup.cfg +0 -0
  12. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/abstract_solana_utils/__init__.py +0 -0
  13. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/abstract_solana_utils/bondingCurves.py +0 -0
  14. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/abstract_solana_utils/pubKeyUtils.py +0 -0
  15. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/pumpFun/__init__.py +0 -0
  16. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana/pumpFun/constants.py +0 -0
  17. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana.egg-info/dependency_links.txt +0 -0
  18. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana.egg-info/requires.txt +0 -0
  19. {abstract_solana-0.0.2.121 → abstract_solana-0.0.2.123}/src/abstract_solana.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: abstract_solana
3
- Version: 0.0.2.121
3
+ Version: 0.0.2.123
4
4
  Home-page: https://github.com/AbstractEndeavors/abstract_solana
5
5
  Author: putkoff
6
6
  Author-email: partners@abstractendeavors.com
@@ -4,7 +4,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
4
4
  long_description = fh.read()
5
5
  setuptools.setup(
6
6
  name='abstract_solana',
7
- version='0.0.2.121',
7
+ version='0.0.2.123',
8
8
  author='putkoff',
9
9
  author_email='partners@abstractendeavors.com',
10
10
  description="",
@@ -1,2 +1,3 @@
1
1
  from .abstract_solana_utils import *
2
2
  from .pumpFun import *
3
+ from .rpc_utils import *
@@ -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,33 @@ 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
- async def async_getGenesisSignature(address, limit=1000, before=None,encoding='jsonParsed',commitment=0,errorProof=True):
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
- oldest=None
26
- validOldest=None
34
+ signatureArray = get_first_sigs(address, until=until, limit=limit)
35
+ original_length=len(signatureArray)
27
36
  while True:
28
- signatureArray = await async_make_rate_limited_call(method ="getSignaturesForAddress",params=[address, {"limit":limit, "until":before}],solcatcherSettings={"getResponse":True,"getResult":'result'})
29
- original_length = len(signatureArray or '')
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',oldest) or oldest
32
- validOldest = signature_array_data.get('oldestValid',validOldest) or validOldest
33
- if original_length < limit or original_length == 0 or (original_length>0 and (oldest == validOldest or oldest == before) and last_sig != None):
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))
35
50
  def getGenesisSignature(*args,**kwargs):
36
51
  return asyncio.run(async_getGenesisSignature(*args,**kwargs))
37
52
 
@@ -0,0 +1 @@
1
+ from .rpc_utils import *
@@ -0,0 +1,43 @@
1
+ import requests,json
2
+ def get_if_None(obj,fallBack):
3
+ return obj if obj != None else fallBack
4
+ def get_rpc_payload(method,params=None,id=None,jsonrpc=None):
5
+ if method == None:
6
+ return None
7
+ params=get_if_None(params,[])
8
+ rpc_id=int(get_if_None(id,1))
9
+ jsonrpc=str(get_if_None(jsonrpc,"2.0"))
10
+ return {
11
+ "jsonrpc": jsonrpc,
12
+ "id": rpc_id,
13
+ "method": method,
14
+ "params": params
15
+ }
16
+ def get_result(response):
17
+ try:
18
+ response = response.json()
19
+ result = response.get('result',response)
20
+ except:
21
+ result = response.text
22
+ return result
23
+ def make_rpc_call(method, params=[]):
24
+ url = 'https://rpc.ankr.com/solana/c3b7fd92e298d5682b6ef095eaa4e92160989a713f5ee9ac2693b4da8ff5a370'
25
+ headers = {'Content-Type': 'application/json'}
26
+ payload = get_rpc_payload(method=method, params=params)
27
+ response = requests.post(url, data=json.dumps(payload), headers=headers)
28
+ return response
29
+ def get_transaction(signature):
30
+ transaction=None
31
+ method='getTransaction'
32
+ params=[signature,{"maxSupportedTransactionVersion": 0}]
33
+ while True:
34
+ response = make_rpc_call(method=method,params=params)
35
+ transaction = get_result(response)
36
+ if transaction:
37
+ break
38
+ return transaction
39
+ def get_signatures(address, until=None, limit=1000):
40
+ method = 'getSignaturesForAddress'
41
+ params = [address, {"limit": limit}]
42
+ response = make_rpc_call(method=method,params=params)
43
+ return get_result(response)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: abstract_solana
3
- Version: 0.0.2.121
3
+ Version: 0.0.2.123
4
4
  Home-page: https://github.com/AbstractEndeavors/abstract_solana
5
5
  Author: putkoff
6
6
  Author-email: partners@abstractendeavors.com
@@ -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