New Features
- An optional `sim_version` parameter can now be passed into most helper functions which fetch or post data.
- Helper functions for creating configs and studies.
- Helper functions for finding and loading configs and studies.
- Helper function for updating configs.
- Helper function for deleting configs and studies.
Breaking Changes
Automatic conversion of study inputs to objects.
When loading the inputs of a study, the objects are deserialized as nested dictionaries by default.
It is generally more convenient to access these inputs as a set of nested objects, but the conversion can be expensive
for large configs such as tracks. Therefore performing this conversion previously required the user
to call the `dict_to_object` helper function as needed.
Now these inputs are automatically lazily converted to nested objects when first accessed.
Before:
python
car_dict = job_data.inputs.car
print(car_dict['chassis']['hRideFSetup'])
car = canopy.dict_to_object(car_dict)
print(car.chassis.hRideFSetup)
After:
python
car = job_data.inputs.car
print(car.chassis.hRideFSetup)
Other Breaking Changes
- The `dict_to_object` helper function now defaults to performing a deep conversion.
- The `Session` object can now take an `AuthenticationData` argument, and the arguments have been re-ordered
to make this the first argument.
- Arguments and properties called `user_name` have been renamed to `username` for consistency with data returned
from the API.
- Helper functions `load_study_data` and `load_study_job_data` have been renamed to `load_study` and `load_study_job`
for consistency with other methods.