diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ecd35482..9641dde2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # CHANGELOG -## 0.24 (UNRELEASED) +## 0.24 (2024-12-19) - Added validation for directive declarations in `make_executable_schema` to prevent schema creation with undeclared directives. - Replaced hardcoded HTTP statuses with `HTTPStatus` from the `http` stdlib module. diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0026_c32c80d2f035292b8a9f5232f88eb33abf7283cb_20231108_100826.json b/benchmark/results/Linux-CPython-3.10-64bit/0026_c32c80d2f035292b8a9f5232f88eb33abf7283cb_20231108_100826.json deleted file mode 100644 index 4f6207816..000000000 --- a/benchmark/results/Linux-CPython-3.10-64bit/0026_c32c80d2f035292b8a9f5232f88eb33abf7283cb_20231108_100826.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "machine_info": { - "node": "fv-az1128-756", - "processor": "x86_64", - "machine": "x86_64", - "python_compiler": "GCC 11.4.0", - "python_implementation": "CPython", - "python_implementation_version": "3.10.13", - "python_version": "3.10.13", - "python_build": [ - "main", - "Aug 28 2023 08:28:42" - ], - "release": "6.2.0-1015-azure", - "system": "Linux", - "cpu": { - "python_version": "3.10.13.final.0 (64 bit)", - "cpuinfo_version": [ - 9, - 0, - 0 - ], - "cpuinfo_version_string": "9.0.0", - "arch": "X86_64", - "bits": 64, - "count": 2, - "arch_string_raw": "x86_64", - "vendor_id_raw": "GenuineIntel", - "brand_raw": "Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz", - "hz_advertised_friendly": "2.8000 GHz", - "hz_actual_friendly": "2.7934 GHz", - "hz_advertised": [ - 2800000000, - 0 - ], - "hz_actual": [ - 2793438000, - 0 - ], - "stepping": 6, - "model": 106, - "family": 6, - "flags": [ - "3dnowprefetch", - "abm", - "adx", - "aes", - "apic", - "avx", - "avx2", - "avx512bw", - "avx512cd", - "avx512dq", - "avx512f", - "avx512vl", - "bmi1", - "bmi2", - "clflush", - "clflushopt", - "cmov", - "constant_tsc", - "cpuid", - "cx16", - "cx8", - "de", - "erms", - "f16c", - "fma", - "fpu", - "fsgsbase", - "fxsr", - "hle", - "ht", - "hypervisor", - "invpcid", - "invpcid_single", - "lahf_lm", - "lm", - "mca", - "mce", - "md_clear", - "mmx", - "movbe", - "msr", - "mtrr", - "nopl", - "nx", - "osxsave", - "pae", - "pat", - "pcid", - "pclmulqdq", - "pdpe1gb", - "pge", - "pni", - "popcnt", - "pse", - "pse36", - "pti", - "rdrand", - "rdrnd", - "rdseed", - "rdtscp", - "rep_good", - "rtm", - "sep", - "smap", - "smep", - "ss", - "sse", - "sse2", - "sse4_1", - "sse4_2", - "ssse3", - "syscall", - "tsc", - "vme", - "xsave", - "xsavec", - "xsaveopt", - "xsaves", - "xtopology" - ], - "l3_cache_size": 50331648, - "l2_cache_size": "2.5 MiB", - "l1_data_cache_size": 98304, - "l1_instruction_cache_size": 65536, - "l2_cache_line_size": 256, - "l2_cache_associativity": 6 - } - }, - "commit_info": { - "id": "c32c80d2f035292b8a9f5232f88eb33abf7283cb", - "time": "2023-11-08T10:07:54+00:00", - "author_time": "2023-11-08T10:07:54+00:00", - "dirty": false, - "project": "ariadne", - "branch": "master" - }, - "benchmarks": [ - { - "group": null, - "name": "test_query_without_extensions", - "fullname": "benchmark/test_extensions.py::test_query_without_extensions", - "params": null, - "param": null, - "extra_info": {}, - "options": { - "disable_gc": false, - "timer": "perf_counter", - "min_rounds": 5, - "max_time": 1.0, - "min_time": 5e-06, - "warmup": false - }, - "stats": { - "min": 1.2882901890000085, - "max": 1.3302105660000052, - "mean": 1.3036007436000034, - "stddev": 0.017475457860577186, - "rounds": 5, - "median": 1.2968867820000014, - "iqr": 0.026336200500004736, - "q1": 1.290125562, - "q3": 1.3164617625000048, - "iqr_outliers": 0, - "stddev_outliers": 1, - "outliers": "1;0", - "ld15iqr": 1.2882901890000085, - "hd15iqr": 1.3302105660000052, - "ops": 0.7671060368057291, - "total": 6.518003718000017, - "iterations": 1 - } - }, - { - "group": null, - "name": "test_query_with_noop_extension", - "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension", - "params": null, - "param": null, - "extra_info": {}, - "options": { - "disable_gc": false, - "timer": "perf_counter", - "min_rounds": 5, - "max_time": 1.0, - "min_time": 5e-06, - "warmup": false - }, - "stats": { - "min": 1.3071974249999982, - "max": 1.3460944340000083, - "mean": 1.3311841305999963, - "stddev": 0.016128485000217848, - "rounds": 5, - "median": 1.3341848979999895, - "iqr": 0.02529001925000074, - "q1": 1.319682933749995, - "q3": 1.3449729529999956, - "iqr_outliers": 0, - "stddev_outliers": 1, - "outliers": "1;0", - "ld15iqr": 1.3071974249999982, - "hd15iqr": 1.3460944340000083, - "ops": 0.7512108783548045, - "total": 6.655920652999981, - "iterations": 1 - } - }, - { - "group": null, - "name": "test_query_with_open_telemetry_extension", - "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension", - "params": null, - "param": null, - "extra_info": {}, - "options": { - "disable_gc": false, - "timer": "perf_counter", - "min_rounds": 5, - "max_time": 1.0, - "min_time": 5e-06, - "warmup": false - }, - "stats": { - "min": 1.578422761000013, - "max": 1.6442548750000014, - "mean": 1.6172258483999997, - "stddev": 0.025062079295354686, - "rounds": 5, - "median": 1.6218217039999843, - "iqr": 0.0325191765000028, - "q1": 1.6021863295000003, - "q3": 1.634705506000003, - "iqr_outliers": 0, - "stddev_outliers": 2, - "outliers": "2;0", - "ld15iqr": 1.578422761000013, - "hd15iqr": 1.6442548750000014, - "ops": 0.6183428251467467, - "total": 8.086129241999998, - "iterations": 1 - } - }, - { - "group": null, - "name": "test_query_with_open_tracing_extension", - "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension", - "params": null, - "param": null, - "extra_info": {}, - "options": { - "disable_gc": false, - "timer": "perf_counter", - "min_rounds": 5, - "max_time": 1.0, - "min_time": 5e-06, - "warmup": false - }, - "stats": { - "min": 1.434903064999986, - "max": 1.4920721379999975, - "mean": 1.4555634317999988, - "stddev": 0.02338571243825497, - "rounds": 5, - "median": 1.449544378000013, - "iqr": 0.03394436824999758, - "q1": 1.4368863079999983, - "q3": 1.4708306762499959, - "iqr_outliers": 0, - "stddev_outliers": 1, - "outliers": "1;0", - "ld15iqr": 1.434903064999986, - "hd15iqr": 1.4920721379999975, - "ops": 0.6870191831924263, - "total": 7.277817158999994, - "iterations": 1 - } - } - ], - "datetime": "2023-11-08T10:09:09.567373", - "version": "4.0.0" -} \ No newline at end of file diff --git a/benchmark/results/Linux-CPython-3.10-64bit/0056_02ba9ce7b3d490bcf43439d8d863bb08e7ec94e8_20241219_115612.json b/benchmark/results/Linux-CPython-3.10-64bit/0056_02ba9ce7b3d490bcf43439d8d863bb08e7ec94e8_20241219_115612.json new file mode 100644 index 000000000..c42162aa4 --- /dev/null +++ b/benchmark/results/Linux-CPython-3.10-64bit/0056_02ba9ce7b3d490bcf43439d8d863bb08e7ec94e8_20241219_115612.json @@ -0,0 +1,310 @@ +{ + "machine_info": { + "node": "fv-az1370-842", + "processor": "x86_64", + "machine": "x86_64", + "python_compiler": "GCC 13.2.0", + "python_implementation": "CPython", + "python_implementation_version": "3.10.15", + "python_version": "3.10.15", + "python_build": [ + "main", + "Sep 9 2024 03:03:06" + ], + "release": "6.8.0-1017-azure", + "system": "Linux", + "cpu": { + "python_version": "3.10.15.final.0 (64 bit)", + "cpuinfo_version": [ + 9, + 0, + 0 + ], + "cpuinfo_version_string": "9.0.0", + "arch": "X86_64", + "bits": 64, + "count": 4, + "arch_string_raw": "x86_64", + "vendor_id_raw": "AuthenticAMD", + "brand_raw": "AMD EPYC 7763 64-Core Processor", + "hz_advertised_friendly": "3.2482 GHz", + "hz_actual_friendly": "3.2482 GHz", + "hz_advertised": [ + 3248244000, + 0 + ], + "hz_actual": [ + 3248244000, + 0 + ], + "stepping": 1, + "model": 1, + "family": 25, + "flags": [ + "3dnowext", + "3dnowprefetch", + "abm", + "adx", + "aes", + "aperfmperf", + "apic", + "arat", + "avx", + "avx2", + "bmi1", + "bmi2", + "clflush", + "clflushopt", + "clwb", + "clzero", + "cmov", + "cmp_legacy", + "constant_tsc", + "cpuid", + "cr8_legacy", + "cx16", + "cx8", + "de", + "decodeassists", + "erms", + "extd_apicid", + "f16c", + "flushbyasid", + "fma", + "fpu", + "fsgsbase", + "fsrm", + "fxsr", + "fxsr_opt", + "ht", + "hypervisor", + "invpcid", + "lahf_lm", + "lm", + "mca", + "mce", + "misalignsse", + "mmx", + "mmxext", + "movbe", + "msr", + "mtrr", + "nonstop_tsc", + "nopl", + "npt", + "nrip_save", + "nx", + "osvw", + "osxsave", + "pae", + "pat", + "pausefilter", + "pcid", + "pclmulqdq", + "pdpe1gb", + "pfthreshold", + "pge", + "pni", + "popcnt", + "pse", + "pse36", + "rdpid", + "rdpru", + "rdrand", + "rdrnd", + "rdseed", + "rdtscp", + "rep_good", + "sep", + "sha", + "sha_ni", + "smap", + "smep", + "sse", + "sse2", + "sse4_1", + "sse4_2", + "sse4a", + "ssse3", + "svm", + "syscall", + "topoext", + "tsc", + "tsc_reliable", + "tsc_scale", + "umip", + "user_shstk", + "v_vmsave_vmload", + "vaes", + "vmcb_clean", + "vme", + "vmmcall", + "vpclmulqdq", + "xgetbv1", + "xsave", + "xsavec", + "xsaveerptr", + "xsaveopt", + "xsaves" + ], + "l3_cache_size": 524288, + "l2_cache_size": 1048576, + "l1_data_cache_size": 65536, + "l1_instruction_cache_size": 65536, + "l2_cache_line_size": 512, + "l2_cache_associativity": 6 + } + }, + "commit_info": { + "id": "02ba9ce7b3d490bcf43439d8d863bb08e7ec94e8", + "time": "2024-12-19T11:55:48Z", + "author_time": "2024-12-19T11:55:48Z", + "dirty": false, + "project": "ariadne", + "branch": "main" + }, + "benchmarks": [ + { + "group": null, + "name": "test_query_without_extensions", + "fullname": "benchmark/test_extensions.py::test_query_without_extensions", + "params": null, + "param": null, + "extra_info": {}, + "options": { + "disable_gc": false, + "timer": "perf_counter", + "min_rounds": 5, + "max_time": 1.0, + "min_time": 5e-06, + "warmup": false + }, + "stats": { + "min": 1.0163808690000167, + "max": 1.0741746360000093, + "mean": 1.0502169722000076, + "stddev": 0.021428389058129077, + "rounds": 5, + "median": 1.0569829330000005, + "iqr": 0.023145202500010953, + "q1": 1.0385767455000021, + "q3": 1.061721948000013, + "iqr_outliers": 0, + "stddev_outliers": 2, + "outliers": "2;0", + "ld15iqr": 1.0163808690000167, + "hd15iqr": 1.0741746360000093, + "ops": 0.9521841928579649, + "total": 5.251084861000038, + "iterations": 1 + } + }, + { + "group": null, + "name": "test_query_with_noop_extension", + "fullname": "benchmark/test_extensions.py::test_query_with_noop_extension", + "params": null, + "param": null, + "extra_info": {}, + "options": { + "disable_gc": false, + "timer": "perf_counter", + "min_rounds": 5, + "max_time": 1.0, + "min_time": 5e-06, + "warmup": false + }, + "stats": { + "min": 1.0446366359999786, + "max": 1.0803116360000047, + "mean": 1.0648319347999973, + "stddev": 0.014672295208686879, + "rounds": 5, + "median": 1.0635340430000042, + "iqr": 0.023687017250011877, + "q1": 1.0546540349999916, + "q3": 1.0783410522500034, + "iqr_outliers": 0, + "stddev_outliers": 2, + "outliers": "2;0", + "ld15iqr": 1.0446366359999786, + "hd15iqr": 1.0803116360000047, + "ops": 0.9391153357809706, + "total": 5.324159673999986, + "iterations": 1 + } + }, + { + "group": null, + "name": "test_query_with_open_telemetry_extension", + "fullname": "benchmark/test_extensions.py::test_query_with_open_telemetry_extension", + "params": null, + "param": null, + "extra_info": {}, + "options": { + "disable_gc": false, + "timer": "perf_counter", + "min_rounds": 5, + "max_time": 1.0, + "min_time": 5e-06, + "warmup": false + }, + "stats": { + "min": 1.2464160720000166, + "max": 1.2809374249999905, + "mean": 1.2661980676000042, + "stddev": 0.012681387360111747, + "rounds": 5, + "median": 1.2681252330000063, + "iqr": 0.014051887249962647, + "q1": 1.2597100965000223, + "q3": 1.273761983749985, + "iqr_outliers": 0, + "stddev_outliers": 2, + "outliers": "2;0", + "ld15iqr": 1.2464160720000166, + "hd15iqr": 1.2809374249999905, + "ops": 0.7897658554284755, + "total": 6.330990338000021, + "iterations": 1 + } + }, + { + "group": null, + "name": "test_query_with_open_tracing_extension", + "fullname": "benchmark/test_extensions.py::test_query_with_open_tracing_extension", + "params": null, + "param": null, + "extra_info": {}, + "options": { + "disable_gc": false, + "timer": "perf_counter", + "min_rounds": 5, + "max_time": 1.0, + "min_time": 5e-06, + "warmup": false + }, + "stats": { + "min": 1.1416928549999739, + "max": 1.1909853430000226, + "mean": 1.1738949653999895, + "stddev": 0.019017345375746602, + "rounds": 5, + "median": 1.1794351000000063, + "iqr": 0.019121278750034776, + "q1": 1.1660347087499616, + "q3": 1.1851559874999964, + "iqr_outliers": 0, + "stddev_outliers": 1, + "outliers": "1;0", + "ld15iqr": 1.1416928549999739, + "hd15iqr": 1.1909853430000226, + "ops": 0.8518649704398918, + "total": 5.869474826999948, + "iterations": 1 + } + } + ], + "datetime": "2024-12-19T11:56:46.875650+00:00", + "version": "5.1.0" +} \ No newline at end of file diff --git a/benchmark/results/Linux-CPython-3.12-64bit/0001_5d4c2f0a2c60019e6eadcfe31246d8d92ac3fe6d_20231108_101055.json b/benchmark/results/Linux-CPython-3.11-64bit/0058_fd750751c93646d70a697b2b82f95647225e2e74_20241219_115711.json similarity index 56% rename from benchmark/results/Linux-CPython-3.12-64bit/0001_5d4c2f0a2c60019e6eadcfe31246d8d92ac3fe6d_20231108_101055.json rename to benchmark/results/Linux-CPython-3.11-64bit/0058_fd750751c93646d70a697b2b82f95647225e2e74_20241219_115711.json index 9dbcefbe1..d64a4eeef 100644 --- a/benchmark/results/Linux-CPython-3.12-64bit/0001_5d4c2f0a2c60019e6eadcfe31246d8d92ac3fe6d_20231108_101055.json +++ b/benchmark/results/Linux-CPython-3.11-64bit/0058_fd750751c93646d70a697b2b82f95647225e2e74_20241219_115711.json @@ -1,20 +1,20 @@ { "machine_info": { - "node": "fv-az1233-107", + "node": "fv-az1939-8", "processor": "x86_64", "machine": "x86_64", - "python_compiler": "GCC 11.4.0", + "python_compiler": "GCC 13.2.0", "python_implementation": "CPython", - "python_implementation_version": "3.12.0", - "python_version": "3.12.0", + "python_implementation_version": "3.11.11", + "python_version": "3.11.11", "python_build": [ "main", - "Oct 2 2023 15:16:58" + "Dec 4 2024 12:58:35" ], - "release": "6.2.0-1015-azure", + "release": "6.8.0-1017-azure", "system": "Linux", "cpu": { - "python_version": "3.12.0.final.0 (64 bit)", + "python_version": "3.11.11.final.0 (64 bit)", "cpuinfo_version": [ 9, 0, @@ -23,111 +23,145 @@ "cpuinfo_version_string": "9.0.0", "arch": "X86_64", "bits": 64, - "count": 2, + "count": 4, "arch_string_raw": "x86_64", - "vendor_id_raw": "GenuineIntel", - "brand_raw": "Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz", - "hz_advertised_friendly": "2.3000 GHz", - "hz_actual_friendly": "2.2947 GHz", + "vendor_id_raw": "AuthenticAMD", + "brand_raw": "AMD EPYC 7763 64-Core Processor", + "hz_advertised_friendly": "2.4454 GHz", + "hz_actual_friendly": "2.4454 GHz", "hz_advertised": [ - 2300000000, + 2445430000, 0 ], "hz_actual": [ - 2294686000, + 2445430000, 0 ], "stepping": 1, - "model": 79, - "family": 6, + "model": 1, + "family": 25, "flags": [ + "3dnowext", "3dnowprefetch", "abm", "adx", "aes", + "aperfmperf", "apic", + "arat", "avx", "avx2", "bmi1", "bmi2", "clflush", + "clflushopt", + "clwb", + "clzero", "cmov", + "cmp_legacy", "constant_tsc", "cpuid", + "cr8_legacy", "cx16", "cx8", "de", + "decodeassists", "erms", + "extd_apicid", "f16c", + "flushbyasid", "fma", "fpu", "fsgsbase", + "fsrm", "fxsr", - "hle", + "fxsr_opt", "ht", "hypervisor", "invpcid", - "invpcid_single", "lahf_lm", "lm", "mca", "mce", - "md_clear", + "misalignsse", "mmx", + "mmxext", "movbe", "msr", "mtrr", + "nonstop_tsc", "nopl", + "npt", + "nrip_save", "nx", + "osvw", "osxsave", "pae", "pat", + "pausefilter", "pcid", "pclmulqdq", "pdpe1gb", + "pfthreshold", "pge", "pni", "popcnt", "pse", "pse36", - "pti", + "rdpid", + "rdpru", "rdrand", "rdrnd", "rdseed", "rdtscp", "rep_good", - "rtm", "sep", + "sha", + "sha_ni", "smap", "smep", - "ss", "sse", "sse2", "sse4_1", "sse4_2", + "sse4a", "ssse3", + "svm", "syscall", + "topoext", "tsc", + "tsc_reliable", + "tsc_scale", + "umip", + "user_shstk", + "v_vmsave_vmload", + "vaes", + "vmcb_clean", "vme", + "vmmcall", + "vpclmulqdq", + "xgetbv1", "xsave", + "xsavec", + "xsaveerptr", "xsaveopt", - "xtopology" + "xsaves" ], - "l3_cache_size": 52428800, - "l2_cache_size": 524288, + "l3_cache_size": 524288, + "l2_cache_size": 1048576, "l1_data_cache_size": 65536, "l1_instruction_cache_size": 65536, - "l2_cache_line_size": 256, + "l2_cache_line_size": 512, "l2_cache_associativity": 6 } }, "commit_info": { - "id": "5d4c2f0a2c60019e6eadcfe31246d8d92ac3fe6d", - "time": "2023-11-08T10:10:06+00:00", - "author_time": "2023-11-08T10:10:06+00:00", + "id": "fd750751c93646d70a697b2b82f95647225e2e74", + "time": "2024-12-19T11:56:46Z", + "author_time": "2024-12-19T11:56:46Z", "dirty": false, "project": "ariadne", - "branch": "master" + "branch": "main" }, "benchmarks": [ { @@ -146,22 +180,22 @@ "warmup": false }, "stats": { - "min": 1.6507614380000177, - "max": 1.839874038000005, - "mean": 1.718918738600007, - "stddev": 0.08362102915796683, + "min": 0.8182606990000068, + "max": 0.8975676690000114, + "mean": 0.866062129200003, + "stddev": 0.03393749675634608, "rounds": 5, - "median": 1.6742128899999784, - "iqr": 0.13385654424999416, - "q1": 1.6555556600000187, - "q3": 1.789412204250013, + "median": 0.8734708040000214, + "iqr": 0.05710195699999332, + "q1": 0.8388068702499965, + "q3": 0.8959088272499898, "iqr_outliers": 0, "stddev_outliers": 1, "outliers": "1;0", - "ld15iqr": 1.6507614380000177, - "hd15iqr": 1.839874038000005, - "ops": 0.5817610673175053, - "total": 8.594593693000036, + "ld15iqr": 0.8182606990000068, + "hd15iqr": 0.8975676690000114, + "ops": 1.154651573234957, + "total": 4.330310646000015, "iterations": 1 } }, @@ -181,22 +215,22 @@ "warmup": false }, "stats": { - "min": 1.760187492, - "max": 1.9015684459999989, - "mean": 1.802310720999992, - "stddev": 0.05924794491885908, + "min": 0.8524973849999924, + "max": 0.8989594450000027, + "mean": 0.8717777355999999, + "stddev": 0.017096380836094445, "rounds": 5, - "median": 1.7764787159999855, - "iqr": 0.07295903674997817, - "q1": 1.7612345805000018, - "q3": 1.83419361724998, + "median": 0.8697631830000034, + "iqr": 0.018083110750012565, + "q1": 0.8615162977499935, + "q3": 0.8795994085000061, "iqr_outliers": 0, - "stddev_outliers": 1, - "outliers": "1;0", - "ld15iqr": 1.760187492, - "hd15iqr": 1.9015684459999989, - "ops": 0.554843284428315, - "total": 9.01155360499996, + "stddev_outliers": 2, + "outliers": "2;0", + "ld15iqr": 0.8524973849999924, + "hd15iqr": 0.8989594450000027, + "ops": 1.1470813708172432, + "total": 4.358888678, "iterations": 1 } }, @@ -216,22 +250,22 @@ "warmup": false }, "stats": { - "min": 2.1600000239999986, - "max": 2.306363379000004, - "mean": 2.218136551600003, - "stddev": 0.05709066179283607, + "min": 1.0213353830000074, + "max": 1.1135248059999867, + "mean": 1.0642878549999977, + "stddev": 0.04312445021327516, "rounds": 5, - "median": 2.217162696999992, - "iqr": 0.07696165574998304, - "q1": 2.172498344250016, - "q3": 2.249459999999999, + "median": 1.0587931600000218, + "iqr": 0.0824744052499895, + "q1": 1.0235400432499944, + "q3": 1.1060144484999839, "iqr_outliers": 0, - "stddev_outliers": 2, - "outliers": "2;0", - "ld15iqr": 2.1600000239999986, - "hd15iqr": 2.306363379000004, - "ops": 0.45082887222550505, - "total": 11.090682758000014, + "stddev_outliers": 1, + "outliers": "1;0", + "ld15iqr": 1.0213353830000074, + "hd15iqr": 1.1135248059999867, + "ops": 0.9395954255251763, + "total": 5.321439274999989, "iterations": 1 } }, @@ -251,26 +285,26 @@ "warmup": false }, "stats": { - "min": 2.003239757000017, - "max": 2.0777143059999617, - "mean": 2.0464330671999846, - "stddev": 0.02932704313200797, + "min": 0.9497453169999801, + "max": 0.9687991639999893, + "mean": 0.9596250665999889, + "stddev": 0.007914147092327021, "rounds": 5, - "median": 2.0445429379999496, - "iqr": 0.04227161899997611, - "q1": 2.0289840740000074, - "q3": 2.0712556929999835, + "median": 0.9630774999999971, + "iqr": 0.012490258750013083, + "q1": 0.9522616877499814, + "q3": 0.9647519464999945, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 2.003239757000017, - "hd15iqr": 2.0777143059999617, - "ops": 0.488655121942611, - "total": 10.232165335999923, + "ld15iqr": 0.9497453169999801, + "hd15iqr": 0.9687991639999893, + "ops": 1.0420736543940665, + "total": 4.798125332999945, "iterations": 1 } } ], - "datetime": "2023-11-08T10:11:54.188776", - "version": "4.0.0" + "datetime": "2024-12-19T11:57:40.366399+00:00", + "version": "5.1.0" } \ No newline at end of file diff --git a/benchmark/results/Linux-CPython-3.11-64bit/0028_5173b67ef3cb85a63e866052363d3f71f6d74920_20231215_111013.json b/benchmark/results/Linux-CPython-3.12-64bit/0031_f5d59e5219376f578e8dc4b8bcb59f3348f66354_20241219_115804.json similarity index 70% rename from benchmark/results/Linux-CPython-3.11-64bit/0028_5173b67ef3cb85a63e866052363d3f71f6d74920_20231215_111013.json rename to benchmark/results/Linux-CPython-3.12-64bit/0031_f5d59e5219376f578e8dc4b8bcb59f3348f66354_20241219_115804.json index d4d0ac1ca..ac13f2c6f 100644 --- a/benchmark/results/Linux-CPython-3.11-64bit/0028_5173b67ef3cb85a63e866052363d3f71f6d74920_20231215_111013.json +++ b/benchmark/results/Linux-CPython-3.12-64bit/0031_f5d59e5219376f578e8dc4b8bcb59f3348f66354_20241219_115804.json @@ -1,20 +1,20 @@ { "machine_info": { - "node": "fv-az1198-775", + "node": "fv-az787-396", "processor": "x86_64", "machine": "x86_64", - "python_compiler": "GCC 11.4.0", + "python_compiler": "GCC 13.2.0", "python_implementation": "CPython", - "python_implementation_version": "3.11.7", - "python_version": "3.11.7", + "python_implementation_version": "3.12.8", + "python_version": "3.12.8", "python_build": [ "main", - "Dec 5 2023 08:47:01" + "Dec 4 2024 06:20:31" ], - "release": "6.2.0-1018-azure", + "release": "6.8.0-1017-azure", "system": "Linux", "cpu": { - "python_version": "3.11.7.final.0 (64 bit)", + "python_version": "3.12.8.final.0 (64 bit)", "cpuinfo_version": [ 9, 0, @@ -30,11 +30,11 @@ "hz_advertised_friendly": "2.4454 GHz", "hz_actual_friendly": "2.4454 GHz", "hz_advertised": [ - 2445425000, + 2445426000, 0 ], "hz_actual": [ - 2445425000, + 2445426000, 0 ], "stepping": 1, @@ -79,7 +79,6 @@ "ht", "hypervisor", "invpcid", - "invpcid_single", "lahf_lm", "lm", "mca", @@ -134,6 +133,7 @@ "tsc_reliable", "tsc_scale", "umip", + "user_shstk", "v_vmsave_vmload", "vaes", "vmcb_clean", @@ -156,12 +156,12 @@ } }, "commit_info": { - "id": "5173b67ef3cb85a63e866052363d3f71f6d74920", - "time": "2023-12-15T11:09:48+00:00", - "author_time": "2023-12-15T11:09:48+00:00", + "id": "f5d59e5219376f578e8dc4b8bcb59f3348f66354", + "time": "2024-12-19T11:57:40Z", + "author_time": "2024-12-19T11:57:40Z", "dirty": false, "project": "ariadne", - "branch": "master" + "branch": "main" }, "benchmarks": [ { @@ -180,22 +180,22 @@ "warmup": false }, "stats": { - "min": 0.8066875280000119, - "max": 0.8594416889999934, - "mean": 0.8319413834000017, - "stddev": 0.021118749390660687, + "min": 1.0060011099999997, + "max": 1.1151938339999958, + "mean": 1.0605485329999909, + "stddev": 0.04258291065531456, "rounds": 5, - "median": 0.8371738490000098, - "iqr": 0.03259127349999957, - "q1": 0.8131219594999983, - "q3": 0.8457132329999979, + "median": 1.0492415329999858, + "iqr": 0.06249254749999267, + "q1": 1.0335179147499929, + "q3": 1.0960104622499856, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 0.8066875280000119, - "hd15iqr": 0.8594416889999934, - "ops": 1.2020077615482616, - "total": 4.159706917000008, + "ld15iqr": 1.0060011099999997, + "hd15iqr": 1.1151938339999958, + "ops": 0.9429082864989533, + "total": 5.302742664999954, "iterations": 1 } }, @@ -215,22 +215,22 @@ "warmup": false }, "stats": { - "min": 0.8312937879999964, - "max": 0.8642589149999935, - "mean": 0.8479997863999955, - "stddev": 0.011922869157281777, + "min": 1.0364027790000137, + "max": 1.1013132809999888, + "mean": 1.0691359578000004, + "stddev": 0.02415853379177558, "rounds": 5, - "median": 0.8477897719999987, - "iqr": 0.013534999999993858, - "q1": 0.8414227592499977, - "q3": 0.8549577592499915, + "median": 1.0686471870000105, + "iqr": 0.03220503300000388, + "q1": 1.0533556942499942, + "q3": 1.085560727249998, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 0.8312937879999964, - "hd15iqr": 0.8642589149999935, - "ops": 1.1792455800552608, - "total": 4.239998931999978, + "ld15iqr": 1.0364027790000137, + "hd15iqr": 1.1013132809999888, + "ops": 0.9353347370878219, + "total": 5.345679789000002, "iterations": 1 } }, @@ -250,22 +250,22 @@ "warmup": false }, "stats": { - "min": 0.9827900589999956, - "max": 1.0166048780000096, - "mean": 1.0012655894000004, - "stddev": 0.01254756370342127, + "min": 1.2742015729999991, + "max": 1.373487283000003, + "mean": 1.3163520047999953, + "stddev": 0.04300134866537878, "rounds": 5, - "median": 0.9999828779999973, - "iqr": 0.015304411750012292, - "q1": 0.9948784607499945, - "q3": 1.0101828725000068, + "median": 1.2994639780000057, + "iqr": 0.07305929750000217, + "q1": 1.2824091544999874, + "q3": 1.3554684519999896, "iqr_outliers": 0, - "stddev_outliers": 2, - "outliers": "2;0", - "ld15iqr": 0.9827900589999956, - "hd15iqr": 1.0166048780000096, - "ops": 0.9987360102919757, - "total": 5.006327947000003, + "stddev_outliers": 1, + "outliers": "1;0", + "ld15iqr": 1.2742015729999991, + "hd15iqr": 1.373487283000003, + "ops": 0.7596752208782777, + "total": 6.581760023999976, "iterations": 1 } }, @@ -285,26 +285,26 @@ "warmup": false }, "stats": { - "min": 0.9084771990000036, - "max": 0.9274038220000023, - "mean": 0.9162154338000021, - "stddev": 0.007469173447637426, + "min": 1.1311822970000094, + "max": 1.161590579999995, + "mean": 1.1473142252000001, + "stddev": 0.01297079874194671, "rounds": 5, - "median": 0.9156120509999965, - "iqr": 0.010886937999998736, - "q1": 0.9101356950000046, - "q3": 0.9210226330000033, + "median": 1.144204335999973, + "iqr": 0.022103035000043292, + "q1": 1.1378928094999878, + "q3": 1.1599958445000311, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 0.9084771990000036, - "hd15iqr": 0.9274038220000023, - "ops": 1.091446359785167, - "total": 4.581077169000011, + "ld15iqr": 1.1311822970000094, + "hd15iqr": 1.161590579999995, + "ops": 0.8716008030194864, + "total": 5.736571126000001, "iterations": 1 } } ], - "datetime": "2023-12-15T11:10:41.466830", - "version": "4.0.0" + "datetime": "2024-12-19T11:58:39.138947+00:00", + "version": "5.1.0" } \ No newline at end of file diff --git a/benchmark/results/Linux-CPython-3.8-64bit/0026_010f551cb651e7aab4891ad53e41bb79855ab26c_20231108_100617.json b/benchmark/results/Linux-CPython-3.8-64bit/0056_268db084b3b2cc20eb2d89dab9bf1276e6425cff_20241219_115412.json similarity index 72% rename from benchmark/results/Linux-CPython-3.8-64bit/0026_010f551cb651e7aab4891ad53e41bb79855ab26c_20231108_100617.json rename to benchmark/results/Linux-CPython-3.8-64bit/0056_268db084b3b2cc20eb2d89dab9bf1276e6425cff_20241219_115412.json index 3d6e80743..702443d1c 100644 --- a/benchmark/results/Linux-CPython-3.8-64bit/0026_010f551cb651e7aab4891ad53e41bb79855ab26c_20231108_100617.json +++ b/benchmark/results/Linux-CPython-3.8-64bit/0056_268db084b3b2cc20eb2d89dab9bf1276e6425cff_20241219_115412.json @@ -1,17 +1,17 @@ { "machine_info": { - "node": "fv-az774-18", + "node": "fv-az1341-721", "processor": "x86_64", "machine": "x86_64", - "python_compiler": "GCC 11.4.0", + "python_compiler": "GCC 13.2.0", "python_implementation": "CPython", "python_implementation_version": "3.8.18", "python_version": "3.8.18", "python_build": [ "default", - "Aug 28 2023 08:27:22" + "Dec 12 2024 19:15:30" ], - "release": "6.2.0-1015-azure", + "release": "6.8.0-1017-azure", "system": "Linux", "cpu": { "python_version": "3.8.18.final.0 (64 bit)", @@ -27,14 +27,14 @@ "arch_string_raw": "x86_64", "vendor_id_raw": "AuthenticAMD", "brand_raw": "AMD EPYC 7763 64-Core Processor", - "hz_advertised_friendly": "3.2430 GHz", - "hz_actual_friendly": "3.2430 GHz", + "hz_advertised_friendly": "2.6900 GHz", + "hz_actual_friendly": "2.6900 GHz", "hz_advertised": [ - 3243036000, + 2690043000, 0 ], "hz_actual": [ - 3243036000, + 2690043000, 0 ], "stepping": 1, @@ -79,7 +79,6 @@ "ht", "hypervisor", "invpcid", - "invpcid_single", "lahf_lm", "lm", "mca", @@ -134,6 +133,7 @@ "tsc_reliable", "tsc_scale", "umip", + "user_shstk", "v_vmsave_vmload", "vaes", "vmcb_clean", @@ -156,12 +156,12 @@ } }, "commit_info": { - "id": "010f551cb651e7aab4891ad53e41bb79855ab26c", - "time": "2023-11-08T11:05:23+01:00", - "author_time": "2023-11-08T11:05:23+01:00", + "id": "268db084b3b2cc20eb2d89dab9bf1276e6425cff", + "time": "2024-12-19T12:53:20+01:00", + "author_time": "2024-12-19T12:53:20+01:00", "dirty": false, "project": "ariadne", - "branch": "master" + "branch": "main" }, "benchmarks": [ { @@ -180,22 +180,22 @@ "warmup": false }, "stats": { - "min": 1.0575886870000062, - "max": 1.134218912999998, - "mean": 1.0890794254000042, - "stddev": 0.029892418779332, + "min": 1.027593273000008, + "max": 1.0819144629999755, + "mean": 1.0479702919999965, + "stddev": 0.020672744435677525, "rounds": 5, - "median": 1.0761265880000082, - "iqr": 0.039750997250003195, - "q1": 1.0706490535000022, - "q3": 1.1104000507500054, + "median": 1.046370464000006, + "iqr": 0.022317197499965857, + "q1": 1.0340198407500125, + "q3": 1.0563370382499784, "iqr_outliers": 0, - "stddev_outliers": 2, - "outliers": "2;0", - "ld15iqr": 1.0575886870000062, - "hd15iqr": 1.134218912999998, - "ops": 0.9182066768295741, - "total": 5.445397127000021, + "stddev_outliers": 1, + "outliers": "1;0", + "ld15iqr": 1.027593273000008, + "hd15iqr": 1.0819144629999755, + "ops": 0.9542255230265662, + "total": 5.239851459999983, "iterations": 1 } }, @@ -215,22 +215,22 @@ "warmup": false }, "stats": { - "min": 1.069632263999992, - "max": 1.1463215999999932, - "mean": 1.109223368399998, - "stddev": 0.02816383774042133, + "min": 1.0477517449999993, + "max": 1.0793213230000163, + "mean": 1.0656737118000081, + "stddev": 0.012713994416343823, "rounds": 5, - "median": 1.1067660570000015, - "iqr": 0.03457135725000171, - "q1": 1.0934823997499983, - "q3": 1.128053757, + "median": 1.0692263109999942, + "iqr": 0.01980993950000709, + "q1": 1.0555051062500098, + "q3": 1.075315045750017, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 1.069632263999992, - "hd15iqr": 1.1463215999999932, - "ops": 0.9015316738615529, - "total": 5.546116841999989, + "ld15iqr": 1.0477517449999993, + "hd15iqr": 1.0793213230000163, + "ops": 0.9383735274007277, + "total": 5.32836855900004, "iterations": 1 } }, @@ -250,22 +250,22 @@ "warmup": false }, "stats": { - "min": 1.3311527989999945, - "max": 1.3950858780000033, - "mean": 1.352135668599999, - "stddev": 0.027987926145120325, + "min": 1.3201864419999936, + "max": 1.4121703350000132, + "mean": 1.3558215474000064, + "stddev": 0.034054659751210775, "rounds": 5, - "median": 1.3359036009999983, - "iqr": 0.04126990750000559, - "q1": 1.3320959052499965, - "q3": 1.3733658127500021, + "median": 1.348964646000013, + "iqr": 0.030556517749992906, + "q1": 1.337936206000009, + "q3": 1.368492723750002, "iqr_outliers": 0, - "stddev_outliers": 1, - "outliers": "1;0", - "ld15iqr": 1.3311527989999945, - "hd15iqr": 1.3950858780000033, - "ops": 0.7395707570050273, - "total": 6.760678342999995, + "stddev_outliers": 2, + "outliers": "2;0", + "ld15iqr": 1.3201864419999936, + "hd15iqr": 1.4121703350000132, + "ops": 0.7375601913966124, + "total": 6.779107737000032, "iterations": 1 } }, @@ -285,26 +285,26 @@ "warmup": false }, "stats": { - "min": 1.1783890069999927, - "max": 1.2530472260000067, - "mean": 1.2072767378000009, - "stddev": 0.03194152208005545, + "min": 1.157723594999993, + "max": 1.1993119950000164, + "mean": 1.1741994114000023, + "stddev": 0.01812440906127441, "rounds": 5, - "median": 1.1986517020000065, - "iqr": 0.05292106275000563, - "q1": 1.1798299054999966, - "q3": 1.2327509682500022, + "median": 1.1653077850000102, + "iqr": 0.029746196999987262, + "q1": 1.1605014810000043, + "q3": 1.1902476779999915, "iqr_outliers": 0, "stddev_outliers": 1, "outliers": "1;0", - "ld15iqr": 1.1783890069999927, - "hd15iqr": 1.2530472260000067, - "ops": 0.8283105013870162, - "total": 6.036383689000004, + "ld15iqr": 1.157723594999993, + "hd15iqr": 1.1993119950000164, + "ops": 0.8516440991975088, + "total": 5.870997057000011, "iterations": 1 } } ], - "datetime": "2023-11-08T10:06:53.840469", + "datetime": "2024-12-19T11:54:47.981672", "version": "4.0.0" } \ No newline at end of file diff --git a/benchmark/results/Linux-CPython-3.9-64bit/0028_718209b671163fae113dc06d6cf9c55ce28405ef_20231215_110804.json b/benchmark/results/Linux-CPython-3.9-64bit/0058_d0eaf6388a975c32205c2973c157dbce6ee209d4_20241219_115512.json similarity index 71% rename from benchmark/results/Linux-CPython-3.9-64bit/0028_718209b671163fae113dc06d6cf9c55ce28405ef_20231215_110804.json rename to benchmark/results/Linux-CPython-3.9-64bit/0058_d0eaf6388a975c32205c2973c157dbce6ee209d4_20241219_115512.json index b9b1dfa09..a67ed3efa 100644 --- a/benchmark/results/Linux-CPython-3.9-64bit/0028_718209b671163fae113dc06d6cf9c55ce28405ef_20231215_110804.json +++ b/benchmark/results/Linux-CPython-3.9-64bit/0058_d0eaf6388a975c32205c2973c157dbce6ee209d4_20241219_115512.json @@ -1,20 +1,20 @@ { "machine_info": { - "node": "fv-az984-104", + "node": "fv-az1335-373", "processor": "x86_64", "machine": "x86_64", - "python_compiler": "GCC 11.4.0", + "python_compiler": "GCC 13.2.0", "python_implementation": "CPython", - "python_implementation_version": "3.9.18", - "python_version": "3.9.18", + "python_implementation_version": "3.9.20", + "python_version": "3.9.20", "python_build": [ "main", - "Aug 28 2023 08:38:32" + "Sep 9 2024 03:07:25" ], - "release": "6.2.0-1018-azure", + "release": "6.8.0-1017-azure", "system": "Linux", "cpu": { - "python_version": "3.9.18.final.0 (64 bit)", + "python_version": "3.9.20.final.0 (64 bit)", "cpuinfo_version": [ 9, 0, @@ -27,14 +27,14 @@ "arch_string_raw": "x86_64", "vendor_id_raw": "AuthenticAMD", "brand_raw": "AMD EPYC 7763 64-Core Processor", - "hz_advertised_friendly": "2.5957 GHz", - "hz_actual_friendly": "2.5957 GHz", + "hz_advertised_friendly": "3.2134 GHz", + "hz_actual_friendly": "3.2134 GHz", "hz_advertised": [ - 2595660000, + 3213367000, 0 ], "hz_actual": [ - 2595660000, + 3213367000, 0 ], "stepping": 1, @@ -79,7 +79,6 @@ "ht", "hypervisor", "invpcid", - "invpcid_single", "lahf_lm", "lm", "mca", @@ -134,6 +133,7 @@ "tsc_reliable", "tsc_scale", "umip", + "user_shstk", "v_vmsave_vmload", "vaes", "vmcb_clean", @@ -156,12 +156,12 @@ } }, "commit_info": { - "id": "718209b671163fae113dc06d6cf9c55ce28405ef", - "time": "2023-12-15T11:07:37+00:00", - "author_time": "2023-12-15T11:07:37+00:00", + "id": "d0eaf6388a975c32205c2973c157dbce6ee209d4", + "time": "2024-12-19T11:54:48Z", + "author_time": "2024-12-19T11:54:48Z", "dirty": false, "project": "ariadne", - "branch": "master" + "branch": "main" }, "benchmarks": [ { @@ -180,22 +180,22 @@ "warmup": false }, "stats": { - "min": 0.9955466030000082, - "max": 1.0455056600000034, - "mean": 1.023828236, - "stddev": 0.02105248293076951, + "min": 1.0025317989999962, + "max": 1.0921611400000018, + "mean": 1.050524016600002, + "stddev": 0.03762748119511037, "rounds": 5, - "median": 1.0324436099999872, - "iqr": 0.03440259300001003, - "q1": 1.0050472264999968, - "q3": 1.0394498195000068, + "median": 1.0575762489999931, + "iqr": 0.06452007749999922, + "q1": 1.0172081642500075, + "q3": 1.0817282417500067, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 0.9955466030000082, - "hd15iqr": 1.0455056600000034, - "ops": 0.9767263343965833, - "total": 5.11914118, + "ld15iqr": 1.0025317989999962, + "hd15iqr": 1.0921611400000018, + "ops": 0.9519058909633289, + "total": 5.252620083000011, "iterations": 1 } }, @@ -215,22 +215,22 @@ "warmup": false }, "stats": { - "min": 1.0271160220000013, - "max": 1.0835498779999995, - "mean": 1.0579967554000036, - "stddev": 0.02326954258058129, + "min": 1.0407825130000106, + "max": 1.1038724269999989, + "mean": 1.0743781807999995, + "stddev": 0.0234192309013809, "rounds": 5, - "median": 1.0636774370000097, - "iqr": 0.038456846499997255, - "q1": 1.0379699792500041, - "q3": 1.0764268257500014, + "median": 1.0720399969999903, + "iqr": 0.02956353624999508, + "q1": 1.0614985870000027, + "q3": 1.0910621232499977, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 1.0271160220000013, - "hd15iqr": 1.0835498779999995, - "ops": 0.9451824827401514, - "total": 5.2899837770000175, + "ld15iqr": 1.0407825130000106, + "hd15iqr": 1.1038724269999989, + "ops": 0.930770949997685, + "total": 5.371890903999997, "iterations": 1 } }, @@ -250,22 +250,22 @@ "warmup": false }, "stats": { - "min": 1.2667135760000008, - "max": 1.327123030999985, - "mean": 1.2992391795999993, - "stddev": 0.022635871125908594, + "min": 1.2650911380000025, + "max": 1.3604008220000026, + "mean": 1.3121124548000012, + "stddev": 0.04195072099181804, "rounds": 5, - "median": 1.304748888000006, - "iqr": 0.02946532499997545, - "q1": 1.2836008145000122, - "q3": 1.3130661394999876, + "median": 1.2961401190000004, + "iqr": 0.07281847624999926, + "q1": 1.2813760800000011, + "q3": 1.3541945562500004, "iqr_outliers": 0, "stddev_outliers": 2, "outliers": "2;0", - "ld15iqr": 1.2667135760000008, - "hd15iqr": 1.327123030999985, - "ops": 0.7696812224427169, - "total": 6.496195897999996, + "ld15iqr": 1.2650911380000025, + "hd15iqr": 1.3604008220000026, + "ops": 0.7621297979009163, + "total": 6.560562274000006, "iterations": 1 } }, @@ -285,26 +285,26 @@ "warmup": false }, "stats": { - "min": 1.144688450999979, - "max": 1.1932732209999983, - "mean": 1.1786848360000022, - "stddev": 0.019542345245300897, + "min": 1.1643295559999842, + "max": 1.2412442660000238, + "mean": 1.2125064728000097, + "stddev": 0.033952589319529256, "rounds": 5, - "median": 1.185024262000013, - "iqr": 0.018281149000003438, - "q1": 1.172018976750003, - "q3": 1.1903001257500065, + "median": 1.2305443370000262, + "iqr": 0.05500754375002259, + "q1": 1.1830982827499952, + "q3": 1.2381058265000178, "iqr_outliers": 0, "stddev_outliers": 1, "outliers": "1;0", - "ld15iqr": 1.144688450999979, - "hd15iqr": 1.1932732209999983, - "ops": 0.8484032113228935, - "total": 5.893424180000011, + "ld15iqr": 1.1643295559999842, + "hd15iqr": 1.2412442660000238, + "ops": 0.8247378652674124, + "total": 6.062532364000049, "iterations": 1 } } ], - "datetime": "2023-12-15T11:08:38.830067", - "version": "4.0.0" + "datetime": "2024-12-19T11:55:48.024300+00:00", + "version": "5.1.0" } \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 9d3f4152a..926256a65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "ariadne" -version = "0.23.0" +version = "0.24.0" description = "Ariadne is a Python library for implementing GraphQL servers." authors = [{ name = "Mirumee Software", email = "hello@mirumee.com" }] readme = "README.md"