Skip to main content

A tool to manage parameters in a form of files, process them, upload to param storage, pull and reconstrut as files.

Project description

Parameterframe

The module provides an interface for managing solution parameters. It allows for the structured storage and retrieval of parameter sets from a database.

import sys
import pandas as pd
import os
sys.path.append('../')
from parameterframe import ParameterFrame, MockerDatabaseConnector, SqlAlchemyDatabaseManager

Content

  1. Adding new solution and uploading it
  2. Processing new files and creating parameter set
  3. Adding parameter set to solution and commiting
  4. Uploading parameter sets
  5. Getting latest parameter set id for solution
  6. Changing parameter set status
  7. Pulling select parameter sets
  8. Reconstructing parameter se
  9. Structure of local commit tables

1. Adding new solution and uploading it

# - with database connector for MockerDB
pf = ParameterFrame(
    database_connector = MockerDatabaseConnector(connection_details = {
    'base_url' : 'http://localhost:8001'})
)

when using SqlAlchemyDatabaseManager with database for the first time, it might be useful to create tables with SqlAlchemyDatabaseManager.create_tables and if schema of the database needs to be reset SqlAlchemyDatabaseManager.drop_tables

# - with SqlAlchemy database connector
pf = ParameterFrame(
    database_connector = SqlAlchemyDatabaseManager(connection_details = {
    'base_url' : 'postgresql+psycopg2://postgres:mysecretpassword@localhost:5432/mytestdb'})
)
pf.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets
pf.add_solution(
    # mandatory
    solution_name="new_example_solution",
    # optional description
    solution_description="Description of new example solution.",
    deployment_date="2024-xx-xx",
    deprecation_date=None,
    maintainers="some text about maintainers credentials"
)
Solution id for new_example_solution: b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca





True
pf.commit_solution(
    # either solution id or solution name should be provided
    solution_name="new_example_solution"
)
Commited solution description for b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca





True
pf.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets
0 b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca new_example_solution Description of new example solution. 2024-xx-xx None some text about maintainers credentials 0
pf.push_solution(
    # either solution id or solution name should be provided
    solution_name = "new_example_solution"
)
HTTP Request: POST http://localhost:8001/insert "HTTP/1.1 200 OK"





True

2. Processing new files and creating parameter set

params_path = "../tests/parameterframe/example_configs"
pf = ParameterFrame(
    params_path = params_path,
    database_connector = MockerDatabaseConnector(connection_details = {
    'base_url' : 'http://localhost:8001'})
)
pf = ParameterFrame(
    params_path = params_path,
    database_connector = SqlAlchemyDatabaseManager(connection_details = {
    'base_url' : 'postgresql+psycopg2://postgres:mysecretpassword@localhost:5432/mytestdb'})
)
pf.process_parameters_from_files()
True
pf.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets
pf.make_parameter_set(
    parameter_set_name="test_set",
    parameter_set_description="example parameters for test purposes",
    parameter_names=['param_1','param_2','param_10', 'param_11','param_21']
)
Parameter set id for test_set: a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5

3. Adding parameter set to solution and commiting

pf.add_parameter_set_to_solution(
    solution_id = 'b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
    parameter_set_name="test_set")
b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca is not in solutions saved to memory!
Name pink_happy_car_642 is assigned to b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca temporarily!





True
pf.commit_solution(solution_name="pink_happy_car_642",
                    parameter_set_names=["test_set"])
Commited solution tables for b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca





True
pf.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets
0 b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca None None None None None 1
pf.show_parameter_sets(solution_id = 'b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca')
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_set_id parameter_set_name parameter_set_description deployment_status insertion_datetime commited_parameters
0 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 test_set example parameters for test purposes STAGING 2024-05-15 00:09:10 5
pf.show_parameters(solution_id = 'b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                   parameter_set_id = 'a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_id parameter_name parameter_description file_name file_type commited_attributes
0 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af param_1 param_1.yaml yaml 3
1 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f param_2 param_2.yaml yaml 6
2 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be param_10 param_10.txt txt 9
3 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768 param_11 param_11.dill other 1
4 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 param_21 param_21.ipynb other 2

4. Uploading parameter sets

pf.push_solution(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                 parameter_set_names=["test_set"])
HTTP Request: POST http://localhost:8001/insert "HTTP/1.1 200 OK"





True

5. Getting latest parameter set id for solution

# - with database connector for MockerDB
pf = ParameterFrame(
    database_connector = MockerDatabaseConnector(connection_details = {
    'base_url' : 'http://localhost:8001'})
)
# - with SqlAlchemy database connector
pf = ParameterFrame(
    database_connector = SqlAlchemyDatabaseManager(connection_details = {
    'base_url' : 'postgresql+psycopg2://postgres:mysecretpassword@localhost:5432/mytestdb'})
)
pf.get_parameter_set_id_for_solution(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                                                        deployment_status="STAGING")
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





['a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5']
pf.get_deployment_status(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                         parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





'STAGING'

6. Changing parameter set status

# - with database connector for MockerDB
pf = ParameterFrame(
    database_connector = MockerDatabaseConnector(connection_details = {
    'base_url' : 'http://localhost:8001'})
)
# - with SqlAlchemy database connector
pf = ParameterFrame(
    database_connector = SqlAlchemyDatabaseManager(connection_details = {
    'base_url' : 'postgresql+psycopg2://postgres:mysecretpassword@localhost:5432/mytestdb'})
)
pf.database_connector.modify_parameter_set_status(
    solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
    parameter_set_ids = 'a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5',
    current_deployment_status = "PRODUCTION",
    new_deployment_status = "STAGING"
)
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
No data was found with applied filters!


No deployed parameter_set_ids with PRODUCTION from selected!





False
pf.change_status_from_staging_to_production(
    solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
    parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5'
)
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/delete "HTTP/1.1 200 OK"
b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca + a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 : STAGING -> PRODUCTION
HTTP Request: POST http://localhost:8001/insert "HTTP/1.1 200 OK"
pf.get_deployment_status(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                         parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





'PRODUCTION'
pf.change_status_from_production_to_archived(
    solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
    parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5'
)
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/delete "HTTP/1.1 200 OK"
b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca + a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 : PRODUCTION -> ARCHIVED
HTTP Request: POST http://localhost:8001/insert "HTTP/1.1 200 OK"
pf.get_deployment_status(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                         parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





'ARCHIVED'
pf.change_status_from_archived_production(
    solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
    parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5'
)
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
No data was found with applied filters!
No deployed parameter_set_ids with PRODUCTION from selected!


HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/delete "HTTP/1.1 200 OK"
b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca + a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 : ARCHIVED -> PRODUCTION
HTTP Request: POST http://localhost:8001/insert "HTTP/1.1 200 OK"
pf.get_deployment_status(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                         parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





'PRODUCTION'

7. Pulling select parameter sets

params_path = "../tests/parameterframe/example_configs"
# - with database connector for MockerDB
pf2 = ParameterFrame(
    params_path = params_path,
    database_connector = MockerDatabaseConnector(connection_details = {
    'base_url' : 'http://localhost:8001'})
)
# - with SqlAlchemy database connector
pf2 = ParameterFrame(
    params_path = params_path,
    database_connector = SqlAlchemyDatabaseManager(connection_details = {
    'base_url' : 'postgresql+psycopg2://postgres:mysecretpassword@localhost:5432/mytestdb'})
)
pf2.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets

When pulling information with database handler, one could pull specific parameter sets, solutions and everything.

pf2.pull_solution(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                  # optionally specify parameter_set_id
                 parameter_set_id='a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5')
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
No data was found with applied filters!
No solutions with b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca could be pulled!





True
pf2.pull_solution(solution_id='b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca',
                  # optionally specify parameter_set_id
                 parameter_set_id=None)
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"
HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"


HTTP Request: POST http://localhost:8001/search "HTTP/1.1 200 OK"





True
pf2.pull_solution(
    # optional parameter to skip pull of attributes if data pulled just for show_ methods
    pull_attribute_values = False
)
True
pf2.show_solutions()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers commited_parameter_sets
0 cec89c4cbb8c891d388407ea93d84a5cd4f996af6d5c1b0cc5fe1cb12101acf5 new_example_solution Description of new example solution. 2024-xx-xx None some text about maintainers credentials 6
pf2.show_parameter_sets(solution_id='cec89c4cbb8c891d388407ea93d84a5cd4f996af6d5c1b0cc5fe1cb12101acf5')
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_set_id parameter_set_name parameter_set_description deployment_status insertion_datetime commited_parameters
0 5779bbf896ebb8f09a6ea252b09f8adb1a416e8780cf1424fb9bb93dbec8deb5 green_tiny_car_749 STAGING 2024-05-15 01:36:09 3
1 3940d6dd4c0d817625a31141874c54cf0c8d88b24994f7915deb4096b3c8d0cf blue_tiny_television_381 STAGING 2024-05-15 00:37:50 2
2 2f3ee8e19d91a89298d40984df5e7bdd1f1a48008b2e61c88a7f6f81b4ab23f5 silver_happy_car_441 STAGING 2024-05-16 00:03:25 1
3 82b8c5340454adf83667e59092fedbee28213475fd58ab6b3d95b4fc60f4d45f purple_giant_television_135 STAGING 2024-05-16 00:05:43 1
4 dddc057bc151de9f8fb8caa834c8e13b789cf68cb53299b4c65c23f1e1310acd red_sad_scooter_769 STAGING 2024-05-16 00:08:21 2
5 73ece98c90d4e0bcce8b523a8e8d2bd4290c68f2a783ea279b39fe4507e42de7 blue_fuzzy_refrigerator_297 STAGING 2024-05-15 23:57:17 1
pf2.show_parameters(solution_id='cec89c4cbb8c891d388407ea93d84a5cd4f996af6d5c1b0cc5fe1cb12101acf5',
                    parameter_set_id='5779bbf896ebb8f09a6ea252b09f8adb1a416e8780cf1424fb9bb93dbec8deb5')
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_id parameter_name parameter_description file_name file_type commited_attributes
0 3386ebc962b1c57745ca24320bf873df6eb84a2b9cb733607d72006347bf95b8 Screenshot 2024-05-04 at 02 Screenshot 2024-05-04 at 02.59.31.png other 35
1 4d8ca206d9bd09296b69a95f0c3c62d233282025964c356811510cc074cc2c49 1 1. AF - opis projektu.pdf other 34
2 5afae3951544cd3736685a3b2daa31c00106191a799b96b0c636cd35e9a416ff uploads uploads.zip other 61

8. Reconstructing parameter set

os.listdir("../tests/parameterframe/reconstructed_files")
[]
pf2.reconstruct_parameter_set(
    solution_name = "new_example_solution",
    parameter_set_name = "test_set",
    params_path = "../tests/parameterframe/reconstructed_files"
)

os.listdir("../tests/parameterframe/reconstructed_files")
['param_2.yaml',
 'param_11.dill',
 'param_1.yaml',
 'param_10.txt',
 'param_21.ipynb']

9. Structure of commit tables

solution_description

pd.DataFrame(pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']['solution_description'])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id solution_name solution_description deployment_date deprecation_date maintainers
0 b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca new_example_solution Description of new example solution. 2024-xx-xx None some text about maintainers credentials

solution_parameter_set

param_set_id = 'a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5'

pd.DataFrame(pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']['solution_parameter_set'][param_set_id])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
solution_id parameter_set_id deployment_status insertion_datetime
0 b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 PRODUCTION 2024-05-07 19:51:13

parameter_set

pd.DataFrame(pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']\
    ['parameter_set']\
        [param_set_id])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_set_id parameter_id
0 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af
1 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f
2 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be
3 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768
4 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689

parameter_set_description

pd.DataFrame(pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']\
    ['parameter_set_description']\
        [param_set_id])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_set_id parameter_set_name parameter_set_description
0 a54f04d2ff154294309403206e059aec556cdcfa51120649ce663f3230a970d5 test_set example parameters for test purposes

parameter_description

pd.DataFrame([tab for param_id, tab_list in pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']\
    ['parameter_description']\
        [param_set_id].items()\
            for tab in tab_list])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_id parameter_name parameter_description file_name file_type
0 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af param_1 param_1.yaml yaml
1 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f param_2 param_2.yaml yaml
2 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be param_10 param_10.txt txt
3 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768 param_11 param_11.dill other
4 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 param_21 param_21.ipynb other

parameter_attribute

pd.DataFrame([tab for param_id, tab_list in pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']\
    ['parameter_attribute']\
        [param_set_id].items() \
            for tab in tab_list])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
parameter_id attribute_id previous_attribute_id
0 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af ee25af17445d7622cbf61a5b9424246a1f3104704b68bd31b9b7532471d492e5 None
1 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af 8b5b2be24e60ba407b90967820da8a1385a6d67691a02bc663703160ef655101 None
2 4cea5b09e77da310c5105978f2ceea5c5d8c9c7b65d0e00b45135ea90fc011af 52ea872c99c586530348ba8902dcab831761673d25cf1cb0023576820289ce6b None
3 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f 7d5ee0e0cd00c3703e5f346c6887baf503faaf9fe090774f6866311f4fa34179 None
4 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f ee25af17445d7622cbf61a5b9424246a1f3104704b68bd31b9b7532471d492e5 7d5ee0e0cd00c3703e5f346c6887baf503faaf9fe090774f6866311f4fa34179
5 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f 3367512147bf19ae99c986b356af11dcdc067376aa1b79eb8ba8f61324e8dc18 7d5ee0e0cd00c3703e5f346c6887baf503faaf9fe090774f6866311f4fa34179
6 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f 341769820d8937a5c9f9b980eefca37f3f37fcc6fd01c6f4c930fdb9d5dd5128 7d5ee0e0cd00c3703e5f346c6887baf503faaf9fe090774f6866311f4fa34179
7 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f 2e8b00e571f9d835d3f022a9ff49b9779034ab21bffdcde075d9d729fabeb960 341769820d8937a5c9f9b980eefca37f3f37fcc6fd01c6f4c930fdb9d5dd5128
8 bf11768decb1d0204e2636edd05c354573d473e67f1b048369b2ee99c865bf5f ecd93cf051988b23b3590415f4e7d550de264600d7d2af8704c973b9c98ca6a9 341769820d8937a5c9f9b980eefca37f3f37fcc6fd01c6f4c930fdb9d5dd5128
9 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be fa4e8d81f4dbe6d306aff59bea4693d325a203be5d5b9fde5d5f1e7cce26b861 None
10 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be c26e7e96f0f3647c159b0934f4dc55207ac059abb56005d7a8acd8344ef14798 fa4e8d81f4dbe6d306aff59bea4693d325a203be5d5b9fde5d5f1e7cce26b861
11 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be f7cd339f77c1799f399d8ebcbb27f2d41a448622254d64e9270ae2316211ac1d c26e7e96f0f3647c159b0934f4dc55207ac059abb56005d7a8acd8344ef14798
12 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be 15a33fe62774a1857b404f453ba1195eb4355e10bc9519f2f991dd7ba8db19b7 f7cd339f77c1799f399d8ebcbb27f2d41a448622254d64e9270ae2316211ac1d
13 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be 99761e3d58bc213dc3ab33f2dc8dabe5f97d3aea6b59cd367d40b76937f49aa6 15a33fe62774a1857b404f453ba1195eb4355e10bc9519f2f991dd7ba8db19b7
14 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be 036a9c122c1f4c9304afa23c4d1fce5224c270a206889afa689f3efb36ff368d 99761e3d58bc213dc3ab33f2dc8dabe5f97d3aea6b59cd367d40b76937f49aa6
15 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be e72aa8015688052f4e7fddbf4c74e5bf2bd74239ebf3902a5fdc008ecb03aa46 036a9c122c1f4c9304afa23c4d1fce5224c270a206889afa689f3efb36ff368d
16 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be 0ae8eda3dbeedbc17e27a679c5426dd3af1434f7c37b4ecd3b2fb5c492272b75 e72aa8015688052f4e7fddbf4c74e5bf2bd74239ebf3902a5fdc008ecb03aa46
17 9a4a3ace265c9bf2facc0044ca24260c42805c6e7b2a608dfd2f56a54d9d36be cedcfbb0d95798514b6aaf30118fff7b46f863f1bc8b80bb2ddd2145e5b3f318 0ae8eda3dbeedbc17e27a679c5426dd3af1434f7c37b4ecd3b2fb5c492272b75
18 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768 None
19 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 87d93e1862f0f58199c3fcb7114b92fe59f03581804b1c8419868fb00ff8a469 None
20 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 b4a705d09aa0361f4db453da32abb05a5c4e0249d6180d2b8a58d72d08dbd6a0 87d93e1862f0f58199c3fcb7114b92fe59f03581804b1c8419868fb00ff8a469
21 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 e4e2c33a2ea67f34bf3ac1e9d99edaad501c7dc4ea82f4b60e9d959418d8438d b4a705d09aa0361f4db453da32abb05a5c4e0249d6180d2b8a58d72d08dbd6a0
22 1a4f19ee9e186ee739daecbc778501c5851d3fb5d05c4a3c1200e599855e8689 777abf12375b7f605b21535eb0d6232ce99581c6d2b1179af976cd0708ad27ff e4e2c33a2ea67f34bf3ac1e9d99edaad501c7dc4ea82f4b60e9d959418d8438d

attribute_values

pd.DataFrame([tab for param_id, tab_list in pf2.commited_tables['b5c2e4a9bdcb57cc70bdb7310c7909cc1549550add79e3fbcc8aa1cf323cd8ca']\
    ['attribute_values']\
        [param_set_id].items() \
            for tab in tab_list])
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
attribute_id previous_attribute_id attribute_name attribute_value attribute_value_type
0 ee25af17445d7622cbf61a5b9424246a1f3104704b68bd31b9b7532471d492e5 None name Some name str
1 8b5b2be24e60ba407b90967820da8a1385a6d67691a02bc663703160ef655101 None age 111 int
2 52ea872c99c586530348ba8902dcab831761673d25cf1cb0023576820289ce6b None country Some land str
3 ee25af17445d7622cbf61a5b9424246a1f3104704b68bd31b9b7532471d492e5 None name Some name str
4 7d5ee0e0cd00c3703e5f346c6887baf503faaf9fe090774f6866311f4fa34179 None employee {'name': 'Some name', 'id': 10293, 'contact': {'email': 'some.name... dict
5 3367512147bf19ae99c986b356af11dcdc067376aa1b79eb8ba8f61324e8dc18 None id 10293 int
6 341769820d8937a5c9f9b980eefca37f3f37fcc6fd01c6f4c930fdb9d5dd5128 None contact {'email': 'some.name@example.com', 'phone': '+1234567890'} dict
7 2e8b00e571f9d835d3f022a9ff49b9779034ab21bffdcde075d9d729fabeb960 None email some.name@example.com str
8 ecd93cf051988b23b3590415f4e7d550de264600d7d2af8704c973b9c98ca6a9 None phone +1234567890 str
9 fa4e8d81f4dbe6d306aff59bea4693d325a203be5d5b9fde5d5f1e7cce26b861 None 0 \X/Fc7;/v`6joU5z*n{35zFB<<6BMC,}/_04],>v$Jr2&0M_7qU'IY#6uO\$kEr.)Z... str
10 c26e7e96f0f3647c159b0934f4dc55207ac059abb56005d7a8acd8344ef14798 None 1 A7J+1x5|?r]2zg54nxoa>W*loh8Np~*9+*KxWLuD/Z5g!=DN>}c#]Dt->tiov?|Ms.... str
11 f7cd339f77c1799f399d8ebcbb27f2d41a448622254d64e9270ae2316211ac1d None 2 LUs%<HRbNA_4:yYTh!!x&oFZ201sQ7;~Q_IYr"lGRMd=xx,r}|n8zHIP6%JN)",vQI... str
12 15a33fe62774a1857b404f453ba1195eb4355e10bc9519f2f991dd7ba8db19b7 None 3 b&z(/Z{s@U>@o!}{+(mmygo}u~AHgdu>:jz4fNBm0;Q6'o+f%H/z3^8Hh!w<#z.~21... str
13 99761e3d58bc213dc3ab33f2dc8dabe5f97d3aea6b59cd367d40b76937f49aa6 None 4 .#;5Cu]5~8ZmYBLI4w)|h=)C<(#`KSoM,`7n?dun7]LX>j7/U>Jf||4`AN_u*W!*3)... str
14 036a9c122c1f4c9304afa23c4d1fce5224c270a206889afa689f3efb36ff368d None 5 0S)*}6"i)kUg3=n:}>Ji)!"BTbzsdgps8{cR]`.41QJ<O{wr[}}gGan_O63D0WBr]<... str
15 e72aa8015688052f4e7fddbf4c74e5bf2bd74239ebf3902a5fdc008ecb03aa46 None 6 Xb;IgM/`T:VY*6XQ:nvB3)>@32w8H-cD"g>x`MlWp_TnuyCaz62e??md<8tR$Q=X7<... str
16 0ae8eda3dbeedbc17e27a679c5426dd3af1434f7c37b4ecd3b2fb5c492272b75 None 7 pq.%\nmm;M!^cyS|ApMpnjUS<#Ov?e+n"wX/to.wjifCG.fKK@6gI+Wvax&}j18R8p... str
17 cedcfbb0d95798514b6aaf30118fff7b46f863f1bc8b80bb2ddd2145e5b3f318 None 8 +-;Zt=ex str
18 ace2f31433212fbf9e764069a30a7675ca78f496d31f061d06d0a0420fc52768 None 0 b'\x80\x04\x95h\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x07integer\x... bytes
19 87d93e1862f0f58199c3fcb7114b92fe59f03581804b1c8419868fb00ff8a469 None 0 b'{\n "cells": [\n {\n "cell_type": "markdown",\n "metadata":... bytes
20 b4a705d09aa0361f4db453da32abb05a5c4e0249d6180d2b8a58d72d08dbd6a0 None 1 xt/plain": [\n "4"\n ]\n },\n "execution_count"... bytes
21 e4e2c33a2ea67f34bf3ac1e9d99edaad501c7dc4ea82f4b60e9d959418d8438d None 2 "language": "python",\n "name": "python3"\n },\n "language_... bytes
22 777abf12375b7f605b21535eb0d6232ce99581c6d2b1179af976cd0708ad27ff None 3 r": "python",\n "pygments_lexer": "ipython3",\n "version": "3.... bytes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parameterframe-0.1.4.tar.gz (31.8 kB view hashes)

Uploaded Source

Built Distribution

parameterframe-0.1.4-py3-none-any.whl (24.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page