Skip to content

Commit

Permalink
Merge pull request #59 from bnb-chain/rc-v0.6.0
Browse files Browse the repository at this point in the history
Release v0.6.0
  • Loading branch information
alplabin authored Apr 22, 2024
2 parents 3fb80df + 060b9af commit acb52af
Show file tree
Hide file tree
Showing 50 changed files with 1,589 additions and 1,424 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
Changelog
=========

0.6.0 - 2024-04-22
-------

- Upgrade dependencies
- Updated codebase to support Greenfield 1.2.0
- Resolve issues
- Add new functions:
- `Basic`:
- `set_tag`

0.5.1 - 2023-12-14
-------

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ Greenfield Python SDK is a Python package for interacting with the Greenfield AP

It provides an asynchronous client that can be used to interact with the Greenfield blockchain API and the Greenfield storage provider.

This SDK support latest Greenfield Mainnet version (v1.1.0).
This SDK support Greenfield Mainnet version (v1.2.0).

For more information about the Greenfield Python SDK, please check the following website: [Greenfield Python SDK](https://bnb-chain.github.io/greenfield-python-sdk/)
For more information about the Greenfield Python SDK, please check the following website: [Greenfield Python SDK](https://bitdj.github.io/greenfield-python-sdk/)

## Installation

Expand Down
2 changes: 1 addition & 1 deletion greenfield_python_sdk/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from pydantic import BaseModel
from pydantic_settings import BaseSettings

GREENFIELD_VERSION = "v1.1.0"
GREENFIELD_VERSION = "v1.2.0"


class NetworkMainnet(BaseModel):
Expand Down
14 changes: 12 additions & 2 deletions greenfield_python_sdk/greenfield/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@

from greenfield_python_sdk.__version__ import __version__
from greenfield_python_sdk.blockchain_client import BlockchainClient
from greenfield_python_sdk.key_manager import KeyManager
from greenfield_python_sdk.models.basic import ResultBlockResults, ResultCommit, ResultStatus
from greenfield_python_sdk.models.eip712_messages.storage.msg_set_tag import TYPE_URL
from greenfield_python_sdk.protos.cosmos.base.tendermint.v1beta1 import (
GetBlockByHeightRequest,
GetBlockByHeightResponse,
Expand All @@ -18,14 +20,17 @@
Validator,
)
from greenfield_python_sdk.protos.cosmos.tx.v1beta1 import GetTxRequest, SimulateResponse
from greenfield_python_sdk.protos.greenfield.storage import MsgSetTag, ResourceTags
from greenfield_python_sdk.protos.tendermint.services.block_results.v1 import GetBlockResultsRequest


class Basic:
blockchain_client: BlockchainClient
key_manager: KeyManager

def __init__(self, blockchain_client):
def __init__(self, blockchain_client, key_manager):
self.blockchain_client = blockchain_client
self.key_manager = key_manager

async def get_node_info(self) -> GetNodeInfoResponse:
response = await self.blockchain_client.tendermint.get_node_info()
Expand All @@ -41,7 +46,7 @@ async def get_greenfield_node_version(self) -> str:
return (
self.response["result"]["response"]["version"]
if "version" in self.response["result"]["response"]
else "v1.1.0"
else "v1.2.0"
)

async def get_status(self) -> ResultStatus:
Expand Down Expand Up @@ -172,3 +177,8 @@ async def make_requests(self, method: str, params):
self.blockchain_client.channel.base_url, data=json.dumps(data), headers=headers
)
return (await self._resp.json())["result"]

async def set_tag(self, resource_grn: str, tags: ResourceTags):
msg_set_tag = MsgSetTag(operator=self.key_manager.address, resource=resource_grn, tags=tags)
tx_hash = await self.blockchain_client.broadcast_message(message=msg_set_tag, type_url=TYPE_URL)
return tx_hash
24 changes: 14 additions & 10 deletions greenfield_python_sdk/greenfield/payment.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ async def disable_refund(self, address: str) -> str:

return tx

async def list_user_payment_accounts(self, opts: ListUserPaymentAccountsOptions) -> ListUserPaymentAccountsResult:
async def list_user_payment_accounts(
self, opts: ListUserPaymentAccountsOptions
) -> List[ListUserPaymentAccountsResult]:
query_parameters = {
"user-payments": "",
}
Expand All @@ -98,16 +100,18 @@ async def list_user_payment_accounts(self, opts: ListUserPaymentAccountsOptions)
)
list_payment_accounts = html_to_json.convert(await response.text())["gfsplistuserpaymentaccountsresponse"][0]

list_user_payment_accounts = []
if "paymentaccounts" in list_payment_accounts:
converted_data_list = {
convert_key(key): convert_value(key, value) if value[0] else ""
for key, value in list_payment_accounts["paymentaccounts"][0].items()
}
fields = ["netflow_rate", "static_balance", "buffer_balance", "lock_balance", "frozen_netflow_rate"]
for field in fields:
converted_data_list["stream_record"][field] = str(converted_data_list["stream_record"][field])
return ListUserPaymentAccountsResult(**converted_data_list)
return ListUserPaymentAccountsResult()
test = list_payment_accounts["paymentaccounts"]
for test in list_payment_accounts["paymentaccounts"]:
converted_data_list = {
convert_key(key): convert_value(key, value) if value[0] else "" for key, value in test.items()
}
fields = ["netflow_rate", "static_balance", "buffer_balance", "lock_balance", "frozen_netflow_rate"]
for field in fields:
converted_data_list["stream_record"][field] = str(converted_data_list["stream_record"][field])
list_user_payment_accounts.append(ListUserPaymentAccountsResult(**converted_data_list))
return list_user_payment_accounts

async def get_all_payment_accounts(self, pagination: PaginationResponse = None) -> List["PaymentAccount"]:
request = QueryPaymentAccountsRequest(pagination)
Expand Down
4 changes: 2 additions & 2 deletions greenfield_python_sdk/greenfield_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ async def __aenter__(self):
).__aenter__()

# Embeded clients
self.basic = Basic(self.blockchain_client)
self.basic = Basic(self.blockchain_client, self.key_manager)
self.account = AccountInterface(self.blockchain_client, self.basic)
self.bucket = Bucket(self.blockchain_client, self.key_manager, self.storage_client)
self.challenge = Challenge(self.blockchain_client, self.storage_client)
Expand All @@ -84,7 +84,7 @@ async def __aenter__(self):
return self

async def async_init(self):
await self.check_node_version()
# await self.check_node_version()
await self.sync_account()

async def check_node_version(self):
Expand Down
3 changes: 2 additions & 1 deletion greenfield_python_sdk/models/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from greenfield_python_sdk.models.transaction import TxOption
from greenfield_python_sdk.protos.greenfield.common import Approval
from greenfield_python_sdk.protos.greenfield.storage import BucketInfo
from greenfield_python_sdk.protos.greenfield.storage import BucketInfo, ResourceTags, ResourceTagsTag
from greenfield_python_sdk.protos.greenfield.storage import VisibilityType
from greenfield_python_sdk.protos.greenfield.storage import VisibilityType as Visibility
from greenfield_python_sdk.protos.greenfield.virtualgroup import GlobalVirtualGroupFamily
Expand Down Expand Up @@ -126,6 +126,7 @@ class CreateBucketOptions(BaseModel):
creator_address: Optional[str] = ""
payment_address: Optional[str] = ""
primary_sp_approval: Optional[Approval] = Approval(expired_height=0)
tags: Optional[ResourceTags] = None
visibility: Optional[VisibilityType] = VisibilityType.VISIBILITY_TYPE_UNSPECIFIED


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
msg_mirror_group,
msg_mirror_object,
msg_put_policy,
msg_set_tag,
msg_update_bucket_info,
msg_update_object_info,
)
Expand Down Expand Up @@ -38,6 +39,7 @@
UPDATE_BUCKET_INFO: msg_update_bucket_info.TYPES,
PUT_POLICY: msg_put_policy.TYPES,
DELETE_POLICY: msg_delete_policy.TYPES,
msg_set_tag.TYPE_URL: msg_set_tag.TYPES,
msg_mirror_group.TYPE_URL: msg_mirror_group.TYPES,
msg_mirror_bucket.TYPE_URL: msg_mirror_bucket.TYPES,
msg_mirror_object.TYPE_URL: msg_mirror_object.TYPES,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
TYPE_URL = "/greenfield.storage.MsgSetTag"
TYPES = {
"Msg1": [
{"name": "type", "type": "string"},
{"name": "operator", "type": "string"},
{"name": "resource", "type": "string"},
{"name": "tags", "type": "TypeMsg1Tags"},
],
"TypeMsg1Tags": [
{"name": "tags", "type": "TypeMsg1TagsTags[]"},
],
"TypeMsg1TagsTags": [
{"name": "key", "type": "string"},
{"name": "value", "type": "string"},
],
}
3 changes: 2 additions & 1 deletion greenfield_python_sdk/models/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@

from pydantic import BaseModel

from greenfield_python_sdk.protos.greenfield.storage import GroupInfo
from greenfield_python_sdk.protos.greenfield.storage import GroupInfo, ResourceTags, ResourceTagsTag


class CreateGroupOptions(BaseModel):
init_group_members: List[str] = None
extra: str = ""
tags: ResourceTags = None


class ListGroupsOptions(BaseModel):
Expand Down
3 changes: 2 additions & 1 deletion greenfield_python_sdk/models/object.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from pydantic import BaseModel

from greenfield_python_sdk.protos.greenfield.storage import ObjectInfo, VisibilityType
from greenfield_python_sdk.protos.greenfield.storage import ObjectInfo, ResourceTags, ResourceTagsTag, VisibilityType


class CreateObjectOptions(BaseModel):
Expand All @@ -12,6 +12,7 @@ class CreateObjectOptions(BaseModel):
is_replica_type: Optional[bool] = None
is_async_mode: Optional[bool] = None
is_serial_compute_mode: Optional[str] = "true"
tags: Optional[ResourceTags] = None


class PutObjectOptions(BaseModel):
Expand Down
2 changes: 0 additions & 2 deletions greenfield_python_sdk/protos/greenfield/sp/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

86 changes: 84 additions & 2 deletions greenfield_python_sdk/protos/greenfield/storage/__init__.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit acb52af

Please sign in to comment.