Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Adds XSchemaDict constructor using named arguments #197

Merged
merged 36 commits into from
Aug 4, 2023

Conversation

spacether
Copy link
Contributor

@spacether spacether commented Aug 1, 2023

When developers want to make an instance of an object payload they can currently input a typeddict as an input argument.
Previously, they could input named arguments to create an instance too.
For SomeSchemaDict type object output classes, this PR adds that functionality back in where one can pass in named arguments to SomeSchemaDict.__new__

  • the contstructor from_dict_ is created in that class for passing in a TypedDict to make an instance
  • full schema validation is run on both of these constructor code paths (__new__ + from_dict_)
  • required arguments must be passed by name, all keyword arguments come after the * positional arg accumulator which is unused

Note

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package 
    ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/python*.
    For Windows users, please run the script in Git BASH.

@spacether spacether merged commit 3e03cf3 into 3_0_0 Aug 4, 2023
@spacether spacether deleted the v3_adds_kwarg_new_to_XSchemaDict branch August 4, 2023 18:44
spacether added a commit that referenced this pull request Aug 16, 2023
* Adds from_dict_ method

* Adds immutabledict back in

* Adds types for required and optional properties

* Uses new io_type template for required and optional properties

* Adds newlines to boolean input types

* Adds newlines to binary and none

* Adds newline for literal values

* Adds newline for optional str

* Adds newlines for number and integer inputs

* Adds remaining io newlines

* Adds input types to anyType input

* Adds map with no props types

* Adds object input types

* Adds tuple types when there is not arrayOutputJsonPathPiece

* Adds array input types

* Adds arg casting when addProps is false

* Adds casting to object model input in new method

* Adds new types for kwargs

* Makes arg_ dict type permissive

* Adds _arg dict type in new

* Replaces _helper_property_value_type with _helper_schema_io_type in object_input_type

* Replaces many _helper_property_value_type usages

* Uses schema_io for optional property definition

* Updates required properties typeddict to use schema_io template

* Adjusts definition of array model type to use schema_io template

* Removes unused templates

* Fixes array model self reference detection

* Fixes mypy errors by making default literals into literals

* Adjusts comment line for empty map output class

* Fixes mypy errors by moving new before properties

* Requires that required arguments are named and not positional

* Adds date/datetime/uuid inputs when those formats are specified

* Removes reference to deleted input schema template

* Adds io. types for binary input

* Samples regen

* Changes node4 image
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant