fromcollectionsimportdefaultdictfromenumimportEnumfromtypingimportAny,Dict# importsimportpytest# used for our unit testsfrompydantic._internalimport_configfrompydantic.errorsimportPydanticInvalidForJsonSchemafrompydantic.json_schemaimportGenerateJsonSchemafrompydantic_coreimportcore_schema,to_jsonable_pythonJsonSchemaValue=Dict[str,Any]frompydantic.json_schemaimportGenerateJsonSchema# Example Enum for TestingclassSomeEnum(Enum):VALUE1='value1'VALUE2='value2'# unit tests@pytest.fixturedefschema_generator():returnGenerateJsonSchema()deftest_single_integer(schema_generator):schema= {'expected': [42]}codeflash_output=schema_generator.literal_schema(schema)deftest_single_string(schema_generator):schema= {'expected': ['hello']}codeflash_output=schema_generator.literal_schema(schema)deftest_single_boolean(schema_generator):schema= {'expected': [True]}codeflash_output=schema_generator.literal_schema(schema)deftest_single_float(schema_generator):schema= {'expected': [3.14]}codeflash_output=schema_generator.literal_schema(schema)deftest_single_none(schema_generator):schema= {'expected': [None]}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_integers(schema_generator):schema= {'expected': [1,2,3]}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_strings(schema_generator):schema= {'expected': ['a','b','c']}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_booleans(schema_generator):schema= {'expected': [True,False]}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_floats(schema_generator):schema= {'expected': [1.1,2.2,3.3]}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_nones(schema_generator):schema= {'expected': [None,None]}codeflash_output=schema_generator.literal_schema(schema)deftest_mixed_integers_strings(schema_generator):schema= {'expected': [1,'a']}codeflash_output=schema_generator.literal_schema(schema)deftest_mixed_integers_floats(schema_generator):schema= {'expected': [1,2.2]}codeflash_output=schema_generator.literal_schema(schema)deftest_mixed_booleans_none(schema_generator):schema= {'expected': [True,None]}codeflash_output=schema_generator.literal_schema(schema)deftest_single_enum_value(schema_generator):schema= {'expected': [SomeEnum.VALUE1]}codeflash_output=schema_generator.literal_schema(schema)deftest_multiple_enum_values(schema_generator):schema= {'expected': [SomeEnum.VALUE1,SomeEnum.VALUE2]}codeflash_output=schema_generator.literal_schema(schema)deftest_list_of_lists(schema_generator):schema= {'expected': [[1,2], [3,4]]}codeflash_output=schema_generator.literal_schema(schema)deftest_list_of_dicts(schema_generator):schema= {'expected': [{'key1':'value1'}, {'key2':'value2'}]}codeflash_output=schema_generator.literal_schema(schema)deftest_empty_expected_list(schema_generator):schema= {'expected': []}codeflash_output=schema_generator.literal_schema(schema)deftest_large_number_of_expected_values(schema_generator):schema= {'expected':list(range(1000))}codeflash_output=schema_generator.literal_schema(schema)deftest_large_single_literal_value(schema_generator):schema= {'expected': ['a'*10000]}codeflash_output=schema_generator.literal_schema(schema)deftest_large_number_of_mixed_values(schema_generator):schema= {'expected': [iifi%2==0elsestr(i)foriinrange(1000)]}codeflash_output=schema_generator.literal_schema(schema)deftest_invalid_schema_structure(schema_generator):schema= {'unexpected_key': [1,2,3]}withpytest.raises(KeyError):schema_generator.literal_schema(schema)fromcollectionsimportdefaultdictfromenumimportEnumfromtypingimportAny,Dict# importsimportpytest# used for our unit testsfrompydantic._internalimport_configfrompydantic.errorsimportPydanticInvalidForJsonSchemafrompydantic.json_schemaimportGenerateJsonSchemafrompydantic_coreimportcore_schema,to_jsonable_pythonJsonSchemaValue=Dict[str,Any]frompydantic.json_schemaimportGenerateJsonSchema# unit testsdeftest_single_integer():schema=core_schema.LiteralSchema(expected=[42])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_single_string():schema=core_schema.LiteralSchema(expected=['hello'])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_single_boolean():schema=core_schema.LiteralSchema(expected=[True])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_multiple_integers():schema=core_schema.LiteralSchema(expected=[1,2,3])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_multiple_strings():schema=core_schema.LiteralSchema(expected=['a','b','c'])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_mixed_types():schema=core_schema.LiteralSchema(expected=[1,'a',True])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_empty_expected_list():schema=core_schema.LiteralSchema(expected=[])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_none_value():schema=core_schema.LiteralSchema(expected=[None])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_list_of_integers():schema=core_schema.LiteralSchema(expected=[[1,2,3]])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_list_of_mixed_types():schema=core_schema.LiteralSchema(expected=[[1,'a',True]])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_large_number_of_integers():schema=core_schema.LiteralSchema(expected=list(range(1000)))generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_large_number_of_strings():schema=core_schema.LiteralSchema(expected=[str(i)foriinrange(1000)])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_integers_and_floats():schema=core_schema.LiteralSchema(expected=[1,2.0,3])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)deftest_strings_and_none():schema=core_schema.LiteralSchema(expected=['a',None,'b'])generator=GenerateJsonSchema()codeflash_output=generator.literal_schema(schema)# codeflash_output is used to check that the output of the original code is the same as that of the optimized code.
📄
GenerateJsonSchema.literal_schema
inpydantic/json_schema.py
✨ Performance Summary:
11%
(0.11x
faster)1.41 millisecond
down to1.27 millisecond
(best of57
runs)📝Explanation and details
To optimize the code for speed, we can make several improvements.
✅Correctness verification
The new optimized code was tested for correctness. The results are listed below:
🌀 Generated Regression Tests Details
Click to view details
Optimized withcodeflash.ai