Skip to content

Commit 03ae9dd

Browse files
Saurabhsaumehta9
Saurabh
authored andcommitted
Upgrade Pyqldb to version 3.0.0rc1
1 parent 1ce3685 commit 03ae9dd

23 files changed

+95
-228
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
### Release 2.0.0-rc.1
2+
* Upgraded Pyqldb version from 2.0.0 to 3.0.0-rc.1
3+
4+
### Release 1.0.0
5+
6+
* Upgraded pyqldb version from v1.0.0-rc.2 to 2.0.0
7+
* Used args for execute_statement instead of a list
8+
* Added examples for native python data types
9+
10+
### Release 1.0.0-rc.2
11+
12+
* Fixes for small documentation issues.
13+
14+
### Release 1.0.0-rc.1
15+
16+
* Initial preview release of the QLDB Python Sample Application.

README.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,6 @@ $ cd docs
4747
$ make html
4848
```
4949

50-
### Release 1.0.0
51-
52-
* Upgraded pyqldb version from v1.0.0-rc.2 to 2.0.0
53-
* Used args for execute_statement instead of a list
54-
* Added examples for native python data types
55-
56-
### Release 1.0.0-rc.2 (October 29, 2019)
57-
58-
* Fixes for small documentation issues.
59-
60-
### Release 1.0.0-rc.1 (October 28, 2019)
61-
62-
* Initial preview release of the QLDB Python Sample Application.
63-
6450
## License
6551

6652
This library is licensed under the MIT-0 License.

pyqldbsamples/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@
1414
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
1515
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1616

17-
__version__ = '1.0.0'
17+
__version__ = '2.0.0-rc.1'

pyqldbsamples/add_secondary_owner.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from pyqldbsamples.model.sample_data import to_ion_struct, get_document_ids, print_result, SampleData, \
2222
convert_object_to_ion
2323
from pyqldbsamples.constants import Constants
24-
from pyqldbsamples.connect_to_ledger import create_qldb_session
24+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2525

2626
logger = getLogger(__name__)
2727
basicConfig(level=INFO)
@@ -125,8 +125,8 @@ def register_secondary_owner(transaction_executor, vin, gov_id):
125125
vin = SampleData.VEHICLE[1]['VIN']
126126
gov_id = SampleData.PERSON[0]['GovId']
127127
try:
128-
with create_qldb_session() as session:
129-
session.execute_lambda(lambda executor: register_secondary_owner(executor, vin, gov_id),
128+
with create_qldb_driver() as driver:
129+
driver.execute_lambda(lambda executor: register_secondary_owner(executor, vin, gov_id),
130130
lambda retry_attempt: logger.info('Retrying due to OCC conflict...'))
131131
logger.info('Secondary owners successfully updated.')
132132
except Exception:

pyqldbsamples/connect_to_ledger.py

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from botocore.exceptions import ClientError
2222

23-
from pyqldb.driver.pooled_qldb_driver import PooledQldbDriver
23+
from pyqldb.driver.qldb_driver import QldbDriver
2424
from pyqldbsamples.constants import Constants
2525

2626
logger = getLogger(__name__)
@@ -29,7 +29,7 @@
2929

3030
def create_qldb_driver(ledger_name=Constants.LEDGER_NAME, region_name=None, endpoint_url=None, boto3_session=None):
3131
"""
32-
Create a QLDB driver for creating sessions.
32+
Create a QLDB driver for executing transactions.
3333
3434
:type ledger_name: str
3535
:param ledger_name: The QLDB ledger name.
@@ -43,38 +43,24 @@ def create_qldb_driver(ledger_name=Constants.LEDGER_NAME, region_name=None, endp
4343
:type boto3_session: :py:class:`boto3.session.Session`
4444
:param boto3_session: The boto3 session to create the client with (see [1]).
4545
46-
:rtype: :py:class:`pyqldb.driver.pooled_qldb_driver.PooledQldbDriver`
47-
:return: A pooled QLDB driver object.
46+
:rtype: :py:class:`pyqldb.driver.qldb_driver.QldbDriver`
47+
:return: A QLDB driver object.
4848
4949
[1]: `Boto3 Session.client Reference <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session.client>`.
5050
"""
51-
qldb_driver = PooledQldbDriver(ledger_name=ledger_name, region_name=region_name, endpoint_url=endpoint_url,
52-
boto3_session=boto3_session)
51+
qldb_driver = QldbDriver(ledger_name=ledger_name, region_name=region_name, endpoint_url=endpoint_url,
52+
boto3_session=boto3_session)
5353
return qldb_driver
5454

5555

56-
def create_qldb_session():
57-
"""
58-
Retrieve a QLDB session object.
59-
60-
:rtype: :py:class:`pyqldb.session.pooled_qldb_session.PooledQldbSession`
61-
:return: A pooled QLDB session object.
62-
"""
63-
qldb_session = pooled_qldb_driver.get_session()
64-
return qldb_session
65-
66-
67-
pooled_qldb_driver = create_qldb_driver()
68-
69-
7056
if __name__ == '__main__':
7157
"""
72-
Connect to a session for a given ledger using default settings.
58+
Connect to a given ledger using default settings.
7359
"""
7460
try:
75-
qldb_session = create_qldb_session()
76-
logger.info('Listing table names ')
77-
for table in qldb_session.list_tables():
78-
logger.info(table)
61+
with create_qldb_driver() as driver:
62+
logger.info('Listing table names ')
63+
for table in driver.list_tables():
64+
logger.info(table)
7965
except ClientError:
80-
logger.exception('Unable to create session.')
66+
logger.exception('Unable to list tables.')

pyqldbsamples/create_index.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from logging import basicConfig, getLogger, INFO
2020

2121
from pyqldbsamples.constants import Constants
22-
from pyqldbsamples.connect_to_ledger import create_qldb_session
22+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2323

2424
logger = getLogger(__name__)
2525
basicConfig(level=INFO)
@@ -53,8 +53,8 @@ def create_index(transaction_executor, table_name, index_attribute):
5353
"""
5454
logger.info('Creating indexes on all tables in a single transaction...')
5555
try:
56-
with create_qldb_session() as session:
57-
session.execute_lambda(lambda x: create_index(x, Constants.PERSON_TABLE_NAME,
56+
with create_qldb_driver() as driver:
57+
driver.execute_lambda(lambda x: create_index(x, Constants.PERSON_TABLE_NAME,
5858
Constants.GOV_ID_INDEX_NAME)
5959
and create_index(x, Constants.VEHICLE_TABLE_NAME,
6060
Constants.VEHICLE_VIN_INDEX_NAME)

pyqldbsamples/create_table.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from logging import basicConfig, getLogger, INFO
2020

2121
from pyqldbsamples.constants import Constants
22-
from pyqldbsamples.connect_to_ledger import create_qldb_session
22+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2323

2424
logger = getLogger(__name__)
2525
basicConfig(level=INFO)
@@ -50,8 +50,8 @@ def create_table(transaction_executor, table_name):
5050
Create registrations, vehicles, owners, and licenses tables in a single transaction.
5151
"""
5252
try:
53-
with create_qldb_session() as session:
54-
session.execute_lambda(lambda x: create_table(x, Constants.DRIVERS_LICENSE_TABLE_NAME) and
53+
with create_qldb_driver() as qldb_driver:
54+
qldb_driver.execute_lambda(lambda x: create_table(x, Constants.DRIVERS_LICENSE_TABLE_NAME) and
5555
create_table(x, Constants.PERSON_TABLE_NAME) and
5656
create_table(x, Constants.VEHICLE_TABLE_NAME) and
5757
create_table(x, Constants.VEHICLE_REGISTRATION_TABLE_NAME),

pyqldbsamples/deregister_drivers_license.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html
1919
from logging import basicConfig, getLogger, INFO
2020

21-
from pyqldbsamples.connect_to_ledger import create_qldb_session
21+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2222
from pyqldbsamples.model.sample_data import SampleData, convert_object_to_ion
2323

2424
logger = getLogger(__name__)
@@ -55,8 +55,8 @@ def deregister_drivers_license(transaction_executor, license_number):
5555
license_number = SampleData.DRIVERS_LICENSE[1]['LicenseNumber']
5656

5757
try:
58-
with create_qldb_session() as session:
59-
session.execute_lambda(lambda executor: deregister_drivers_license(executor, license_number),
58+
with create_qldb_driver() as driver:
59+
driver.execute_lambda(lambda executor: deregister_drivers_license(executor, license_number),
6060
lambda retry_attempt: logger.info('Retrying due to OCC conflict...'))
6161
except Exception:
6262
logger.exception('Error deleting driver license.')

pyqldbsamples/find_vehicles.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from pyqldbsamples.model.sample_data import get_document_ids, print_result, SampleData
2222
from pyqldbsamples.constants import Constants
23-
from pyqldbsamples.connect_to_ledger import create_qldb_session
23+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2424

2525
logger = getLogger(__name__)
2626
basicConfig(level=INFO)
@@ -52,10 +52,10 @@ def find_vehicles_for_owner(transaction_executor, gov_id):
5252
Find all vehicles registered under a person.
5353
"""
5454
try:
55-
with create_qldb_session() as session:
55+
with create_qldb_driver() as driver:
5656
# Find all vehicles registered under a person.
5757
gov_id = SampleData.PERSON[0]['GovId']
58-
session.execute_lambda(lambda executor: find_vehicles_for_owner(executor, gov_id),
58+
driver.execute_lambda(lambda executor: find_vehicles_for_owner(executor, gov_id),
5959
lambda retry_attempt: logger.info('Retrying due to OCC conflict...'))
6060
except Exception:
6161
logger.exception('Error getting vehicles for owner.')

pyqldbsamples/get_block.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from pyqldbsamples.get_digest import get_digest_result
2727
from pyqldbsamples.verifier import to_base_64, verify_document, parse_block, flip_random_bit
2828
from pyqldbsamples.qldb.block_address import block_address_to_dictionary
29-
from pyqldbsamples.connect_to_ledger import create_qldb_session
29+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
3030
from pyqldbsamples.qldb.qldb_string_utils import block_response_to_string, value_holder_to_string
3131

3232
logger = getLogger(__name__)
@@ -147,9 +147,8 @@ def verify_block(ledger_name, block_address):
147147
"""
148148
vin = SampleData.VEHICLE_REGISTRATION[1]['VIN']
149149
try:
150-
with create_qldb_session() as session:
151-
cursor = session.execute_lambda(lambda executor: lookup_registration_for_vin(executor, vin),
152-
lambda retry_indicator: logger.info('Retrying due to OCC conflict...'))
150+
with create_qldb_driver() as driver:
151+
cursor = driver.execute_lambda(lambda executor: lookup_registration_for_vin(executor, vin))
153152
row = next(cursor)
154153
block_address = row.get('blockAddress')
155154
verify_block(Constants.LEDGER_NAME, block_address)

pyqldbsamples/get_revision.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from pyqldbsamples.model.sample_data import SampleData, convert_object_to_ion
2727
from pyqldbsamples.qldb.block_address import block_address_to_dictionary
2828
from pyqldbsamples.verifier import verify_document, flip_random_bit, to_base_64
29-
from pyqldbsamples.connect_to_ledger import create_qldb_session
29+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
3030
from pyqldbsamples.qldb.qldb_string_utils import value_holder_to_string
3131

3232
logger = getLogger(__name__)
@@ -59,12 +59,12 @@ def get_revision(ledger_name, document_id, block_address, digest_tip_address):
5959
return result
6060

6161

62-
def lookup_registration_for_vin(qldb_session, vin):
62+
def lookup_registration_for_vin(driver, vin):
6363
"""
6464
Query revision history for a particular vehicle for verification.
6565
66-
:type qldb_session: :py:class:`pyqldb.session.qldb_session.QldbSession`
67-
:param qldb_session: An instance of the QldbSession class.
66+
:type driver: :py:class:`pyqldb.driver.qldb_driver.QldbDriver`
67+
:param driver: An instance of the QldbDriver class.
6868
6969
:type vin: str
7070
:param vin: VIN to query the revision history of a specific registration with.
@@ -75,16 +75,16 @@ def lookup_registration_for_vin(qldb_session, vin):
7575
logger.info("Querying the 'VehicleRegistration' table for VIN: {}...".format(vin))
7676
query = 'SELECT * FROM _ql_committed_VehicleRegistration WHERE data.VIN = ?'
7777
parameters = [convert_object_to_ion(vin)]
78-
cursor = qldb_session.execute_statement(query, parameters)
78+
cursor = driver.execute_lambda( lambda txn: txn.execute_statement(query, parameters))
7979
return cursor
8080

8181

82-
def verify_registration(qldb_session, ledger_name, vin):
82+
def verify_registration(driver, ledger_name, vin):
8383
"""
8484
Verify each version of the registration for the given VIN.
8585
86-
:type qldb_session: :py:class:`pyqldb.session.qldb_session.QldbSession`
87-
:param qldb_session: An instance of the QldbSession class.
86+
:type driver: :py:class:`pyqldb.driver.qldb_driver.QldbDriver`
87+
:param driver: An instance of the QldbDriver class.
8888
8989
:type ledger_name: str
9090
:param ledger_name: The ledger to get digest from.
@@ -103,7 +103,7 @@ def verify_registration(qldb_session, ledger_name, vin):
103103
value_holder_to_string(digest_tip_address.get('IonText')), to_base_64(digest_bytes)))
104104

105105
logger.info('Querying the registration with VIN = {} to verify each version of the registration...'.format(vin))
106-
cursor = lookup_registration_for_vin(qldb_session, vin)
106+
cursor = lookup_registration_for_vin(driver, vin)
107107
logger.info('Getting a proof for the document.')
108108

109109
for row in cursor:
@@ -142,7 +142,7 @@ def verify_registration(qldb_session, ledger_name, vin):
142142
registration = SampleData.VEHICLE_REGISTRATION[0]
143143
vin = registration['VIN']
144144
try:
145-
with create_qldb_session() as session:
146-
verify_registration(session, Constants.LEDGER_NAME, vin)
145+
with create_qldb_driver() as driver:
146+
verify_registration(driver, Constants.LEDGER_NAME, vin)
147147
except Exception:
148148
logger.exception('Unable to verify revision.')

pyqldbsamples/insert_document.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from pyqldbsamples.constants import Constants
2222
from pyqldbsamples.model.sample_data import convert_object_to_ion, SampleData, get_document_ids_from_dml_results
23-
from pyqldbsamples.connect_to_ledger import create_qldb_session
23+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2424

2525
logger = getLogger(__name__)
2626
basicConfig(level=INFO)
@@ -92,10 +92,10 @@ def update_and_insert_documents(transaction_executor):
9292
Insert documents into a table in a QLDB ledger.
9393
"""
9494
try:
95-
with create_qldb_session() as session:
95+
with create_qldb_driver() as driver:
9696
# An INSERT statement creates the initial revision of a document with a version number of zero.
9797
# QLDB also assigns a unique document identifier in GUID format as part of the metadata.
98-
session.execute_lambda(lambda executor: update_and_insert_documents(executor),
98+
driver.execute_lambda(lambda executor: update_and_insert_documents(executor),
9999
lambda retry_attempt: logger.info('Retrying due to OCC conflict...'))
100100
logger.info('Documents inserted successfully!')
101101
except Exception:

pyqldbsamples/insert_ion_types.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from pyqldbsamples.create_table import create_table
3030
from pyqldbsamples.insert_document import insert_documents
3131
from pyqldbsamples.model.sample_data import convert_object_to_ion
32-
from pyqldbsamples.connect_to_ledger import create_qldb_session
32+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
3333

3434
logger = getLogger(__name__)
3535
basicConfig(level=INFO)
@@ -95,13 +95,13 @@ def delete_table(transaction_executor, table_name):
9595
return len(list(cursor))
9696

9797

98-
def insert_and_verify_ion_types(session):
98+
def insert_and_verify_ion_types(driver):
9999
"""
100100
Insert all the supported Ion types and Python values that are convertible to Ion into a ledger and verify that they
101101
are stored and can be retrieved properly, retaining their original properties.
102102
103-
:type session: :py:class:`pyqldb.session.base_qldb_session.BaseQldbSession`
104-
:param session: A QLDB session object.
103+
:type driver: :py:class:`pyqldb.driver.qldb_driver.QldbDriver`
104+
:param driver: A QLDB Driver object.
105105
"""
106106
python_bytes = str.encode('hello')
107107
python_bool = True
@@ -141,7 +141,7 @@ def insert_and_verify_ion_types(session):
141141
ion_null_symbol = convert_object_to_ion(loads('null.symbol'))
142142
ion_null_timestamp = convert_object_to_ion(loads('null.timestamp'))
143143

144-
session.execute_lambda(lambda transaction_executor: create_table(transaction_executor, TABLE_NAME)
144+
driver.execute_lambda(lambda transaction_executor: create_table(transaction_executor, TABLE_NAME)
145145
and insert_documents(transaction_executor, TABLE_NAME, [{'Name': 'val'}])
146146
and update_record_and_verify_type(transaction_executor, python_bytes, IonPyBytes,
147147
IonType.BLOB)
@@ -223,7 +223,7 @@ def insert_and_verify_ion_types(session):
223223
are stored and can be retrieved properly, retaining their original properties.
224224
"""
225225
try:
226-
with create_qldb_session() as session:
227-
insert_and_verify_ion_types(session)
226+
with create_qldb_driver() as driver:
227+
insert_and_verify_ion_types(driver)
228228
except Exception:
229229
logger.exception('Error updating and validating Ion types.')

pyqldbsamples/list_tables.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html
1919
from logging import basicConfig, getLogger, INFO
2020

21-
from pyqldbsamples.connect_to_ledger import create_qldb_session
21+
from pyqldbsamples.connect_to_ledger import create_qldb_driver
2222

2323
logger = getLogger(__name__)
2424
basicConfig(level=INFO)
@@ -29,12 +29,12 @@ def list_tables():
2929
List all tables.
3030
3131
:rtype: list
32-
:return: List of ledgers.
32+
:return: List of tables.
3333
"""
3434
logger.info("Let's list all the tables...")
35-
with create_qldb_session() as session:
35+
with create_qldb_driver() as driver:
3636
logger.info("Success. List of tables:")
37-
tables = session.list_tables()
37+
tables = driver.list_tables()
3838
for table in tables:
3939
logger.info(table)
4040
return tables

0 commit comments

Comments
 (0)