From da945c08f874d24463563c83906da30f9efe9285 Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Thu, 28 Mar 2024 09:40:04 -0400 Subject: [PATCH] Blog Refactorings (#808) * WIP * seperating out sidebar * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * archive-single caching * WIP * WIP * cache is now persistent between runs of --incremental * WIP * WIP * WIP * WIP * Side Bars (#811) * WIP * WIP * WIP * updating posts * lint * move to 5 & 5 recommendations * WIP --- blog/.gitignore | 3 +- blog/Gemfile | 1 - blog/Gemfile.lock | 3 - blog/_config.yml | 12 +- .../_data/embeddings_cache.pkl | Bin 5659126 -> 6269245 bytes blog/_data/related_articles.yml | 5732 +++++++++++++++++ blog/_includes/archive-single.html | 9 +- blog/_includes/archive__meta.html | 65 +- blog/_includes/author-profile.html | 184 +- blog/_includes/banner.html | 8 +- blog/_includes/documents-collection.html | 2 +- blog/_includes/head.html | 8 +- blog/_includes/head/growthbook.html | 32 - blog/_includes/hero-story.html | 8 +- blog/_includes/nav/header.html | 2 +- blog/_includes/page__hero.html | 66 +- blog/_includes/page__meta.html | 2 +- blog/_includes/posts-category.html | 2 +- blog/_includes/posts-tag.html | 2 +- blog/_includes/scripts.html | 3 +- blog/_includes/scripts_head.html | 51 + blog/_includes/seo.html | 45 +- blog/_includes/series_detail.html | 8 +- blog/_includes/{nav_list => series_sidebar} | 29 +- blog/_includes/sidebar.html | 18 - blog/_includes/suggestions_footer | 19 + blog/_includes/suggestions_sidebar_left | 40 + blog/_includes/suggestions_sidebar_right | 48 + blog/_layouts/archive-taxonomy.html | 2 +- blog/_layouts/author.html | 13 +- blog/_layouts/categories.html | 2 +- blog/_layouts/default.html | 31 +- blog/_layouts/home.html | 20 +- blog/_layouts/posts.html | 2 +- blog/_layouts/search.html | 42 - blog/_layouts/single.html | 171 +- blog/_layouts/tags.html | 2 +- blog/_pages/categories/articles.html | 2 +- blog/_pages/categories/news.html | 4 +- blog/_pages/categories/tutorials.html | 4 +- blog/_pages/series/activity-tracker.html | 3 +- blog/_pages/series/bash.html | 3 +- blog/_pages/series/bazel.html | 3 +- blog/_pages/series/deployment.html | 3 +- blog/_pages/series/docker.html | 2 +- blog/_pages/series/github-actions.html | 2 +- blog/_pages/series/lambdas.html | 2 +- blog/_pages/series/makefile.html | 2 +- blog/_pages/series/monorepo.html | 2 +- blog/_pages/series/pongo.html | 2 +- blog/_pages/series/programming.html | 2 +- blog/_pages/series/pypi.html | 2 +- blog/_plugins/jekyll-include-cache.rb | 123 + blog/_plugins/post_index_generator.rb | 89 + ...-build-automation-for-the-container-era.md | 1 + blog/_posts/2020-06-01-v0-1-3-released.md | 1 + blog/_posts/2020-07-22-v0-2-0-released.md | 1 + blog/_posts/2020-07-23-v0-2-1.md | 1 + blog/_posts/2020-07-23-v0-2-2-released.md | 1 + blog/_posts/2020-08-18-v0-3-0-released.md | 1 + blog/_posts/2020-08-25-v0-3-2-released.md | 1 + blog/_posts/2020-09-01-v0-3-3-released.md | 1 + .../2020-09-17-earthly-0-3-6-released.md | 1 + blog/_posts/2020-09-30-hacktoberfest-2020.md | 1 + .../2020-10-13-grateful-for-hacktoberfest.md | 1 + blog/_posts/2020-12-15-stackoverflow.md | 1 + blog/_posts/2021-01-15-phoenix.md | 1 + .../2021-03-11-build-your-own-ngrok-clone.md | 2 - blog/_posts/2021-04-15-wes-mckinney.md | 3 - blog/_posts/2021-06-09-thought-leaders.md | 1 + blog/_posts/2021-10-15-dev-tool-time.md | 3 +- blog/_posts/2021-12-14-printf-debugging.md | 2 - .../2022-04-26-programming-throwdown.md | 1 + blog/_posts/2022-05-04-aws-lambda-golang.md | 2 +- blog/_posts/2022-05-17-lambda-grpc.md | 2 - blog/_posts/2022-06-28-multi-factor-auth.md | 4 +- .../2022-07-02-introduction-pyscript.md | 22 +- .../2022-07-02-software-engineering-daily.md | 1 + blog/_posts/2022-07-20-podcast-earthly.md | 1 + blog/_posts/2022-09-14-aws-networks.md | 2 +- .../_posts/2022-11-10-rancher-managing-k8s.md | 2 +- ...rtainer-for-docker-container-management.md | 2 +- .../_posts/2023-01-09-k8s-cluster-security.md | 2 - blog/_posts/2023-02-01-vscode-git.md | 4 +- .../2023-02-23-new-fundings-at-earthly.md | 2 +- .../_posts/2023-02-27-golang-gin-framework.md | 3 - blog/_posts/2023-04-05-soc-type-one.md | 1 - .../2023-04-05-write-for-us-anniversary.md | 2 +- .../2023-05-02-load-testing-using-k6.md | 2 +- .../2023-05-11-earthly-satellites-ga.md | 2 +- ...24-setup-reverse-proxy-kubernetes-nginx.md | 2 +- ...i-cd-security-challenges-best-practices.md | 2 - .../2023-05-29-data-pipelines-with-airflow.md | 2 +- .../2023-06-16-cmake-gcc-cross-compile.md | 1 + .../2023-06-27-bash-pushd-popd-commands.md | 2 +- .../2023-07-07-earthly-github-actions.md | 2 +- .../2023-08-01-linux-network-commands.md | 2 - blog/_posts/2023-09-06-what-is-syslog.md | 2 +- .../2023-09-13-safely-using-bash-eval.md | 2 - ...deprecation-error-github-action-command.md | 2 - .../2023-09-28-advanced-git-commands-2.md | 4 - blog/_posts/2023-10-09-fish-shell.md | 2 - .../2023-10-13-datastreaming-kafka-asyncio.md | 2 - .../2023-11-07-create-python-package.md | 6 +- blog/_posts/2023-12-12-future-is-rusty.md | 2 - blog/_posts/2024-01-12-on-star-history.md | 2 +- blog/_posts/2024-03-05-developer-platforms.md | 2 +- blog/_posts/2024-03-14-docker-build-cloud.md | 2 +- blog/_posts/2024-03-15-language-style-czar.md | 1 - blog/assets/images/header.jpg | Bin 0 -> 33883 bytes ...er-8FBTtjCZ9oM-unsplash.jpg => header.jpg} | Bin poetry.lock | 1271 ++-- util/functions | 6 +- util/psupport/poetry.lock | 1238 ++-- util/psupport/psupport/core/prompts.py | 14 +- util/psupport/psupport/scripts/bottomcta.py | 3 +- .../psupport/scripts}/cluster.py | 27 +- .../psupport/scripts/suggested_posts.py | 121 + util/psupport/pyproject.toml | 1 + util/slides_markdown.py | 13 +- 120 files changed, 7379 insertions(+), 2375 deletions(-) rename util/cluster_embeddings_cache.pkl => blog/_data/embeddings_cache.pkl (90%) create mode 100644 blog/_data/related_articles.yml create mode 100644 blog/_includes/scripts_head.html rename blog/_includes/{nav_list => series_sidebar} (54%) delete mode 100644 blog/_includes/sidebar.html create mode 100644 blog/_includes/suggestions_footer create mode 100644 blog/_includes/suggestions_sidebar_left create mode 100644 blog/_includes/suggestions_sidebar_right delete mode 100644 blog/_layouts/search.html create mode 100644 blog/_plugins/jekyll-include-cache.rb create mode 100644 blog/_plugins/post_index_generator.rb create mode 100644 blog/assets/images/header.jpg rename blog/assets/images/wes-mckinney/{tim-mossholder-8FBTtjCZ9oM-unsplash.jpg => header.jpg} (100%) rename util/{ => psupport/psupport/scripts}/cluster.py (87%) mode change 100644 => 100755 create mode 100755 util/psupport/psupport/scripts/suggested_posts.py diff --git a/blog/.gitignore b/blog/.gitignore index e822fa189..a9227ab30 100644 --- a/blog/.gitignore +++ b/blog/.gitignore @@ -3,4 +3,5 @@ _site .jekyll-metadata .jekyll-cache .history -node_modules \ No newline at end of file +node_modules +build_stats.txt diff --git a/blog/Gemfile b/blog/Gemfile index 938dda7a1..a7fd18cad 100644 --- a/blog/Gemfile +++ b/blog/Gemfile @@ -17,7 +17,6 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do end # required by theme: -gem 'jekyll-include-cache' gem "liquid-c" gem "jekyll-inline-svg" diff --git a/blog/Gemfile.lock b/blog/Gemfile.lock index be778ef9c..e5bd7c6a3 100644 --- a/blog/Gemfile.lock +++ b/blog/Gemfile.lock @@ -31,8 +31,6 @@ GEM terminal-table (~> 1.8) jekyll-feed (0.16.0) jekyll (>= 3.7, < 5.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) jekyll-inline-svg (1.1.4) jekyll (>= 3.3, < 5.0) svg_optimizer (~> 0.2.5) @@ -106,7 +104,6 @@ PLATFORMS DEPENDENCIES jekyll (~> 4.1.1) jekyll-feed - jekyll-include-cache jekyll-inline-svg jekyll-seo-tag jekyll-sitemap diff --git a/blog/_config.yml b/blog/_config.yml index 4e3059cd2..46b8332e8 100644 --- a/blog/_config.yml +++ b/blog/_config.yml @@ -52,10 +52,6 @@ naver_site_verification : # Social Sharing twitter: username : &twitter "EarthlyTech" -facebook: - username : - app_id : - publisher : og_image : /assets/images/logo-header.png # default twitter preview for articles with no twitter image social: type : Organization # Person or Organization (defaults to Person) @@ -148,7 +144,6 @@ plugins: - jekyll-sitemap - jekyll-feed - jekyll-inline-svg - - jekyll-include-cache - jekyll_picture_tag # HTML Compression @@ -170,7 +165,7 @@ defaults: values: layout: single author_profile: true - toc: false + toc: true fbio: true read_time: true comments: false @@ -201,6 +196,11 @@ picture: fast_build: true ignore_missing_images: true +# If you are making changes to templates, you probably want this off +# If working on a post, you want this on +jekyll_include_cache: + enabled: true + # Site banner banner: Introducing Earthly Cloud. Consistent, repeatable builds. Advanced caching for speed. Works with any CI. Get 6,000 build min/mth free! Learn more. mobileBanner: Introducing Earthly Cloud. Consistent, Fast Builds, Any CI. Get 6,000 build min/mth free! Learn more. diff --git a/util/cluster_embeddings_cache.pkl b/blog/_data/embeddings_cache.pkl similarity index 90% rename from util/cluster_embeddings_cache.pkl rename to blog/_data/embeddings_cache.pkl index 162691df68490cd4e8401ac1adc6de2bf445099a..d42b62465b988728d7789b7a9ac51374a785bd7b 100644 GIT binary patch delta 615102 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 lheq#QwXuQmVeTh9!*rLF9`FKGXx=q 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

%Q=F4}SB*Bp8 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 Q;s4YfVOw$`9C&({Qi|k7Tw)r|j#&}_ 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%0AqJw6zkFqXD!-YlsQ6L+e5nMvk0*%1LLDqZ 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

18{ZA(Iznv)$tQ{YTp+#tqUy{CDYFF2w>IB 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%0DtIz@qd!~_DCJI*pn6fFV^j!DKHHMh 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" | remove: "

" %} -{% else %} - {% assign title = post.title %} -{% endif %} +{% assign title = post.title %}
@@ -54,7 +51,7 @@

{{ post.excerpt | markdownify | strip_html | truncate: 160 }}

{% endif %} + {% if post.excerpt %}

{{ post.excerpt | truncate: 160 }}

{% endif %}

diff --git a/blog/_includes/archive__meta.html b/blog/_includes/archive__meta.html index 0fee01e2c..a0e4db913 100644 --- a/blog/_includes/archive__meta.html +++ b/blog/_includes/archive__meta.html @@ -1,38 +1,29 @@ -{% assign document = post | default: page %} {% if document.read_time or -document.show_date %} -

- {% if document.show_date and document.date %} {% assign date = document.date - %} - - - - - {% endif %} {% if document.read_time and document.show_date %}{% endif %} {% if document.read_time %} {% assign words_per_minute = - document.words_per_minute | default: site.words_per_minute | default: 200 %} - {% assign words = document.content | strip_html | number_of_words %} - -

- - {% if words < words_per_minute %} {{ - site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ - site.data.ui-text[site.locale].minute_read | default: "minute read" }} {% - elsif words == words_per_minute %} 1 {{ - site.data.ui-text[site.locale].minute_read | default: "minute read" }} {% - else %} {{ words | divided_by: words_per_minute }} {{ - site.data.ui-text[site.locale].minute_read | default: "minute read" }} {% - endif %} -
- {% endif %} -

+{% assign document = post | default: page %} +{% if document.read_time or document.show_date %} +

+ {% if document.show_date and document.date %} + {% assign date = document.date %} + + + + + {% endif %} + {% if document.read_time and document.show_date %} + + {% endif %} + {% if document.read_time %} + {% assign words_per_minute = document.words_per_minute | default: site.words_per_minute | default: 200 %} + {% assign words = document.content.size | divided_by: 6 %} +

+ + {% if words < words_per_minute %} + {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% elsif words == words_per_minute %} + 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% else %} + {{ words | divided_by: words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} + {% endif %} +
+ {% endif %} +

{% endif %} diff --git a/blog/_includes/author-profile.html b/blog/_includes/author-profile.html index 039d58b9e..66160ed44 100644 --- a/blog/_includes/author-profile.html +++ b/blog/_includes/author-profile.html @@ -1,15 +1,14 @@ -{% assign author = page.author[0] | default: page.author | default: site.author %} -{% assign author = site.data.authors[author] | default: author %} -{% if page.fbio %} -{% if author %} +{%- comment -%}Check for first author and display their profile if present{%- endcomment -%} +{% if include.author1 %} + {% assign author = site.data.authors[include.author1] %}
{% if author.avatar %}
- {% picture author {{author.avatar }} --picture class="image-author" --alt {{ author.name }} % %} + {% picture author {{author.avatar }} --picture class="image-author" --alt {{ author.name }} % %}
{% endif %}
@@ -24,120 +23,111 @@
{% if author.bio %}
- {{ author.bio | markdownify }} + {{ author.bio }}
{% endif %}
+{% endif %} - {% if page.author2 %} - {% assign author2 = page.author2 %} - {% assign author2 = site.data.authors[author2]%} - +{%- comment -%}Repeat blocks for author2 and author3 with similar structure{%- endcomment -%} +{% if include.author2 %} + {% assign author = site.data.authors[include.author2] %}
- {% if author2.avatar %} -
- {% picture author {{author2.avatar }} --picture class="image-author" --alt {{ author2.name }} % %} -
- {% endif %} -
-
- {% if author2.home %} - - {{ author2.name }} - - {% else %} - {{ author2.name }} - {% endif %} -
- {% if author2.bio %} -
- {{ author2.bio | markdownify }} -
- {% endif %} -
+ itemscope + itemtype="https://schema.org/Person" + class="flex border rounded-md items-center my-2" +> + {% if author.avatar %} +
+ {% picture author {{author.avatar }} --picture class="image-author" --alt {{ author.name }} % %}
{% endif %} - - {% if page.author3 %} - {% assign author3 = page.author3 %} - {% assign author3 = site.data.authors[author3]%} - -
- {% if author3.avatar %} -
- {% picture author {{author3.avatar }} --picture class="image-author" --alt {{ author3.name }} % %} -
- {% endif %} -
-
- {% if author3.home %} - - {{ author3.name }} - - {% else %} - {{ author3.name }} - {% endif %} -
- {% if author3.bio %} -
- {{ author3.bio | markdownify }} -
+
+
+ {% if author.home %} + + {{ author.name }} + + {% else %} + {{ author.name }} {% endif %}
+ {% if author.bio %} +
+ {{ author.bio | markdownify }} +
+ {% endif %}
- {% endif %} - - {% if page.editor %} - {% assign editor = page.editor %} - {% assign editor = site.data.authors[editor]%} - +
+{% endif %} +{% if include.author3 %} + {% assign author = site.data.authors[include.author3] %}
-
-
- Writers at Earthly work closely with our talented editors to help them create high quality tutorials. This article was edited by: + {% if author.avatar %} +
+ {% picture author {{author.avatar }} --picture class="image-author" --alt {{ author.name }} % %} +
+ {% endif %} +
+
+ {% if author.home %} + + {{ author.name }} + + {% else %} + {{ author.name }} + {% endif %}
+ {% if author.bio %} +
+ {{ author.bio | markdownify }} +
+ {% endif %} +
+
+{% endif %} -
- {{ site.editor }} - {% if editor.avatar %} -
- {% picture author {{editor.avatar }} --picture class="image-author" --alt {{ editor.name }} %} +{%- comment -%}Check for editor and display their profile if present{%- endcomment -%} +{% if include.editor %} + {% assign editor = site.data.authors[include.editor] %} +
+
+
+ Writers at Earthly work closely with our talented editors to help them create high quality content. This article was edited by:
- {% endif %} -
-
- {% if editor.home %} - +
+ {% if editor.avatar %} +
+ {% picture author {{editor.avatar }} --picture class="image-author" --alt {{ editor.name }} % %} +
+ {% endif %} +
+
+ {% if editor.home %} + + {{ editor.name }} + + {% else %} {{ editor.name }} - - {% else %} - {{ editor.name }} + {% endif %} +
+ {% if editor.bio %} +
+ {{ editor.bio | markdownify }} +
{% endif %}
- {% if editor.bio %} -
- {{ editor.bio | markdownify }} -
- {% endif %}
-
-{% endif %} - -{% endif %} {% endif %} diff --git a/blog/_includes/banner.html b/blog/_includes/banner.html index 1dffbb053..5625e5345 100644 --- a/blog/_includes/banner.html +++ b/blog/_includes/banner.html @@ -1,11 +1,11 @@ {% if page.banner or page.mobileBanner or site.banner or site.mobileBanner %}
{% if page.banner or page.mobileBanner %} - -
{{ page.mobileBanner | default: page.banner | markdownify }}
+ +
{{ page.mobileBanner | default: page.banner }}
{% else %} - -
{{ site.mobileBanner | default: site.banner | markdownify }}
+ +
{{ site.mobileBanner | default: site.banner }}
{% endif %}
diff --git a/blog/_includes/documents-collection.html b/blog/_includes/documents-collection.html index e88d8c4c4..ea2e5bc20 100644 --- a/blog/_includes/documents-collection.html +++ b/blog/_includes/documents-collection.html @@ -10,6 +10,6 @@ {%- for post in entries -%} {%- unless post.hidden -%} - {% include archive-single.html %} + {% include_cached archive-single.html post=post%} {%- endunless -%} {%- endfor -%} diff --git a/blog/_includes/head.html b/blog/_includes/head.html index 2ae74f8de..5a7c16dd0 100644 --- a/blog/_includes/head.html +++ b/blog/_includes/head.html @@ -1,10 +1,6 @@ -{% include seo.html %} {% unless site.atom_feed.hide %} - -{% endunless %} - +{% include seo.html %} @@ -41,6 +37,6 @@ {% endif %} {% include_cached head/segment.html %} -{% include head/growthbook.html %} +{% include_cached head/growthbook.html %} {% include_cached head/facebookpixel.html %} {% include_cached head/twitterpixel.html %} diff --git a/blog/_includes/head/growthbook.html b/blog/_includes/head/growthbook.html index 8e26db6ac..8edf6af65 100644 --- a/blog/_includes/head/growthbook.html +++ b/blog/_includes/head/growthbook.html @@ -20,36 +20,4 @@ }); } }); - - // Layout:{{ page.layout}} - // Nav:{{ page.sidebar.nav }} - {% if page.layout == "single" and page.sidebar.nav == "makefile" %} - document.addEventListener("DOMContentLoaded", function () { - // Running The Test - const isDesktop = window.innerWidth > 1024; - if (!isDesktop) { - return; - } - - // Get all elements with 'cta-treatment' and 'cta-control' classes - const ctaTreatmentElements = document.querySelectorAll('.cta-treatment'); - const ctaControlElements = document.querySelectorAll('.cta-control'); - - gb.loadFeatures({ autoRefresh: true, timeout: 2000 }).then(() => { - console.log("starting Test"); - const treatment = gb.isOn("blog-makefile-more-sidebar") - if (treatment) { - console.log("treatment"); - // Show 'cta-treatment' elements and hide 'cta-control' elements - ctaTreatmentElements.forEach(element => element.classList.remove('hidden')); - ctaControlElements.forEach(element => element.classList.add('hidden')); - } else { - console.log("control"); - ctaTreatmentElements.forEach(element => element.classList.add('hidden')); - ctaControlElements.forEach(element => element.classList.remove('hidden')); - } - }); - }); - {% endif %} - diff --git a/blog/_includes/hero-story.html b/blog/_includes/hero-story.html index b3fca830e..27bc7696a 100644 --- a/blog/_includes/hero-story.html +++ b/blog/_includes/hero-story.html @@ -19,11 +19,7 @@ {% assign teaser = site.teaser %} {% endif %} -{% if post.id %} - {% assign title = post.title | markdownify | remove: "

" | remove: "

" %} -{% else %} - {% assign title = post.title %} -{% endif %} +{% assign title = post.title %}
@@ -49,7 +45,7 @@

{{ post.excerpt | markdownify | strip_html | truncate: 260 }}

{% endif %} + {% if post.excerpt %}

{{ post.excerpt | truncate: 260 }}

{% endif %}

diff --git a/blog/_includes/nav/header.html b/blog/_includes/nav/header.html index a71aae832..391e1bbd1 100644 --- a/blog/_includes/nav/header.html +++ b/blog/_includes/nav/header.html @@ -8,7 +8,7 @@
diff --git a/blog/_pages/categories/news.html b/blog/_pages/categories/news.html index 3df0acd23..a7b622066 100644 --- a/blog/_pages/categories/news.html +++ b/blog/_pages/categories/news.html @@ -12,8 +12,8 @@

{% for post in site.categories.News %} - {% include archive-single.html type="grid" heading="heading" %} + {% include_cached archive-single.html post=post type="grid" heading="heading" %} {% endfor %}

-
\ No newline at end of file +
diff --git a/blog/_pages/categories/tutorials.html b/blog/_pages/categories/tutorials.html index 96083b584..7aa1c0bfb 100644 --- a/blog/_pages/categories/tutorials.html +++ b/blog/_pages/categories/tutorials.html @@ -12,8 +12,8 @@

{% for post in site.categories.Tutorials %} - {% include archive-single.html type="grid" heading="heading" %} + {% include_cached archive-single.html post=post type="grid" heading="heading" %} {% endfor %}

- \ No newline at end of file + diff --git a/blog/_pages/series/activity-tracker.html b/blog/_pages/series/activity-tracker.html index 93823b398..450bcbccb 100644 --- a/blog/_pages/series/activity-tracker.html +++ b/blog/_pages/series/activity-tracker.html @@ -3,5 +3,4 @@ title: Activity Tracker permalink: /series/activity-tracker/ --- - -{% include series_detail.html name="Activity Tracker" type="activity-tracker" %} \ No newline at end of file +{% include_cached series_detail.html name="Activity Tracker" type="activity-tracker" %} diff --git a/blog/_pages/series/bash.html b/blog/_pages/series/bash.html index b0abe2c23..8fed0e2a2 100644 --- a/blog/_pages/series/bash.html +++ b/blog/_pages/series/bash.html @@ -3,5 +3,4 @@ title: Linux & Bash permalink: /series/bash/ --- - -{% include series_detail.html name="Linux & Bash" type="bash" %} \ No newline at end of file +{% include_cached series_detail.html name="Linux & Bash" type="bash" %} diff --git a/blog/_pages/series/bazel.html b/blog/_pages/series/bazel.html index 9fe0be9e6..513983543 100644 --- a/blog/_pages/series/bazel.html +++ b/blog/_pages/series/bazel.html @@ -3,5 +3,4 @@ title: Big Builds permalink: /series/bazel/ --- - -{% include series_detail.html name="Big Builds" type="bazel" %} +{% include_cached series_detail.html name="Big Builds" type="bazel" %} diff --git a/blog/_pages/series/deployment.html b/blog/_pages/series/deployment.html index a745357e8..8fabad69d 100644 --- a/blog/_pages/series/deployment.html +++ b/blog/_pages/series/deployment.html @@ -3,5 +3,4 @@ title: Deployment permalink: /series/deployment-strategies/ --- - -{% include series_detail.html name="Deployment" type="deployment-strategies" %} \ No newline at end of file +{% include_cached series_detail.html name="Deployment" type="deployment-strategies" %} diff --git a/blog/_pages/series/docker.html b/blog/_pages/series/docker.html index 89a2b7c31..52890bdfb 100644 --- a/blog/_pages/series/docker.html +++ b/blog/_pages/series/docker.html @@ -4,4 +4,4 @@ permalink: /series/docker/ --- -{% include series_detail.html name="Docker" type="docker" %} \ No newline at end of file +{% include_cached series_detail.html name="Docker" type="docker" %} diff --git a/blog/_pages/series/github-actions.html b/blog/_pages/series/github-actions.html index 0d3273f4c..bb3774095 100644 --- a/blog/_pages/series/github-actions.html +++ b/blog/_pages/series/github-actions.html @@ -4,4 +4,4 @@ permalink: /series/github-actions/ --- -{% include series_detail.html name="GitHub Actions" type="github-actions" %} +{% include_cached series_detail.html name="GitHub Actions" type="github-actions" %} diff --git a/blog/_pages/series/lambdas.html b/blog/_pages/series/lambdas.html index a3ea45ddd..aab503955 100644 --- a/blog/_pages/series/lambdas.html +++ b/blog/_pages/series/lambdas.html @@ -4,4 +4,4 @@ permalink: /series/lambdas/ --- -{% include series_detail.html name="AWS Lambdas" type="lambdas" %} \ No newline at end of file +{% include_cached series_detail.html name="AWS Lambdas" type="lambdas" %} diff --git a/blog/_pages/series/makefile.html b/blog/_pages/series/makefile.html index d5c98e2a0..c40995cbb 100644 --- a/blog/_pages/series/makefile.html +++ b/blog/_pages/series/makefile.html @@ -4,4 +4,4 @@ permalink: /series/makefile/ --- -{% include series_detail.html name="Make File" type="makefile" %} \ No newline at end of file +{% include_cached series_detail.html name="Make File" type="makefile" %} diff --git a/blog/_pages/series/monorepo.html b/blog/_pages/series/monorepo.html index 19e27ed5c..a7ca38bff 100644 --- a/blog/_pages/series/monorepo.html +++ b/blog/_pages/series/monorepo.html @@ -4,4 +4,4 @@ permalink: /series/monorepos/ --- -{% include series_detail.html name="Monorepos" type="monorepos" %} +{% include_cached series_detail.html name="Monorepos" type="monorepos" %} diff --git a/blog/_pages/series/pongo.html b/blog/_pages/series/pongo.html index 21d54d097..ae1a3f0ae 100644 --- a/blog/_pages/series/pongo.html +++ b/blog/_pages/series/pongo.html @@ -4,4 +4,4 @@ permalink: /series/pongo/ --- -{% include series_detail.html name="Build Pong in the Terminal" type="pongo" %} \ No newline at end of file +{% include_cached series_detail.html name="Build Pong in the Terminal" type="pongo" %} diff --git a/blog/_pages/series/programming.html b/blog/_pages/series/programming.html index b9bbaf072..cf3d10ed4 100644 --- a/blog/_pages/series/programming.html +++ b/blog/_pages/series/programming.html @@ -4,4 +4,4 @@ permalink: /series/thoughts/ --- -{% include series_detail.html name="Programming Thoughts" type="thoughts" %} \ No newline at end of file +{% include_cached series_detail.html name="Programming Thoughts" type="thoughts" %} diff --git a/blog/_pages/series/pypi.html b/blog/_pages/series/pypi.html index 1d6b6bc11..1ed20461a 100644 --- a/blog/_pages/series/pypi.html +++ b/blog/_pages/series/pypi.html @@ -4,4 +4,4 @@ permalink: /series/pypi/ --- -{% include series_detail.html name="Python Packaging" type="pypi" %} +{% include_cached series_detail.html name="Python Packaging" type="pypi" %} diff --git a/blog/_plugins/jekyll-include-cache.rb b/blog/_plugins/jekyll-include-cache.rb new file mode 100644 index 000000000..9411d962a --- /dev/null +++ b/blog/_plugins/jekyll-include-cache.rb @@ -0,0 +1,123 @@ +# From https://github.com/benbalter/jekyll-include-cache/tree/main +# frozen_string_literal: true + +require "jekyll" +require "digest/md5" + +module JekyllIncludeCache + class Tag < Jekyll::Tags::IncludeTag + def self.digest_cache + @digest_cache ||= {} + end + + def render(context) + path = path(context) + params = parse_params(context) if @params + key = key(path, params) + return unless path + + if JekyllIncludeCache.cache.key?(key) + Jekyll.logger.debug "Include cache hit:", path + JekyllIncludeCache.cache[key] + else + Jekyll.logger.debug "Include cache miss:", path + JekyllIncludeCache.cache[key] = super + end + end + + private + + def path(context) + site = context.registers[:site] + file = render_variable(context) || @file + locate_include_file(context, file, site.safe) + end + + def key(path, params) + path_hash = path.hash + params_hash = quick_hash(params) + self.class.digest_cache[path_hash] ||= {} + self.class.digest_cache[path_hash][params_hash] ||= digest(path_hash, params_hash) + end + + def key_rich(path, params) + params ||= {} + # Check if a post object is included in the params + if params[:post] + post = params[:post] + post_identifier = "#{post.slug}_#{post.last_modified_at.to_i}" + # Create a unique identifier for the post to include in the cache key + unique_post_part = stable_hash(post_identifier: post_identifier) + else + unique_post_part = "" + end + + # Generate a hash for the remaining parameters, excluding the :post key manually + remaining_params = params.reject { |k, _| k == :post } + params_hash = stable_hash(remaining_params) + + # Combine path, post identifier (if any), and params hash into a final cache key + "#{path}_#{unique_post_part}_#{params_hash}" + end + + + def stable_hash(params) + Digest::MD5.hexdigest(params.to_s) + end + + def quick_hash(params) + return params.hash unless params + + md5 = Digest::MD5.new + + params.sort.each do |_, value| + # Using the fact that Jekyll documents don't change during a build. + # Instead of calculating the hash of an entire document (expensive!) + # we just use its object id. + if value.is_a? Jekyll::Drops::Drop + md5.update value.object_id.to_s + else + md5.update value.hash.to_s + end + end + + md5.hexdigest + end + + def digest(path_hash, params_hash) + md5 = Digest::MD5.new + md5.update path_hash.to_s + md5.update params_hash.to_s + md5.hexdigest + end + end + end + + + +module JekyllIncludeCache + class << self + def cache + @cache ||= Jekyll::Cache.new(self.class.name) + end + + def reset + Jekyll.logger.info "JekyllIncludeCache:", "Caching is cleared." + JekyllIncludeCache.cache.clear + end + end +end + +Jekyll::Hooks.register :site, :after_init do |site| + if site.config["jekyll_include_cache"] && site.config["jekyll_include_cache"]["enabled"] + Jekyll.logger.warn "JekyllIncludeCache:", "Caching is enabled." + Liquid::Template.register_tag("include_cached", JekyllIncludeCache::Tag) + # Here we can clear the cache, but it should not be needed + # Jekyll::Hooks.register :site, :pre_render do |_site| + # JekyllIncludeCache.reset + # end + else + Jekyll.logger.debug "JekyllIncludeCache:", "Caching is disabled." + Liquid::Template.register_tag("include_cached", Jekyll::Tags::IncludeTag) + end +end diff --git a/blog/_plugins/post_index_generator.rb b/blog/_plugins/post_index_generator.rb new file mode 100644 index 000000000..1c3a18499 --- /dev/null +++ b/blog/_plugins/post_index_generator.rb @@ -0,0 +1,89 @@ +module Jekyll + class PostIndexGenerator < Generator + priority :highest + + def generate(site) + start_time = Time.now # Capture start time + + # Initialize empty hashes for each index + slug_index = {} + author_index = {} + editor_index = {} + topic_index = {} + funnel_index = {} + related_index_1 = {} + related_index_2 = {} + + # Iterate over each post to populate the indexes + site.posts.docs.each do |post| + # Index by slug + slug = post.data['slug'] || post.slug + slug_index[slug] = post + + # Index by author + author = post.data['author'] + (author_index[author] ||= []) << post + + # Index by editor + editor = post.data['editor'] + (editor_index[editor] ||= []) << post + + # Index by topic + topic = post.data['topic'] + (topic_index[topic] ||= []) << post + + # Index by funnel + funnel = post.data['funnel'] + if funnel > 0 + (funnel_index[funnel] ||= []) << post + end + end + + # Build the related_index + funnel_3_sample = funnel_index[3] ? funnel_index[3].shuffle : [] + + site.posts.docs.each do |post| + slug = post.data['slug'] || post.slug + related_slugs = site.data['related_articles'][slug] + + if related_slugs + # If there are explicitly related articles listed + related_posts = related_slugs.map { |related_slug| slug_index[related_slug] }.compact + else + # Initialize as empty if there are no explicitly related articles + related_posts = [] + end + + related_index_1[slug] = related_posts.dup + + if related_posts.length < 8 + # Calculate how many posts are needed to pad the related list to 8 items + padding_needed = 8 - related_posts.length + padding_posts = funnel_3_sample.sample(padding_needed) if !funnel_3_sample.empty? + related_posts.concat(padding_posts) if padding_posts + end + + # Assign the padded or filled list of related posts to the related_index for the slug + related_index_2[slug] = related_posts.uniq + end + + + # Store the indexes in site.data for access in templates + site.data['indexes'] = { + 'slug' => slug_index, + 'author' => author_index, + 'editor' => editor_index, + 'topic' => topic_index, + 'funnel' => funnel_index, + 'related1' => related_index_1, + 'related2' => related_index_2, + } + + end_time = Time.now # Capture end time + duration = end_time - start_time # Calculate duration + + Jekyll.logger.debug "PostIndexGenerator:", "Indexes built in #{duration} seconds" + end + end + end + \ No newline at end of file diff --git a/blog/_posts/2020-04-16-introducing-earthly-build-automation-for-the-container-era.md b/blog/_posts/2020-04-16-introducing-earthly-build-automation-for-the-container-era.md index f3549fe45..9935d4633 100644 --- a/blog/_posts/2020-04-16-introducing-earthly-build-automation-for-the-container-era.md +++ b/blog/_posts/2020-04-16-introducing-earthly-build-automation-for-the-container-era.md @@ -4,6 +4,7 @@ featured: true author: Vlad categories: - News +toc: false internal-links: - build automation topic: earthly diff --git a/blog/_posts/2020-06-01-v0-1-3-released.md b/blog/_posts/2020-06-01-v0-1-3-released.md index ab8ed866c..e8618e84f 100644 --- a/blog/_posts/2020-06-01-v0-1-3-released.md +++ b/blog/_posts/2020-06-01-v0-1-3-released.md @@ -2,6 +2,7 @@ title: v0.1.3 Released categories: - News +toc: false excerpt: | Check out the latest release of Earthly v0.1.3! With new features like support for `FROM scratch` and improved installation, this update is a must-read for developers looking to optimize their cache storage and streamline their workflow. last_modified_at: 2023-07-11 diff --git a/blog/_posts/2020-07-22-v0-2-0-released.md b/blog/_posts/2020-07-22-v0-2-0-released.md index bcf93f9db..e73712447 100644 --- a/blog/_posts/2020-07-22-v0-2-0-released.md +++ b/blog/_posts/2020-07-22-v0-2-0-released.md @@ -3,6 +3,7 @@ title: v0.2.0 Released categories: - News as_related: false +toc: false excerpt: | Check out the latest release of v0.2.0, featuring exciting changes like a global configuration file, GitLab support, and examples in Scala, C++, and .NET. Upgrade now to discover the improved features and fixes in this markdown post. last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-07-23-v0-2-1.md b/blog/_posts/2020-07-23-v0-2-1.md index 1e8a42bf1..208dfcccc 100644 --- a/blog/_posts/2020-07-23-v0-2-1.md +++ b/blog/_posts/2020-07-23-v0-2-1.md @@ -2,6 +2,7 @@ title: v0.2.1 Released categories: - News +toc: false excerpt: | Check out the latest release of v0.2.1, packed with fixes for handling sockets between different targets and symlink SSH sockets. Don't miss the chance to explore the improvements made in this version! last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-07-23-v0-2-2-released.md b/blog/_posts/2020-07-23-v0-2-2-released.md index caae5d1c2..b3ca86f36 100644 --- a/blog/_posts/2020-07-23-v0-2-2-released.md +++ b/blog/_posts/2020-07-23-v0-2-2-released.md @@ -3,6 +3,7 @@ title: v0.2.2 Released categories: - News as_related: false +toc: false excerpt: | Check out the latest release of Earthly v0.2.2, featuring a fix for a macOS-specific bug. Don't miss the improvements and updates for this popular tool! last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-08-18-v0-3-0-released.md b/blog/_posts/2020-08-18-v0-3-0-released.md index 3eac8fb66..96d1bc22b 100644 --- a/blog/_posts/2020-08-18-v0-3-0-released.md +++ b/blog/_posts/2020-08-18-v0-3-0-released.md @@ -3,6 +3,7 @@ title: v0.3.0 Released categories: - News funnel: 0 +toc: false excerpt: | Check out the latest release of Earthly (v0.3.0) with exciting new features like an interactive mode debugger and support for Dockerfiles. Upgrade now and discover the power of Earthly for faster builds and improved error display. last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-08-25-v0-3-2-released.md b/blog/_posts/2020-08-25-v0-3-2-released.md index 46cc59684..f456f27f1 100644 --- a/blog/_posts/2020-08-25-v0-3-2-released.md +++ b/blog/_posts/2020-08-25-v0-3-2-released.md @@ -3,6 +3,7 @@ title: v0.3.2 Released categories: - News as_related: false +toc: false excerpt: | Check out the latest release of Earthly (v0.3.2) with exciting new features like Bash autocompletion and improved Docker operations. Upgrade now and experience a smoother and more efficient development process. last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-09-01-v0-3-3-released.md b/blog/_posts/2020-09-01-v0-3-3-released.md index cfea6501a..cb11a41c9 100644 --- a/blog/_posts/2020-09-01-v0-3-3-released.md +++ b/blog/_posts/2020-09-01-v0-3-3-released.md @@ -2,6 +2,7 @@ title: v0.3.3 Released categories: - News +toc: false excerpt: | Check out the latest release of Earthly v0.3.3, where you can now easily set up bash and zsh shell completion with the new `earth bootstrap` command. Don't miss this exciting update that simplifies your workflow! last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-09-17-earthly-0-3-6-released.md b/blog/_posts/2020-09-17-earthly-0-3-6-released.md index 7b88aba93..5a9fc4e0c 100644 --- a/blog/_posts/2020-09-17-earthly-0-3-6-released.md +++ b/blog/_posts/2020-09-17-earthly-0-3-6-released.md @@ -3,6 +3,7 @@ title: Earthly 0.3.6 Released categories: - News as_related: false +toc: false excerpt: | Check out the latest release of Earthly 0.3.6! This update brings new features like enhanced command access and support for in-line comments. Don't miss out on the improved autocompletion and user terminal environment variable pass-along. last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-09-30-hacktoberfest-2020.md b/blog/_posts/2020-09-30-hacktoberfest-2020.md index a4b0d1bf1..dad5804e9 100644 --- a/blog/_posts/2020-09-30-hacktoberfest-2020.md +++ b/blog/_posts/2020-09-30-hacktoberfest-2020.md @@ -3,6 +3,7 @@ title: Hacktoberfest 2020 author: Vlad categories: - News +toc: false internal-links: - hacktoberfest - contributor diff --git a/blog/_posts/2020-10-13-grateful-for-hacktoberfest.md b/blog/_posts/2020-10-13-grateful-for-hacktoberfest.md index d387c58d6..27a5faa1a 100644 --- a/blog/_posts/2020-10-13-grateful-for-hacktoberfest.md +++ b/blog/_posts/2020-10-13-grateful-for-hacktoberfest.md @@ -4,6 +4,7 @@ featured: true author: Vlad categories: - News +toc: false excerpt: | Discover how Hacktoberfest has brought developers together to contribute to the open-source project Earthly, resulting in exciting improvements such as syntax highlighting for Sublime Text and Vim, support for edge cases, and more. Find out how Earthly managed contributions and why they are looking forward to more in this engaging post. last_modified_at: 2023-07-14 diff --git a/blog/_posts/2020-12-15-stackoverflow.md b/blog/_posts/2020-12-15-stackoverflow.md index 3cd7d53d8..7736001aa 100644 --- a/blog/_posts/2020-12-15-stackoverflow.md +++ b/blog/_posts/2020-12-15-stackoverflow.md @@ -2,6 +2,7 @@ title: "Earthly on Stack Overflow podcast" categories: - News +toc: false author: Earthly excerpt: | In this episode of The Stack Overflow podcast, Adam Gordon Bell, Director of Developer Relations at Earthly, shares entertaining stories about engineers' mistaken assumptions and talks about Earthly's mission to improve build scripts. Tune in for a fun and insightful conversation! diff --git a/blog/_posts/2021-01-15-phoenix.md b/blog/_posts/2021-01-15-phoenix.md index c9deb4021..63683bba5 100644 --- a/blog/_posts/2021-01-15-phoenix.md +++ b/blog/_posts/2021-01-15-phoenix.md @@ -2,6 +2,7 @@ title: "Earthly used by Phoenix Project" categories: - News +toc: false author: Earthly funnel: 3 topcta: false diff --git a/blog/_posts/2021-03-11-build-your-own-ngrok-clone.md b/blog/_posts/2021-03-11-build-your-own-ngrok-clone.md index df33d4c7d..e1072a1ad 100644 --- a/blog/_posts/2021-03-11-build-your-own-ngrok-clone.md +++ b/blog/_posts/2021-03-11-build-your-own-ngrok-clone.md @@ -30,9 +30,7 @@ However, it can be hard to trust fancy tools like `ngrok` until you experience h To understand why `ngrok` is so cool, you'll need to first understand how you would normally get traffic from the broader internet into your local machine. A typical flow would be something like this: -
![Diagram showing the flow of traffic from a users web browser, through the internet, a home router, and finally the users computer. It points out that the user controls the DNS lookup, router, and their machine.]({{site.images}}{{page.slug}}/without_ngrok.png)\ -
This flow is normal for most of the machines on the internet today, but it has its downsides for local development. For instance, most home and non-commerical internet connections do not have a [Static IP](https://whatismyipaddress.com/dynamic-static) - which means you need to double-check your IP address before sending it out, or (more often) install and configure additional software to keep your DNS records up to date. diff --git a/blog/_posts/2021-04-15-wes-mckinney.md b/blog/_posts/2021-04-15-wes-mckinney.md index 29baa248d..426df10e3 100644 --- a/blog/_posts/2021-04-15-wes-mckinney.md +++ b/blog/_posts/2021-04-15-wes-mckinney.md @@ -3,9 +3,6 @@ title: "Welcoming Wes McKinney as an advisor to Earthly" categories: - News -header: - overlay_image: /assets/images/wes-mckinney/tim-mossholder-8FBTtjCZ9oM-unsplash.jpg - caption: "Photo by Tim Mossholder on Unsplash" tags: - advisor - data-engineering diff --git a/blog/_posts/2021-06-09-thought-leaders.md b/blog/_posts/2021-06-09-thought-leaders.md index 3da1b9e3d..a7f900463 100644 --- a/blog/_posts/2021-06-09-thought-leaders.md +++ b/blog/_posts/2021-06-09-thought-leaders.md @@ -4,6 +4,7 @@ categories: - Articles author: Adam featured: true +toc: false sidebar: nav: "thoughts" internal-links: diff --git a/blog/_posts/2021-10-15-dev-tool-time.md b/blog/_posts/2021-10-15-dev-tool-time.md index 0564e9a71..be917fae7 100644 --- a/blog/_posts/2021-10-15-dev-tool-time.md +++ b/blog/_posts/2021-10-15-dev-tool-time.md @@ -2,6 +2,7 @@ title: "Dev Tool Time" categories: - News +toc: false author: Earthly excerpt: | Learn how developer advocate Adam Gordon Bell uses Earthly to enhance his writing experience and maintain high-quality published content. Discover his favorite dev tools for writing in this casual and informative Sourcegraph article. @@ -10,9 +11,7 @@ topcta: false --- Earthly was covered on Sourcegraph's [Dev Tool Time](https://www.youtube.com/watch?v=oPaPhFX7SeM): -
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/1810.png --alt {{ Sourcegraph Dev Tool Time }} %} -
> As a developer advocate, Adam Gordon Bell writes prose as a central part of his work. As a programmer, he wants the same experience writing prose that he has writing code, where linters and build pipelines help with consistency, formatting, and error checking. When Adam joined us for Dev Tool Time on September 29, 2021, he shared his favorite dev tools for writing and how Earthly helps keep his published writing high quality. diff --git a/blog/_posts/2021-12-14-printf-debugging.md b/blog/_posts/2021-12-14-printf-debugging.md index 27975f93f..328372b25 100644 --- a/blog/_posts/2021-12-14-printf-debugging.md +++ b/blog/_posts/2021-12-14-printf-debugging.md @@ -19,9 +19,7 @@ last_modified_at: 2023-07-19 The Visual Studio debugger is fantastic. When I was a C# developer, I used it all the time. -
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/4450.png --alt {{ Visual Studio Debug Session }} %} -
A typical pattern was putting a breakpoint on a failing assert in a unit test and then just poking around. I would look at all values in the current scope and see if anything looked wrong. Then I could drag the execution point around in the unit test and step into and out of the code under test. diff --git a/blog/_posts/2022-04-26-programming-throwdown.md b/blog/_posts/2022-04-26-programming-throwdown.md index 7cde0953d..92e08fe3e 100644 --- a/blog/_posts/2022-04-26-programming-throwdown.md +++ b/blog/_posts/2022-04-26-programming-throwdown.md @@ -2,6 +2,7 @@ title: "Earthly on Programming Throwdown" categories: - News +toc: false author: Earthly excerpt: | In this week's episode of Programming Throwdown, Adam from the CoRecursive Podcast joins as a guest co-host to discuss the financial survival of open-source projects. Find out how these projects can thrive and learn about Earthly's recent license change. Don't miss this casual and informative conversation! diff --git a/blog/_posts/2022-05-04-aws-lambda-golang.md b/blog/_posts/2022-05-04-aws-lambda-golang.md index 09a09bc34..09f435c80 100644 --- a/blog/_posts/2022-05-04-aws-lambda-golang.md +++ b/blog/_posts/2022-05-04-aws-lambda-golang.md @@ -2,8 +2,8 @@ title: "AWS Lambda Golang With S3" categories: - Tutorials -toc: true author: Adam +toc: false sidebar: nav: "lambdas" internal-links: diff --git a/blog/_posts/2022-05-17-lambda-grpc.md b/blog/_posts/2022-05-17-lambda-grpc.md index 08c8d7249..060807779 100644 --- a/blog/_posts/2022-05-17-lambda-grpc.md +++ b/blog/_posts/2022-05-17-lambda-grpc.md @@ -26,10 +26,8 @@ However, I can do things close to GRPC on lambda and some of them might be usefu One thing its easy to do is setup a web proxy that runs on lambda and gets requests via API GATEWAY and forwards them on. -
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/9010.png --alt {{ Two of the possible ways a Lambda can proxy to GRPC }} %}
Two of the possible ways a Lambda can proxy to GRPC
-
This would enable making REST requests that ultimately are backed by a GRPC service that your AWS Lambda calls. That GRPC service would be running somewhere else and your lambda code would be proxying requests to it. diff --git a/blog/_posts/2022-06-28-multi-factor-auth.md b/blog/_posts/2022-06-28-multi-factor-auth.md index d5bc35ad6..e2f791778 100644 --- a/blog/_posts/2022-06-28-multi-factor-auth.md +++ b/blog/_posts/2022-06-28-multi-factor-auth.md @@ -16,9 +16,7 @@ last_modified_at: 2023-07-14 This is what I was told. I already had a YubiKey, but I wasn't using it for my AWS credentials and this was not smart. So many AWS accounts get compromised without MFA: -
{% picture {{site.pimages}}{{page.slug}}/2090.png --alt {{ MFA troubles on reddit AWS }} %} -
Previously, I'd had a slightly bad time with YubiKeys: My computer fell and crushed my key. MFA is great until you lose an F. But [Alex](/blog/authors/alex/) gave me a great solution to this problem – securely store the MFA secret key. @@ -37,7 +35,9 @@ So here is what I did. I set up a virtual MFA device in AWS and before adding it to google authenticator on my phone, using the QR code, I grabbed the secret key and stored it somewhere secure. +
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/2220.png --alt {{ MFA In Amazon }} %} +
I stored it in LastPass but it could have been stored on paper in a safe, or in [Earthly Secrets](https://docs.earthly.dev/earthly-cloud/cloud-secrets). This Virtual MFA secret key needs to be treated securely because anyone with it can generate the one-time-passwords that I'm using for multi-factor authentication. diff --git a/blog/_posts/2022-07-02-introduction-pyscript.md b/blog/_posts/2022-07-02-introduction-pyscript.md index bd72acc27..59b43c36d 100644 --- a/blog/_posts/2022-07-02-introduction-pyscript.md +++ b/blog/_posts/2022-07-02-introduction-pyscript.md @@ -16,12 +16,8 @@ last_modified_at: 2023-07-19 --- **The PyScript framework enables Python execution in web browsers. Earthly ensures your PyScript builds are reproducible. [Learn more about Earthly](https://cloud.earthly.dev/login).** -
- Pyscript header image -
- ### Introduction Python is widely used in so many applications, from data science to machine learning, robotics, and artificial intelligence. @@ -68,7 +64,7 @@ In this tutorial, you will be learning how to use PyScript via [the website](htt Create a HTML file and fill the code as you normally would, to display text in your browser. -~~~{.bash caption=">_"} +~~~{.html caption=""} @@ -88,14 +84,14 @@ Create a HTML file and fill the code as you normally would, to display text in y Since you are using PyScript from the pyscript website, all you have to do is include these lines in your HTML before the closing head tag. -~~~{.bash caption=">_"} +~~~{.html caption=""} ~~~ You can now use the CSS and Javascript files from the PyScript repository in your page. -~~~{.bash caption=">_"} +~~~{.html caption=""} @@ -125,7 +121,7 @@ Write Python code in the `` tags and view the code in your browser fo As you use PyScript, you might want to pass variables from your python program to your regular HTML code. PyScript provides a `write` method providing functionality for passing strings. -~~~{.bash caption=">_"} +~~~{.html caption=""}

Testing

@@ -146,7 +142,7 @@ One of the main features of PyScript is that you can use Python files, modules, For modules and libraries in the Python standard library, you can import and use them in the `` tags. -~~~{.bash caption=">_"} +~~~{.py caption=""} import string name = "Human" @@ -158,7 +154,7 @@ PyScript also supports a wide range of modules and libraries that are not part o You can use third-party packages by specifying them in the `` tag and listing the names as shown below. -~~~{.bash caption=">_"} +~~~{.py caption=""} - requests - beautifulsoup4 @@ -178,7 +174,7 @@ Ensure that you do not use the `` tag in the body of your HTML; use abov If you have a Python file or module in that you want to use in your HTML, you can import it by specifying the path as thus. -~~~{.bash caption=">_"} +~~~{.yaml caption=""} - paths: - /main.py @@ -193,7 +189,7 @@ PyScript reads PyScript also provides [functionality for running Python code REPL in browsers](https://pyscript.net/examples/repl.html). To run a Python REPL on your browser, you use the ` tag. -~~~{.bash caption=">_"} +~~~{.html caption=""} ~~~ @@ -207,7 +203,7 @@ The most powerful use of PyScript comes is the ease of image and data visualizat Let's see how a Matplotlib plot in PyScript can be used to visualize data and images in the browser easily. -~~~{.bash caption=">_"} +~~~{.bash caption=""} - numpy - matplotlib diff --git a/blog/_posts/2022-07-02-software-engineering-daily.md b/blog/_posts/2022-07-02-software-engineering-daily.md index 010e88e3f..ac461ec63 100644 --- a/blog/_posts/2022-07-02-software-engineering-daily.md +++ b/blog/_posts/2022-07-02-software-engineering-daily.md @@ -2,6 +2,7 @@ title: "Earthly on Software Engineering Daily" categories: - News +toc: false topcta: false author: Earthly excerpt: | diff --git a/blog/_posts/2022-07-20-podcast-earthly.md b/blog/_posts/2022-07-20-podcast-earthly.md index ee1ca28c0..403a966f4 100644 --- a/blog/_posts/2022-07-20-podcast-earthly.md +++ b/blog/_posts/2022-07-20-podcast-earthly.md @@ -3,6 +3,7 @@ title: "DevX Podcast Interview" categories: - News topcta: false +toc: false author: Earthly excerpt: | In this episode of the DevX podcast, VladAIonescu shares his insights on fixing the CI/CD experience. Join the conversation to discover practical tips for improving your development process and enhancing your workflow. diff --git a/blog/_posts/2022-09-14-aws-networks.md b/blog/_posts/2022-09-14-aws-networks.md index 6b0cfbbe1..1e570367c 100644 --- a/blog/_posts/2022-09-14-aws-networks.md +++ b/blog/_posts/2022-09-14-aws-networks.md @@ -4,7 +4,7 @@ categories: - Tutorials toc: true author: Josh - +toc: false internal-links: - AWS - subnets diff --git a/blog/_posts/2022-11-10-rancher-managing-k8s.md b/blog/_posts/2022-11-10-rancher-managing-k8s.md index 65135af02..0a6d53378 100644 --- a/blog/_posts/2022-11-10-rancher-managing-k8s.md +++ b/blog/_posts/2022-11-10-rancher-managing-k8s.md @@ -5,7 +5,7 @@ categories: toc: true author: Damaso Sanoja editor: Bala Priya C - +toc: false internal-links: - Rancher - Deployment diff --git a/blog/_posts/2022-11-26-portainer-for-docker-container-management.md b/blog/_posts/2022-11-26-portainer-for-docker-container-management.md index 489197440..3e23d69b5 100644 --- a/blog/_posts/2022-11-26-portainer-for-docker-container-management.md +++ b/blog/_posts/2022-11-26-portainer-for-docker-container-management.md @@ -5,7 +5,7 @@ categories: toc: true author: James Walker editor: Bala Priya C - +toc: false internal-links: - Container - Docker diff --git a/blog/_posts/2023-01-09-k8s-cluster-security.md b/blog/_posts/2023-01-09-k8s-cluster-security.md index 9af2e0a0c..280bab3d6 100644 --- a/blog/_posts/2023-01-09-k8s-cluster-security.md +++ b/blog/_posts/2023-01-09-k8s-cluster-security.md @@ -16,9 +16,7 @@ last_modified_at: 2023-07-19 --- **This article provides a clear understanding of Kubernetes security contexts. Earthly strengthens CI pipelines with advanced caching. [Learn more about Earthly](https://cloud.earthly.dev/login).** -
![K8s Security Context]({{site.images}}{{page.slug}}/FB9gnth.png)\ -
When it comes to security in Kubernetes, it is vital to secure the individual resources of the cluster. Pods and containers are considered the core resources running in the [cluster](/blog/kube-bench) and are the fundamental building block of Kubernetes workloads. Applying security to the pod and container layer can have a huge impact on the overall security of your cluster. diff --git a/blog/_posts/2023-02-01-vscode-git.md b/blog/_posts/2023-02-01-vscode-git.md index 716a3297e..c33a9343a 100644 --- a/blog/_posts/2023-02-01-vscode-git.md +++ b/blog/_posts/2023-02-01-vscode-git.md @@ -12,10 +12,8 @@ last_modified_at: 2023-07-19 VS Code is very extensible and you can customize it in a thousand ways using many extensions. -
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/1110.png --alt {{ Tons of Extensions }} %}
Tons of Extensions
-
You can also customize keybindings and even the CSS used to [render VS Code itself](https://itnext.io/easy-enhancements-for-vs-codes-terminal-6dda2c22ee5c). @@ -27,8 +25,10 @@ First, create a new git repository. I'm creating mine in `/Users/adam/sandbox/vs Next, locate your settings.json file by opening it in VS Code (Ctrl-Shift-P or Command-Shift-P) and then use `copy path` to get its disk location. Repeat this same process for keybindings.json. (If you can't find it, its in the same folder.) +
{% picture {{site.pimages}}{{page.slug}}/1440.png --alt {{ VS Code copy path }} %}
VS Code copy path
+
## Copy Over diff --git a/blog/_posts/2023-02-23-new-fundings-at-earthly.md b/blog/_posts/2023-02-23-new-fundings-at-earthly.md index dcaa37af8..e9efb9dd3 100644 --- a/blog/_posts/2023-02-23-new-fundings-at-earthly.md +++ b/blog/_posts/2023-02-23-new-fundings-at-earthly.md @@ -2,7 +2,7 @@ title: "Announcing Earthly's $6.5M Seed+ round" categories: - News -toc: true +toc: false author: Vlad topcta: false internal-links: diff --git a/blog/_posts/2023-02-27-golang-gin-framework.md b/blog/_posts/2023-02-27-golang-gin-framework.md index 3527684df..a21463255 100644 --- a/blog/_posts/2023-02-27-golang-gin-framework.md +++ b/blog/_posts/2023-02-27-golang-gin-framework.md @@ -21,10 +21,7 @@ Go is increasing in popularity for many reasons, from speed to ease of use and s The Gin framework is one of the popular web packages in the Go ecosystem for building web applications. Gin provides most of the functionalities you'll need in a web framework featuring a [martini-like](https://github.com/go-martini/martini) API with high performance and easy error management. -
- ![Untitled]({{site.images}}{{page.slug}}/Untitled.png)\ -
Gin is extendable, and the package provides built-in rendering support for HTML, [JSON](/blog/convert-to-from-json), and XML rendering with documentation support, among many other features. diff --git a/blog/_posts/2023-04-05-soc-type-one.md b/blog/_posts/2023-04-05-soc-type-one.md index cf86ea534..327cceaf1 100644 --- a/blog/_posts/2023-04-05-soc-type-one.md +++ b/blog/_posts/2023-04-05-soc-type-one.md @@ -4,7 +4,6 @@ categories: - News toc: true author: Gavin -topcta: false internal-links: - just an example excerpt: | diff --git a/blog/_posts/2023-04-05-write-for-us-anniversary.md b/blog/_posts/2023-04-05-write-for-us-anniversary.md index 49393e4f0..05897604a 100644 --- a/blog/_posts/2023-04-05-write-for-us-anniversary.md +++ b/blog/_posts/2023-04-05-write-for-us-anniversary.md @@ -4,7 +4,7 @@ categories: - News toc: true author: Josh -topcta: false +topcta: true internal-links: - just an example excerpt: | diff --git a/blog/_posts/2023-05-02-load-testing-using-k6.md b/blog/_posts/2023-05-02-load-testing-using-k6.md index 2f74133e6..ea3831442 100644 --- a/blog/_posts/2023-05-02-load-testing-using-k6.md +++ b/blog/_posts/2023-05-02-load-testing-using-k6.md @@ -5,7 +5,7 @@ categories: toc: true author: Donald Le editor: Bala Priya C - +toc: false internal-links: - Testing - Load Test diff --git a/blog/_posts/2023-05-11-earthly-satellites-ga.md b/blog/_posts/2023-05-11-earthly-satellites-ga.md index 54a080b6b..f463a4ad3 100644 --- a/blog/_posts/2023-05-11-earthly-satellites-ga.md +++ b/blog/_posts/2023-05-11-earthly-satellites-ga.md @@ -4,7 +4,7 @@ categories: - News toc: true author: Gavin -topcta: false +topcta: true internal-links: - just an example excerpt: | diff --git a/blog/_posts/2023-05-24-setup-reverse-proxy-kubernetes-nginx.md b/blog/_posts/2023-05-24-setup-reverse-proxy-kubernetes-nginx.md index 710c1548e..66670aa36 100644 --- a/blog/_posts/2023-05-24-setup-reverse-proxy-kubernetes-nginx.md +++ b/blog/_posts/2023-05-24-setup-reverse-proxy-kubernetes-nginx.md @@ -2,7 +2,7 @@ title: "How to Set Up a Reverse Proxy in Kubernetes" categories: - Tutorials -toc: true +toc: false author: Somtochukwu Uchegbu editor: Mustapha Ahmad Ayodeji diff --git a/blog/_posts/2023-05-26-ci-cd-security-challenges-best-practices.md b/blog/_posts/2023-05-26-ci-cd-security-challenges-best-practices.md index 5360a18e9..584196f78 100644 --- a/blog/_posts/2023-05-26-ci-cd-security-challenges-best-practices.md +++ b/blog/_posts/2023-05-26-ci-cd-security-challenges-best-practices.md @@ -25,9 +25,7 @@ This article will delve into the challenges and risks associated with CI/CD secu ## CI/CD Security Challenges -
![CI/CD Security Challenges]({{site.images}}{{page.slug}}//HOd4O2s.png)\ -
Security is essential in software development, especially in the context of CI/CD. Frequent releases increase the risk of security vulnerabilities, and hackers are always looking for new ways to exploit them. Security threats constantly evolve, so organizations need to integrate security measures throughout the CI/CD pipeline. diff --git a/blog/_posts/2023-05-29-data-pipelines-with-airflow.md b/blog/_posts/2023-05-29-data-pipelines-with-airflow.md index 69e361fc1..2e34ad8e4 100644 --- a/blog/_posts/2023-05-29-data-pipelines-with-airflow.md +++ b/blog/_posts/2023-05-29-data-pipelines-with-airflow.md @@ -2,7 +2,7 @@ title: "Automating Data Pipelines and Workflows Using Apache Airflow" categories: - Tutorials -toc: true +toc: false author: Ansam Yousry editor: Bala Priya C diff --git a/blog/_posts/2023-06-16-cmake-gcc-cross-compile.md b/blog/_posts/2023-06-16-cmake-gcc-cross-compile.md index 525c7ec0d..b0adee793 100644 --- a/blog/_posts/2023-06-16-cmake-gcc-cross-compile.md +++ b/blog/_posts/2023-06-16-cmake-gcc-cross-compile.md @@ -16,6 +16,7 @@ internal-links: excerpt: | Learn how to cross-compile binaries for different architectures using CMake and GCC in this tutorial. Discover the process of building a simple C++ program and then cross-compiling it for ARM64-based devices, along with troubleshooting tips for common issues. last_modified_at: 2023-07-19 + --- **The article provides insights into cross-compiling for ARM64 architectures. Earthly simplifies the process of cross-compilation for those who use CMake. [Learn how](https://cloud.earthly.dev/login).** diff --git a/blog/_posts/2023-06-27-bash-pushd-popd-commands.md b/blog/_posts/2023-06-27-bash-pushd-popd-commands.md index 694d6d939..27ebd5907 100644 --- a/blog/_posts/2023-06-27-bash-pushd-popd-commands.md +++ b/blog/_posts/2023-06-27-bash-pushd-popd-commands.md @@ -2,7 +2,7 @@ title: "Navigating Directories Like a Pro with Bash pushd and popd" categories: - Tutorials -toc: true +toc: false author: Christoph Berger editor: Bala Priya C diff --git a/blog/_posts/2023-07-07-earthly-github-actions.md b/blog/_posts/2023-07-07-earthly-github-actions.md index e26886691..de8fbe1dd 100644 --- a/blog/_posts/2023-07-07-earthly-github-actions.md +++ b/blog/_posts/2023-07-07-earthly-github-actions.md @@ -2,7 +2,7 @@ title: "Better Together - Earthly + Github Actions" categories: - Articles -toc: true +toc: false author: Evan Pease topic: earthly funnel: 3 diff --git a/blog/_posts/2023-08-01-linux-network-commands.md b/blog/_posts/2023-08-01-linux-network-commands.md index bbf13bd72..de66e7bdf 100644 --- a/blog/_posts/2023-08-01-linux-network-commands.md +++ b/blog/_posts/2023-08-01-linux-network-commands.md @@ -35,9 +35,7 @@ Although the [Open Systems Interconnection (OSI)](https://www.cloudflare.com/lea Imagine you want to message a friend who lives far away. To make sure your message reaches them correctly, the internet defines a set of rules and steps your message must follow. The rules here refer to the TCP/IP protocol. -
![TCP/IP protocol stack vs the OSI reference model]({{site.images}}{{page.slug}}/n6vOgde.png) -
The TCP/IP protocol stack consists of four layers, each serving a specific purpose in the transmission of data across a network. Let's clarify each layer in the stack: diff --git a/blog/_posts/2023-09-06-what-is-syslog.md b/blog/_posts/2023-09-06-what-is-syslog.md index 99be5233e..cc15a74c7 100644 --- a/blog/_posts/2023-09-06-what-is-syslog.md +++ b/blog/_posts/2023-09-06-what-is-syslog.md @@ -5,7 +5,7 @@ categories: toc: true author: Felix Kinaro editor: Muhammad Badawy - +toc: false internal-links: - introduction to syslog - what is syslog diff --git a/blog/_posts/2023-09-13-safely-using-bash-eval.md b/blog/_posts/2023-09-13-safely-using-bash-eval.md index 110239ab8..8b7bff622 100644 --- a/blog/_posts/2023-09-13-safely-using-bash-eval.md +++ b/blog/_posts/2023-09-13-safely-using-bash-eval.md @@ -18,9 +18,7 @@ last_modified_at: 2023-10-06 --- **This article discusses the risks associated with using Bash eval. Advanced Bash users can use Earthly to simplify complex build tasks. [Check it out](https://cloud.earthly.dev/login).** -
![Terminal window]({{site.images}}{{page.slug}}/EbrSrlX.png) -
For developers diving into the world of Linux-based systems, understanding the command-line interface (CLI) and mastering Bash scripting is an essential skill set. While graphical user interfaces (GUIs) provide a familiar environment, the command line reigns supreme in terms of automation, system management, and streamlined development workflows. diff --git a/blog/_posts/2023-09-25-deprecation-error-github-action-command.md b/blog/_posts/2023-09-25-deprecation-error-github-action-command.md index 8285120a9..63d9481d2 100644 --- a/blog/_posts/2023-09-25-deprecation-error-github-action-command.md +++ b/blog/_posts/2023-09-25-deprecation-error-github-action-command.md @@ -17,9 +17,7 @@ last_modified_at: 2023-10-06 --- **This article offers tips on staying updated on the latest GitHub Actions changes. Earthly maintains the reproducibility of your builds amidst GitHub Actions' ongoing evolution and command deprecations. [Learn how](https://cloud.earthly.dev/login).** -
![Disabled and Deprecated Workflow Commands Errors and Warnings]({{site.images}}{{page.slug}}/KyJZvzC.png) -
Have you encountered failed GitHub Actions (GA) workflow runs accompanied by the error messages above? Or perhaps you've come across those unsettling warnings displayed in the screenshot? If so, you are probably wondering what these errors meant, how can you resolve them, the purpose of the environment files suggested in the warnings, and why are these actions even being deprecated. diff --git a/blog/_posts/2023-09-28-advanced-git-commands-2.md b/blog/_posts/2023-09-28-advanced-git-commands-2.md index c4ca0fe51..32e34f9cb 100644 --- a/blog/_posts/2023-09-28-advanced-git-commands-2.md +++ b/blog/_posts/2023-09-28-advanced-git-commands-2.md @@ -25,9 +25,7 @@ In this article, we take a look at ten more advanced commands including bisect, [Git remote](https://git-scm.com/docs/git-remote) can be used to list, add, remove, and update remote repositories. Git remote allows you to create shortcuts to remote repositories. These shortcuts are called "remote names". You can use remote names to refer to remote repositories in other Git commands. Think of it as a bookmark to other directories instead of links. The diagram below further explains the git remote. -
![git remote command]({{site.images}}{{page.slug}}/n97KMiO.jpg) -
The diagram above shows two remote connections from `my repo` into the `main` repo and another developer's repo. The remote names for these connections are `main` and `Atello`. Instead of referencing the full URLs of these remote repositories in other Git commands, you can use the remote names `origin` and `Atello`. @@ -38,9 +36,7 @@ To see the remote names of you current repository, use this command: git remote ~~~ -
![Showing remotes names associated with the repository]({{site.images}}{{page.slug}}/x0ODzpJ.png) -
The output shows the remote names associated with season-of_docs repository which are `oyedeletemitope` and `origin` are remote names associated with this repository. diff --git a/blog/_posts/2023-10-09-fish-shell.md b/blog/_posts/2023-10-09-fish-shell.md index 0f720491a..a1662c9e6 100644 --- a/blog/_posts/2023-10-09-fish-shell.md +++ b/blog/_posts/2023-10-09-fish-shell.md @@ -25,9 +25,7 @@ There are other shells as well, and these shells were developed after the bash s 2. `fish` 3. `nushell` -
![Image Credits: Behind 'Hello World' on Linux notes]({{site.images}}{{page.slug}}/lgozFIn.png) -
## Why Learn a New Shell? diff --git a/blog/_posts/2023-10-13-datastreaming-kafka-asyncio.md b/blog/_posts/2023-10-13-datastreaming-kafka-asyncio.md index b7784db3e..bc9a848eb 100644 --- a/blog/_posts/2023-10-13-datastreaming-kafka-asyncio.md +++ b/blog/_posts/2023-10-13-datastreaming-kafka-asyncio.md @@ -25,9 +25,7 @@ Asynchronous programming allows multiple operations to run concurrently, signifi In this tutorial, you will build a data streaming project using Kafka and Asyncio, leveraging the Reddit API to fetch real-time job submissions. You will cover setting up a Kafka cluster, configuring the Reddit API, creating a Kafka producer, processing the data asynchronously, and sending the data to a Kafka topic for downstream processing by a consumer. -
![project-architecture](https://user-images.githubusercontent.com/84702057/264901040-deb53c64-a2c6-4c60-9463-a5156d818308.png) -
## Prerequisites diff --git a/blog/_posts/2023-11-07-create-python-package.md b/blog/_posts/2023-11-07-create-python-package.md index 32ba43cdf..c2b72827d 100644 --- a/blog/_posts/2023-11-07-create-python-package.md +++ b/blog/_posts/2023-11-07-create-python-package.md @@ -14,12 +14,10 @@ Python has a vibrant open source ecosystem and that has been one of the keys to In this 3-part series, we'll cover packaging a simple Python script using setuptools and twine, then an alternative method using poetry, then we will extend what we learn to a C module, and finally we will publish it to PyPI. -
+In this first article, I'll show you how to package your Python code into distributions, and then publish those packages on PyPI (the Python Package Index) using setuptools and twine. **Learning these skills will help you level up your ability to produce professional, sharable Python software.** + {% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/5510.png --alt {{ Our Goal Today is to get this package onto PyPi }} %}
Our Goal Today is to get this package onto PyPi
-
- -In this first article, I'll show you how to package your Python code into distributions, and then publish those packages on PyPI (the Python Package Index) using setuptools and twine. **Learning these skills will help you level up your ability to produce professional, sharable Python software.** ## Merge Lists Code diff --git a/blog/_posts/2023-12-12-future-is-rusty.md b/blog/_posts/2023-12-12-future-is-rusty.md index f90bf1a80..9ece8de60 100644 --- a/blog/_posts/2023-12-12-future-is-rusty.md +++ b/blog/_posts/2023-12-12-future-is-rusty.md @@ -28,10 +28,8 @@ Python, for instance, was a successor to ABC, a language designed explicitly for Why is that? Well, language design is about trade-offs. If a shallow learning curve is the number one goal then things like expressiveness, rigor, performance, and maintainability can suffer. -
{% picture content-wide-nocrop {{site.pimages}}{{page.slug}}/0350.png --alt {{ Values have trade-offs }} %}
Values have trade-offs. Approachability benefits adoption but could harm Reliability.
-
Languages that take a different approach, Rust, Kotlin, Ocaml, or whatever, get a lot of newcomers struggling to learn their language. It can be intimidating and demotivating how slow things go. And that is just going through the beginner parts of learning. The trickier part is the intermediate stage, where you want to build things on your own. diff --git a/blog/_posts/2024-01-12-on-star-history.md b/blog/_posts/2024-01-12-on-star-history.md index c323678e4..617d260da 100644 --- a/blog/_posts/2024-01-12-on-star-history.md +++ b/blog/_posts/2024-01-12-on-star-history.md @@ -2,7 +2,7 @@ title: "Earthly Featured On star-history.com" categories: - News -toc: true +toc: false author: Gavin Johnson internal-links: diff --git a/blog/_posts/2024-03-05-developer-platforms.md b/blog/_posts/2024-03-05-developer-platforms.md index 6e40c6c29..1792639fa 100644 --- a/blog/_posts/2024-03-05-developer-platforms.md +++ b/blog/_posts/2024-03-05-developer-platforms.md @@ -2,7 +2,7 @@ title: "Popular Developer Platforms Compared" categories: - Tutorials -toc: true +toc: false author: Damaso Sanoja internal-links: diff --git a/blog/_posts/2024-03-14-docker-build-cloud.md b/blog/_posts/2024-03-14-docker-build-cloud.md index 3223bfca1..f0b60abde 100644 --- a/blog/_posts/2024-03-14-docker-build-cloud.md +++ b/blog/_posts/2024-03-14-docker-build-cloud.md @@ -2,7 +2,7 @@ title: "Saving an Hour a Day with Docker Build Cloud" categories: - Tutorials -toc: true +toc: false author: Damaso Sanoja internal-links: diff --git a/blog/_posts/2024-03-15-language-style-czar.md b/blog/_posts/2024-03-15-language-style-czar.md index 8e7e65939..c233d047e 100644 --- a/blog/_posts/2024-03-15-language-style-czar.md +++ b/blog/_posts/2024-03-15-language-style-czar.md @@ -8,7 +8,6 @@ sidebar: nav: "thoughts" --- Here is a non-realistic scenario: You are choosing the programming language for what will eventually become something large. Picture a collection of services in a mono repo, with over 100 people working on it. To keep this extra unrealistic, let's say you're ignoring the usual constraints, like whether you can afford GC, or whether the problem fits well with a specific tech stack or whatever. it's a thought experiment. Humor me. - Based on my [previous post](/blog/readability), you'd correctly assume that I would want an expressive language aimed at experts. And I do. But there's a big problem when things scale up in a flexible language. Too many coding styles, too many ways to program. You end up needing style-guides to nail down the right way to do things. Which subset of C++ or Kotlin are you using? Are you using `project.toml` or `requirements.txt`? Your language now has gradual typing with Type Annotations. Do you want to adopt those or not? Are you going to use multi-threading, Tokio, or Async-std for concurrency? diff --git a/blog/assets/images/header.jpg b/blog/assets/images/header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1b85b5ce87b411babc114c41dff7fa921e766fb GIT binary patch literal 33883 zcmeFZbySqy+b}wI0-}_p5+V)KjUwWJfOLbz&@gllpgsZuf|3dXQqmnmqf!DA(lEe) zba%t>?Vs{x3f1GumdnwG^v+rwP`|29rK9`lmxk`E!0)gN_pFUQAK(1Ls zAZNQTUj%n5$liB>U$w4EYW50xPIs(r;YOwwusilH*04J;XHz2x#JS({`EMNYyO;Nz z`~tnm83RXW-DFB1*0cHDE1ajJq_4Skxo39!G7>lNCM{tzxAB9gVU5lI1SjAG(!RcQ z^*2YprpV_{&i9K5n15W06s`-4#Zw7rR@z~2-(@Cui}RE0W}`U>Zxfu^`TWFz^kv13 zD^pNqzYObu!-2hI?OJ33Edy)dEA#K)gKE=W`{!rjX1%(zb>`2^pTsF@It&{_ zf$#EgG1cON@WRlUN9m1R`D|xQN@0cyP>u*)!gJY6H2>h&+z9)m9vhO#B~;%d?CxIS zzskI5=Nb53gZ=jKt+%%_tki1AYB-}*qE|(1K8C@ZV+uc&&(PGLHEX*g=&>ZaHJGXXInqAl74*wNZINia z*b8D4Ud!Fx-Xave*TL=L_A-pdwU7I>6@6XQlHb~RtZfFnLWPHIFOeY9n!M+pdPF|T zy<8sqn|J)>h~^9H=K0M0ppHv-q_vaaUa!Sp#6RwvrCg+(nx98=Mq@l6HOjX2XYvVl zfZ(~B0s&K#c_v^0w`A2bgzLjtoh^YFf=fu$*;>!Q9A<`!;JYWGUSnOP^?Dd>ktn6s8AdX->hS?d|np)eN z!maLLVe09_9qfgvsln%WPVlp|mXSFHZ)JB(1waorXFY2+4pw$HOG~!@e8SFN!Vv&D zM(DqN!cGb3DVqY!4(?!U0F!WpS=rP4CkRQX%=1$S*drO6T3R0-3J~wVY-VV1y3X3c z*5YuDp#dAr0%i$-+5!AH{>yrMQ=`Ac`Y*U)KRG6>!P~h+-mp%s#nHQ+FS@o@2S za`OELD5#a4y`Gf;3=0YXXEgmcoQC`y z?7W6Y*kJh}@bEcQnEC-L`yuedJI^ij?2X{ImcrCBdIopo6#ssrWNHahwAaH@jf01m zkC%&=hmVJyhnJV@!QVwHFk3qyaaf=n?5vzzho2Z42s{BG^?>A2 zMF5-zP*x8sr~vZeeQ+27aa)+4J=|6a4!01d#-ery3-a`18K6&wdiHvc_3U9_H}(gd z0_>au9GprV+yY#D0_@x@?7RZ(|FIr!Xlms0f43T|J$HnTc>dJX4(#u8c%lVojZqGA)se)bObv+N0{Luo&eU-M+PQ(R>m-3K91$}DBMZFT1{{Ei zMp$tIKlC{`SoHJ^xmh^%`8hd_xOok@c)9;8bUV0_y_23T?4dEBBcK(K&qG?>xqrk$ zhX1(eSVOi` zb9hWNtl{}TcpWq2|KJV)^uL?@kLdd^x&9^B|A+$rqs9M9*T3ZYA5q|cwD@1?`hSgF zSN|qdFe?xSIe~O(|B`MyNVP8NOG`e6T!mbNTrau-Apm!-SU**_0~LW=*#BoBk)KJx z%}e%B8Hr1i=WvMFFVyymFhC%8AkfDTm7M$M2HgU*dJw(K=ue-b`*@w8tg#v*5z_M1 z3=N?ck_0m9a*fdI^rjTG*+q^@TyG36;gAxf9OS(I8ut2|lx4Em?;2T*3Fi4N+B1KM zZ+^kIkW%{b^i_%vtl{~3JZ*dY)3>1|*(LkpJeICb;bRLcbHA2W&-jik`DqYxOTcyjEsrMd2g?%qhMJ-W)uQxV?94`@|cWC7L#_X z$dEqjjXN2{YlCJOTSCEJCXej2r(HLeiBPf)@4#LteCu;ZpFpgiG!`H>>f^tUc5GgP zc&X5zJ~SLa-LcU}rTDr&c@Yl+$&~$ubNo!(d5`j&>*aO+e~e>9(aZ6sb!Q-7EIl?B z7pB)kSdSNhUt$+kPNA6?n7*uUg}d!Yp-umH#4R(_hL=}SvK@8)E`jGDVr4f@(c_9M z$+8#Tb@sO;Ua z&srVB_qxZ`6P9I61<#!i9k>keqd3J6Vw{M@oS9Te1mOud>TvoHq~-nt%h-JmZfEx$ z43LPKzY+n!e!5(I<}daS{xTliG^9Rd4|w_M;Oo7=n?oR8 z&;H#Ikm%_8m!v0@_*ZEDRf|(u_*X4XN%5~OJq=g@P5yOHe+A=T2mF^7|ArX*{Z>LCfgiP*;oAh)%{7@^Y8<8iGvcNj5N{=Nco45{*oDJ{XZZ7u zszYsfR5;5FKeHzK7Sog6XGa-pTl-P$^esb*f`MmVooGC8B|b({(utqdtzJxNcd!1{ zAtqz6M7>v3Qgl@xfy$hH%T7K-g@V40fadVr(<|`lz~wCe+qT z71C=aDw-17)p_`jKuI5i!pS6=_8+G~$T-L%m;?>>1tTIsx(=={bXN{jDX-gM=1INQ z)$J)tQL~mcp$Y*5IYQwX3tZ46KuyOv7AI*RCjo*fiZhtiDNKJ9r->$>UH)i^^zo98 zwamEynMHLH%7xn}h@LoOUHDj+yYxvax&3khg=aV2gcQTX`s(+u^IOuGsF ziae&r+Z`v%#_A=7Y~k=JtDV(n47DpCVo3T2%&}D!kfDX&JxcUiQr1=Un*%W^1wYfe z$IbY8s+@k-92puG@uTeTbFO54C9Q$aB)O~qLdLkMDmYYud9af#ofUcYsKnA%ek26eSJKxVYx>PE z#t(E+!U@9#6)Z|UOhW~N8;*z`8GMxWvg$DvZPc#F41Q49J>RO`l$N`C&RpiGw9yuN z4C`&$MySEsS3>-x4UJ5JB!cv8t()f}96lKyV*h3ODDxh^87hUJfXwjI@Jtfc)#cY8 zt6+*xNVmv4M*k=W_mXZ~X|Bk1b<@?Xs!NJ+sP)U-zjst;Fkw8(wu@_&1e$V}wVUD< z%omZDnzWNhhPX+z&nbt1@&dTHaE{2XrQoMln8|k0yNo)ivpbtBiQsj0p;~20eZf)9 zN9LH*5$`oTC9mrWlY}j-&@HF(yd3Dp9|}C zZDI@o^&sqyZ#oA%G>fleU$wf#pI$>t$TP+(Nx?-`q~xU- zs3jirQzubn^2^8gg|^FW$Rs@#6_}@%NK`5pjsf*C&Uz*Vzj%TVQt+UNc2t$9@@>C; z`s|<`O-28eemT)qh4MWrjB#iEy#ZhBju7j&=|>jF`pQ(wlXWDly_3t1P07pn0@Z_>+tF8+c@>oT*Tpm-NEG-M~T znG~VpN37$lCp+ob)e`-?YY;Kin%y(YA;LpcFZbD3RTshSu~ki_voxtyXr^p2P`n)f zYh-K7nOwmBeqDWit82LyYkih>S-ci&YcblcRhZZZk1A%p_uRR2xt6FR?@>JAwdVov z-pRO?XJ@k&Sq+j>P*89#Y|iDk)-h%O!W8BscEdQhxH_%(rhX?Z_ZkGn_Hb+D8_8G< z3J5fDfA-zq-Q2A{RE&?u^`C;0z$9^es;wUU=)vU`XTQbR`|(xb@do&>Ca5jnHS`jO z{h9rsupjSPsaX3$NR>)El(61YLyDoX$KvgG&s=&P%|)=s(9leJ#u7_Bla;NT z&dqgReaHJJx1KTx?mkMkjJG*ReCyV&NrwQGRRy=lq!VUT;!|~kWKf-t$leF%?eYAB zyAp6X+qK-ksI)o5Vx+UA~~`#6*Cr}bVzrv=}GWl2v!3WVsvwdK9lRyj9!Lql53 zQVd(ow{PD9b_WrglcSyo+p&`JTsq%9T4RKlr{xf7BU>ZYKBHfw;QZO<_C4BFlvR$C z(Kz*Z@m)nBA4*v^YfJG`K#CCGOT*vL_Rzu>I8MUFO?r zw!c+|7v|;yq+mO`c%e<>YP>?^(&5aXY^q*f42tEZ*B;D|aY`U85)>3PaCYVkXVVoK zb=LLNO$;@{DL$CV#t4XbZVuw8-k_qS3}njcC6W_b9^+p~U+6``b+6;$@w&GVFO<|% zv12v$+vhN?Lz`}*OOftvuo5UpQ|j6(w6SOCmmHM*k&!6bjJ3V-<9(0ic+VJK|2St; zGwn`Av&ij~HT&99H_==28{Kn{?ng9odjI51?K1n_)m3ORslgcbCwkG{*nNLi*FVU8 zt6Dx&MP~S{+jy9&{sCs!7|}A19Q0@z)pDE9A~CxWEcv+Hb?mA8E(-1V9jo+S{Hw^r zh^4L047smBUN*7g8~gSnl`Cg$Q!nMdNWS*Z&&%=WswzHX<=^W6K>&Gd z1o{<~Tm1c6r@BR7*EF8V@w^IwLZC<9}A&boyY1KdmiKkWRetQNoWn*|FyFjM>7KnUu$qY>RJO zSjz`zFV_+>3GkbA^}`i_ymjKWXf5$b6E4wFJT9f!br$MgG{` z6+=JcK;q>9G zhYi~7EV!X&Fm5xc$$!`|f7sZZt0rSTF|T5DQs%iCYW_-3$^H5x$H`_7otAJ=jOX zoe$>v3z@7cr@!8=udl27ldikp!M9xZ_IABorOSgM=h1gX`;^X8ZE?;cZ;17q!dW~7BSx71@EPRdBT6F2#{<5ye;^v=B zq=)lFZm5F2gG1fYQt8$&V~pK^YZD7+jCrb(-#aqiU(N&PF5%X^#uMpX8rpt`-g3e@ zx3Ijt479Y0yj6H}fLWJKq99$|2e)>!aX%4U4#Bcll4 zqCs>9UhQV`lY|%zgF(Mg1*Hhqw@sKGr@>;or8vC({s5Z=i*QzLQW_eXYp#^HZiU#a zjHU89%+OcK#t7Y(48q)@be)PTp3U+ks}H0wFFsHf%r@gwA*c%xe~qBf_h0w$k!HE)wheE3tFnrTxyWmUqT{x0iX z5>@Z~M1>gd!k}Q&KKm*{h>ME=m0kW|)}?Zz-+Xy21Z~MzsaNe9;)3tK8in>#OqS&) zubMB?Ocvhw9pquy?Kb1Nzf4t@bBM#Mqbx=&D#dDuNb;Z=E*UzpQG`A~6cQxgBbpwQ z?)u0qLL~89G(r`5R_4Bfp|YG{-yDWJ zME@N7?1xD-jR%-~{MSqq?!LzK3htZhYN5)-G}L|tcfa}x6PKf%D~Jw+T*M!TYC7%+ z6yZvuE1e$GB3HIky3FL$RgB36J@%Z*1syHwfQWXQ6{aXLs<&=#EswsNtW3~<#1@?G zu`WjzsGQzayxO8GoR63nT3w|jwP(V znMGL=_@UeuFLUnQxO10`_LE`J;_B`>sKkT2S3*8LbFOMx<{R4<+2z!2ZP;FNu8h1V z8xpvDapoOPcv|Er;h&BBhBB(X*MkSYlh&#A6U8uBwcm0*Aa9^t|Kya_UXMG@?)0rQ zHTgaRLuzv#pt2dN$P#~cqv5Bo8nUcl6CqWjIeM#>3|<~5?6&ckIo7S2+tz)jT)-?Hcy~Y4cG(`+{?f0{{E9J`d95R? zhBA;tJ8m_lz*Q>i=urAQe^$#GUiXDAG%aiLQ*UJq#Bh zkQ?0RkGrZ~=Z(l^>0(_2_eQ^xug;@ntRU$sK)0>g$ze6(CB$pCuwBWZ>nEkPwnBFM9DZGBT1n zJl3wIk5ts7d}VbN#f-Gnq+-#@h>Rp90uvF~ORV$8VU`A7-uy_?2Qi-b9&EQGE-Oj0R7_d3#$16w*ma7y)#wa z@ZK*k*n5p!Vnq<4A7WalDd~$W`r>iOcmSg~5Zq_ghJ=x7GGc%+tnnhYHEG*3T z4)K6^rQAJfAJgWH`NKouTfHfRm584!_oM|$-vzwgml?PuKF~psNB_jVjzn7UkwK@v z3rxL&{+p$GcyJxT{Y`Z1h_&SV;NbYqf`ZGFKkg6X-M?}9=j5t{)@W#_6445uyrLbu z7sa$TkI^p^ZHKO~71s*OnB=@X3XrtmT)T3F$epyyC({F07^nZSNh?_}4^D9NXx`LG zO8WZ3eZoi`_f19<>{&NHtSB*U$vO-r?lxYj5uUVmEt$#mIjc`O4oDli-+zCNy1qcg zXDvoZNEn=0S6An2d7VO|&0ykIP!+9>(3SINHHzFnnVFlTm={sVY+1gMe|VZKP%1Vy zxs8pDYEO^QfyhgoG}51n1%}%5TkU5(O1(YUT_5v438xS+$UIz}uswB0f73%y##~&{ zP`zTaCkh(!=F~r*GonH2l@p9ZO=6Dr6t;{#9;q=mk8ueIlA>@x2i4E^%T~Qq$~uk-Cbi zYBIGPSMAYiyL_DU1pW3p4FXQ;yD3)z;3G@F&XkI@}ck ziEpXBdHnKiZ5KSpUAOYlOdSe|*GE}Uu*c#p1=cGTqE;Ho|JL27F1+k>g&6Zi_8TBfrcxXA;_vFVXl zbb~W`AAbZ%G-;$&Xe{OK&jJ`f?3YVkp+eDynVd-|=`*8@uav6cFb0RAKB@gGyv~9m zX1%)kbyseawl4`H5m8a7q#~c|ls7s4A;a|{ynd06qTGR>2HRk&zMdVsW%= za@{+MbRUnU_YXKZQ5X@j1a9+g+FwHxJDamTag+NVRUQYs z#M?nfWg>`|)x%SXyc2_Y-RZt8#K7-}98h_~l9?HHF;NPiRb)Y>u2JQu*4^0c1jl}H z7!}_1d~0zzbY^p^x!VHX1g?fTo z$J)Bv!gSjzh&?;L%0#Jw*{8#6@D=2!jt6-!7R{mD%!R8Yot%U~$q655dEHISv9$1FIp zFUTyd;_5eM|5R_cSmZ!9Sy3mOSASd5UsPbOwbr~l#q$7TDI#b$F`dUOT}O^WUtV$+ z!iR5L$*HS+0;R@n?C`*wnQCThgD~Z6m`m7FFSfBx2F1d399Gf=u!Jbx?m| z4&Dd*1j$Rw9*mlFKe^EGBb>1bQo_yb!tz1vL8LHX2Qw_OYZGWwlj-&wbz*e-|utJa;U3 zEYJpB1RHaN;x?sP^Xb;f{^ro>9Vo#dSguwgHCkwc$_=iLKZS~9wH~aQc8pm+#uPes z5dY|{t*yIV*zT+aXa?;_f z@(6^m|53RY@&#pm?o_g#eUShGqC{Y7J}ihN`J>Jyic40~q{F#}>cJmEX&FeGFxtV@ z!L-r}-mku93;F$i*Ie}BAiC?pC3nE7g*`1gyoL|((JaaeW4DdD>9*$f*&g_mJ&IV{ zUaxGtxw+YAe_Kra^`p4=LX@o^+-4ok|J1zg&o`EP)klkZJNY zuadI$tFh^3-Uno`l7M!taPrt|X>N4f_3>^#A397CM8n~mC&v%o25g_lp zDRQBS@qn8=S$x{~nZjy!#e?t9g9Z!7n{sIZ{mJ_}3cyL|_!>$TC5RQuU@6@=69&O z9u^+H^59s@y+#R6iG1b_qf^=7NS);y~H`wgea#JYvK0lm<% zQ2WPEQNg*F7;a=K1g96FN|8((3Q=d9TnY>J(s3f1lHO#qy+_Sk z<+o%ahthN_md>(0IF<-LS^U$OP-)cdTBzNGM4HHIybhmW0;WNLx*Xvv9jvL46Xm+; zOp6L8w+t5`z>WQqGpfi>ac_r{_X&$M545sKyjC_sdWhqV8AEpXqmj{xa$Wo1Z}R#} zHr#u2^hkLu)ROzx?zsUnIX*kH0QhP)-7eQT;J#I{#9df8gU;5Ca(EKNs-U70J~K1p z{Nb3_-)w$NFQf5i16&t(mOL&yz>pYim$x}Yie{N$LMNB6}7@{0& zR?M@bo38zLn;M<khdD& zjU+50)GC!%u^XOh)d&y1INqpfzc=t>e%U#G$OxqQI}>a3;mhHnq1f1%IabIeuUsel znD>x+s?)gSm3d#ePQxPW`?JkgL~bQ8M`UtEbd8Y8SG+;#8I}kreplerx`QHj3m70t z5UUlrAk8Geq2tpoOG!6c;JSaC>Ve@?4SITxWd| z9ZQUz#>QUcKBo%&wxxH4ZR?#vBa(iNYam?ytE8;}Gk-?ln_$4z_|B@;d=yf!A880( zN#p0*`N$^9`|``9S;wD4=*|)jw~#QzkkTg|j~e6FNNl7gNOAQI!R7PR7z04vQWqDO z`JzGPuCA_~rGy|uYVyE=0j=gp{*X=LBRl{iTFl3S_I~S;Lzfh$wt7W)kEtQ#^Lx9W z4w_Q)Kj6&K!R@r%l+u&9G{|($k@;5D`D~)HM-71*>e?yr0C^MR!aXvlR3;}=`pHSg zk}t7)u&{~^cR79+zX2Cw#|MwLD6$Ub}{3j^Z+n2cg*b>UO-qgtzy_ zOzkq2xaTR&xyFWuCO`hUVk;1R)u+0=<`~IgzDFkk*c4qP@xDx-CjweXJamWu=B#Js zWKrTTS{k3OLYp$$61odzy;b!cg-aU`an(mgf)gGpq;wR%j?2*y(PB#HZ>z1fW3c>T zeIb1Y#=Gk_-nS6)n_i!lH@0pY!g&-REtCJDK&JJ-LjgyprZ-JO>bJq zYNrrV(>~kp?qp#rO1!?+0|;iUt>cI(-059f`8d z0?!FV<%BPcfq_8^3Y`zPi3kl%ai47Q9UrZG*Wq<$-^JzBQh1+4eQo~#FfxTMPfjL^ zNxur{P04OjiEI+^Cd zrNf(2JE1fnc<|c|6o_tVee^qem%beb1xkL(2bg`D@Q83L6$y#mGYcTQMV5Koo}M1e zBch`tD@34pK3(>S|MEpl{36~+ZP$lIWD{LbJq;2yIO3UM;GTTUQZXl++~eAS7~9RO zj5$-;jY9iqB~grFs?Q~o!EpI3dVy+tj}5ux9Ve(?`%V65RBx*H$E@ey+piHg0e@-& zg?4tg_pvE5B>1G*)J_yHOoOJ}`tUhC`_dsrInm5{6cX7t^#1M#@s{=Vbu&;1M$Su6 zdGuOs7u$@kwUjMBL9qN7$w^B~Gei}Aw%n6B<5L|sLgOv%IoajFWjFCl-qEqh0<~Zr z%}Z1nr<|^u?|h8BEBUF(U>jvaWpwf$+$WTIFVrCHnxW3hz<(79r?Qcqdzg0w2PI#S*Ei2)p-NdIz@IN{&-+Yqw1Yw9P?WLnKECjN~8g7}soz2E*y4XS~ zEQ_Rr(W}c>&<=n~)azDPtze4vYmFfU*WX2O%%i_qBF_`_7AvZVODnlK6%RHFZAw?n z2$cRtZ9gas@zKF3$8RI6e~uKy4?Nco zh_(hF`0VVsDl02XFgulKk#ZVcXJa{LC|}@dQOK3yfSxL4Q7{`SS%M=#IS`)d0SzCU ziqVx9pesQ!AccafXR`X#um0oH#AAuRK#A+!ndcrtP*j%WeE8(pm_14;JX`Iz)wZ&#PQ$fp$2bJioO)cHUziSe zy7__j>L)O+`|7rQnO5_3%9cLG(N-PrM&`xa32-+BsRgm7S3ULFcBR#9Umi0Z&Q$u? zEAmg2Btwgxj9r~ z_#oE2%rnL+LP72}ld+lYqgdStRAza3x$k%#$%WV7aSIEF*LzSn^17~lNrOB=AVyA) zi@U4u0s@_j*GazprNAxL@MB!2Y9Bp(gGMNS>S$Hj?+u}C@|(2=tWXLf4AJ9rSRz{3 zX+8MG(5J#|Rg^=U)QCIzQ;+-S&!7K1GTW{vyMLJbDW?ysfDP{OrL?<&8 zH-R9CR+3qK?o5ex(^wHH;r+p+uT^XjU2WuL6?kuy_v<$aG6Hq(ch5VT4}W`UTQ(?9 zF$)GEI@{ZAds{!tCVS&jFfu**QnaG*X%ubSHXd-X_85ga{a)HnS7br``& znWC<4Hi%6VHiWH*#Xz|6m^nK$Q`yqe(q}UG)2GydfdOnmuRD-JkYHh~c{d!Env=u+ zhg4ZrHNCR3a*#(sL4nJ9_?z#zpyQkg=bh-!pEJ&!yZCe3{>l6^pqPcXFSj-{$b+g) zltW}xR3T`_%Vtv?i-i5flZ;}RZ}@4e($;cSip!7A;&V70hMFo`b;B(U!J>V4t1M|z;e@zNJi!*4MOT_0Jb7pkYKY2v_o1VRF#H3jg&`SD z6UiHgC3M}>aE?o}o**N86l`HImS_2fmOmiVD;K62uCV*HX(ocOV`=N*ldL+T3p|U# zG`O=1jg9Y_p<3g|4jdvD^bO}^*jxX{%2x)5mLvs7^w!#<4U>!32d(XW1JXY{abM=b zvVV?<-dN=)Gw59Ut-+nu`|HfHH-&uhvCcVpt^eK1O2MRq@y)B3#cS}h54V{%ewtmW zvudgP$*M^hu~bC6?WB5Z=xBxz4D9)wmZb08W4?XC(K5siO{soQ_le1kt&Q1_qTj3P^&w^rL| zQC8@sS~Vp#7}G3Ke~EA)7dUy?mE^=9K=d1Ri_{&vVv5({yRXd{bm+^-;AfEUJ|s9M z&()=UY;6TO#+lg2rj5otoJ%Jv<3)KI`*?lKo6C8{B%<^aeG|!1Fqajqt&Osrj}r5L z21_OXKJl@&xwl9|$|()zgyVDa4LvVP-;>zM>*KYa#gJ|mf6W6G_QY@sK|);b(&YVp zH`t6*ov~$9WLL3kI=NQm$)jRHk58ggF|G4F*&(TY#7N9Mf;(?hMWSlZTFq#cTD>l? zIwQbcy1U8BY{ct?-EHEhdFKscJ0ekyF-LYPAP7q2faGie^+@S-16D4UEXlI`E*4SIoKNMV3lfj433R@ z>+?Hb&QWDdyg1#w`tRnvUrV4H6Wn=cFu~W%!+pYQEl@3V_;Uz^F*b~QN2)bl+&m5-geRa2N)SH z_UoyKmoWKXv|&&)^_{>UEX_7#;yGVs;}G21S&K`^r`&>ub7FIs;HVY&Q0nlI2JUhD z27JTS>y%N&obPsFei1);mP;P?UqxND=!?riqmyC~%EQD@)Isdk zos*W!7fF-8N~oi<#J~<-R~M6#ddKt)7e12r3GQza`Tl9O)VwsLPKTPDgq)D;{hiYT zPu<>YZZCS5SN*-%9{x!0P0`}}EB57{D3VVs{;)^Qxm4L4D~oBNRpoy9$0i&icJ@@W zzSJ*8z&~s#+3yg|nOvEND>*yCd}0cLe0w0Z3Q?n+D!Ta_2X+)bCtB%sUi?(Pg7h@p zuZ9yzJKnc4Sb`5^ya-vGGQhcD$k^S`JJO5SUPK6Dw78uoxF^C1x$;*pDCvsLqcZZE zZD!H97YWs>QumDmJ}9f+rRXJFT?XPc;3U>e<|w5Xb?y}HSAWqq=6E6#i&1p^MwNU< z?W$@ILylXvg+V{1{{1`YX88oTH6HeL_jA$}UPkVJCOl#F%^Rnz77nUXkL#jp>K(yS z?e4bI!iOv8QH)_`jY*{|#Q`j8sFZWkytYqH9)0@!Bp!mSJ^h~7oR`k{r@JaORXN2L zjgPbj>a0`=c$`;VL@J`ebnCi}*nj(^qhi8bCfx%}I52>Z^tj=uyXoV0NNd!Sz)b1! zCEi-tGfca-Szm5M^$DlN&eHsql04=H-69Fc^%xqf?}2?JxLk}m#z@)*Am7zGpLVo4 zsC+n{#Dx=adz5~7eG1^!UjUO=cL-V4Sp*3JIv~s!q>38Ry|lNk{#42cxl)UHVr@Xi zojvsR8|F#NiHt(71fI$_B}-1(v%vY~GMD~;eq6QerBxkdH9Z*W-Gm4H=-M4emurSw z^4&N&HZ33VNo4;;lC#J?T|}jE7~j@eQ6F7FcY!ILz(k8pGDlVqC9-8_0LoY}+FM1i z+t4DGhM&Dp!uhx04elFr#v`*igFBo}PaU`NH|APnLOw9LFXeMwLRt1{W{Nd?v>bQG zz+am43JZ>`3u8Ii{^a+KbGRo_+{rBnME~{4q5j^hxqK=cr#F31(}L4mkQ=9g@!xxQ zo}6mq=}obK)A;rDo)^if0H5B2aGX{X{@&C7=l|yj#^1({uO0ne04!PlpHZ{sv~l^{ zp}9+Sb^`@B-?sy^3eCuYcrfHZVTVd?`Ise1>GC)nR*0GVeu=7GbjYI&HMu^=xytQ0 zr?$QC5zRjdhBke~uX#`9HL>-i$R~tGg(R%4*_RAj0dsZvd}mwRm$Wp-Ox-G-D$ivJ zQ08(<8FWIsXhNaTw5+Ud31Z#$q+G-SX3@0eGe08>OIH=z-cD=c%o?qn=(?TENA`zt z&!6TS#eN?+*4;Jd6Qkp0HQ`w1unmit{!O*N^${g-u(yhL4Ngc9)g0lmbpL6ho9BrG@AU zixhOq0<|+bC}_@r(E?Q{^es(?_Ja=zyw^m5&Vs# z{^;*7I8}A{g{AYIR6e{$aZi-?&c%zMoSWY&AbsGxJI{)=X=>(WprLtPJ9m+He^;nE zT2PfTNV3RswnI*|t6FqVFN#-w@jg=z`oPATijD6;XwbSEXQn4Rc4uQg9qu`+X)8e4 zwM(^^uUW@$-pvecpXo|>s}btX*3Hfya7E#Z%7K(RMV=Z$UWxna@>EJ{#`aSva>;NYii`XysJn&eb z?(n$){z&AcPQq+A9Y=Z%0J|uoB}A^fJPOjw{FX|T?iCG3i95e3hRT&lEFZrR7bL01Zw_}s-UTY z*mT>pyYU-_C%Pw|l$4ZrV!>~EpLYC8TPK>M#y5BApayjT@=|_C>G@|E=5i*A>u^;i zrJQ1U_JS9_S*0_K{L!*+9^I{2`f-f{SC~pcxlj&Wyr~0nDQNJ@%F0?73Ldnh##Xgw z3l@UTgPAxK`l!WVzSLo-8(Eb=AM36F64LiD^+;~>@X8e`q&3NJ7-5-{x#F~uCF9^P zeXKZw>*?jcdI73sQqt0NP*74SbzB%=Ewo#fAa0npmkRdt_gC+|zrE8_l?7x8+U`T; zk%HdG)Up;Ts;XwAfiyj+dm8*zE_P@<$3s&=p&ZLHI_P56fya-Q(f1L$F3PP!s{vf5awJIF-8pfq^%qW31TkLC0u%Y!$yCK;$JBRkZ_!H$kX-iM9*BPrN5SyBKxWxsKxS-WL|u1|~ytAS3$e z>Q;FVab+By$d*{}*t)AjGqBX|n60?py5I9(^!SY6`HmwFPj;ZA%DneL$Bt5wW{rI#{~yirJo2 zR@J5IDnVQCJ785?h%yMAAG72mI@MFPZ5h=XBLwqfEgp6Uy?6$Iu}-$?_ZQEB?w2{v zV+rj1*m+y+SG3zZt*qBo)Y?TBpMdZMmNXZd_n3iHKR7Wy{uOs6!X}bdw zf2!`yax!=u*c+>@ot;YR;dEe@094|D8<5Se+)3jJwV3PNOIX%+-T1UkD(IL2dbdgG zS(RVcCwb9pi;*ITQcx!P0v-(u4V_{_4iWY2?<^ja%7L26Rqscog4=NE zMOSzC4A6f%C@J^Kd2KKS%gD%x?Whe{Awfj};FAo>PqW*)`%(@LKC#uDtsgTz1s8>I zsCb?MdA2RlTG`!C%gE>i-?v!r>{zAo*wioC97M1lsR88irN8D6NIRG%uqe@D)pqPl za$Sm}vM*lvrJk=L>RI4ylf1J(Gmpgj10^Y`Mtm4+1h(5Q4+h1!^lL6hyUtt}2Ey-p z@Y?eUtYvcm5y4tIMGce`5F9k(^If;YR8j65Zs`3$qvl9ZLAUE|1#>K*Bo!7Noq6Tf zy{XT3Ex%i1+!dGvZ|lRGK$@{wXWz`o|=Z;8^y%3Xk;FHIwmL+}qc8gARMr_C|K zng_cbu`?lZBJUamUjW~i`EqKzRVY0q`Ppyaa+6-YdPNf>BPXZo>RJlwWEr10jm<`W zyvZCHO_MU zCZph0+JF^4!V$pA0;c1Tay?Cs^(dwE+`Ce-iP;TKjNRLkj1+K4V{Q`2kd>1111%+G zHMJCA4Q4(_Qg-EyH;oo;F7utF$)%?m(2aB16&sO8EuR@cr5~6L$KoMyW`U7>YXfod z*E;UYwYWVMtAW`weoR@wCIV5=D6vff-{i>ZN>@!!ZAg|+cwz>6xdPi`A>6KOCgWpc zQi*{wnwJY?HUi;@7&e|UO^*Kh{0<% zH>x1JV+;Ld_SDC7gdF9+2#xFAMnH>dviv#9{Vwklg! z8QhKCba2U%6T*Cy6_}=lV*7*ZZQ`PB{SLGJ?i+EJs7!E(vefgRpfN2@;5cXv9Tk=Swr=e-1bJdP z%pfSJsk__Xv$hT&AnV{q+tgEFx!Rqjoi6FQMiYj(`@THYK3@l6`BGNc!Fyr9jyE(U zB!S;fHMn-`$tXUUhrbeL@m>UAaH}FSu5iou(_>jA9{&|>@Q{+|-vnLgtQ z^SR#K#@5yz7UVz%7#4#)+pH8`cCA0oE=^)jBO!eQ;CnJ-Tlq!dkAecF&4JZ* z-;w#ge509y4%rY|%l-l=(sMnq`qdlVwcb&=slpze-HdFZL7RHjvU1|sDrj+DUS567 zCo*_3w(j0v=9CRc_7KYwc-3lF07r0QL1!l`lGAE{4+^>o+xU9JY&)&H7-=v&WtkZf z_UU&1wvn;1`PR}1HutauyZJ&EC$WQG!Yfk=VDcvzrd~Sy>Ka$Ui>J@3q`~x3=9yuc zD4ywXO{?FCgLSm)bdYDecknxH+^ss-s+HACjP&%9Rhaecpv!R2p$@rLRX*}?TA5D| zBs{8gMYq0J&o6Z3S8Yj{M+3Y3c6ta&AG3HePd0yAl&JZct+Q3=E)tvg`tEdR!avGv zWotKqEqfa5IM*8&MC3UzQu!p1oB@h;@{78A;yyFLV?cv<)}|B6%LineE%%CZT~~}n z&F7tJ{Rm4(TLhJJ-JEI!e5{B!clTZQmg@yOTMdFl<3I~mI@svf$KT@>Po<^d`vYL2 z$)NRDXKDv66qt18xJer>5Y1q-kItkWFfIxL%Me-+a5$v2fQXb93g{jwupaucnVXJI z0<2t}Y+YWrUIIi+R)BKg4|;=<0mi;!dEP;Hf5(Db0t?f-g@|3pinV&t z!rfm$HMrV?&pq@Tl<*qRuGC%WI4^Ga;_~^<1vYf z>ei7|thNZ2&Mvr(t#V6dgoK6lk#6YZ8@=n!(nOD7M7D;{K`)(qr>g4!i`e)vD`T|} znkNG^txYZm8wa7WqR+vkxGVTh*DXg%3jE9GX&r>W&D)e|if#guiaTIk5_Y-`P=9Cc z?9xXDAYOUnOagm*9jlY+xw-P~RaWCc<4%C0P#_j~@jM64^F57W=>ls5afRWDf4b5I zl_tNvJQtieW(fba0d&vfRQIS(LmY41!LN+aAh(01U&sD}(=F0cB& zDcx}e9u*o4eEs@79I=|>fZ3SP#M0NkXK-^Wv+6+j>!>!;N;^4bb33vS%-um1syz0O zH7nL*C$%x&deyOf(|kNFjKVc5X)v_?v1m}I#unzn;3L{o%ev#ZNQz^ zqPJ~YK+rL?uw@b0HUDWR)8#)w36&Rfhu91Ph*)-Vs#_^{Hq*Llqtk9RRV+6AH3)X6 z6Brg)`#u@tmIYdYEg&3b(X9OAYy9=uC+g`J_m{Fg_h&gaKZS**avHUEU!ni}r4q5r z$jKyqd;0cF2fa9uvOMN=#rZ+IP3_XDcz-YgONi?OQx7M{^#Q?al0Tb9rmC)Ho7Mi@ z95XbyX}tZ%n`|c+9iYGetGz1?Yx>UCI$ou>YOQtDQUt~d(vAW}5M)bgacQK2O9e4N zs6i+qI|&3Z*y?D-0&N)CLZB+(21Hqm0g|W{5g}nugpdSFNC*J}fe;7@nG=-WnGg5F z{dk{;eBt@Cgyj6s?>*-6L6L44v3Y(;kbc!-o7S&NF3a=Iaie(U2?3S(@; z=25J22#+yy^CsBpU|EM3kIy`hCMOF7B1c3>^SB@^HVf2eP)|j7Il7x=+R()xf!+hCAKf&K)eR~X2keVA5c=6cF5xKcZHA&-y%#(n%+cLSKu6qixXAsDB^LbBp|?y#*RZ4>YY7BMW=1R znVH6L3+&PQzw8~byL^U)=Ls~K=typXbDTralV$Kv#p2+Nn>O8h@Zd;Q2)l#rBq~cw zd*2|t@}Ae;y|XIb_0zw;-y{u(NeFqj{~ zeBHX@hYO$|J%L8w2lDQOkI&i8(qp=TQ5sIKX7X<=Q{Q+HarkgL%-e+~DRk=Vq(8b> zvyuRRRv1bjeZ4wR5F_RFhVLVF_4SoiaS&FLNB;lsilCt-0=X zyFX(^VR(^inaZ^0>tr&>uy14Z5+^8xGGI>V8B0` zfKMr?^l7Uw0ShA6Z=o!P{|PA<8_ZM7Zr=P9)nOc3(Edq32NINAJFJC)%4^jR|HGz6KXfbe zY};>pNfy8nLJ2<%n-IFlQH+h(`SG*}eyNdJ$`MG(=gyU}lax~L;W@R43b*!f!JeZu zfo3Bp%X=Kwy z7W>wJS{Qr*hf^(B1(9-6F2%{Y`^yE8xVATXW>?P>rpxjSrFdFennV215pXF0fni~? z!f@iMZv+njLKGCFbcI6ISXsHtwVGCx13^zSJ4rjDzN9#IbIiAFf3kw#iRQf10JWi= zPrl3d{x%($_=e{a-G9L%tn1EEQ0iZ|2yj*Raz7l>sN}9&xO4SXZKHMhn^EwX^XfWL zw?Lf|V9QdTt=r1X=rh}CTHi3o5p6_Cbr4aB}`fD$iG8HejF6< zLdhp+WHCJ#k@`W~g}C$i@zT$B?^fmZdZH%ILe@$uj^0zYa&@30-ejOLy&I^$Ge5Uu z^cvbF%E5yh|GFkjcWq62dU_JoB+7>frTg$3bHq(~1#2%1PX2^f2(3|vyuEqAaes6j z0j0C+RG;iNZoXxmsY|sg4u`{KYHTcri47hOknJ*5{_m0w#>zh+rFzK4upoG3K^@y*HA8$uv#ke7wQ#Jwxq$45p|on&hhC zu{uTMBpp&$ZYyBp*wmIN`s{WAUhW&;Q<4);(D_#Qch?$$rp&;hC~~JKft&aB@$r#s zfkuw6O>eekfvVdRT*Gks4EYD{cNK5P=Q4d&g5qf)4`O22?dn5L;u|&&cwayY#6^hLvxzgD-XH@0)?KkVSuXdno zI9II-emRcR-7WaytT@CpwUwbBtZcRkpId%)1!8`JR?h_9$O6@vfu1fpIR@i_WLzJp zBWW|A%uUHUr?qT~Q`GIGZ2VMxZ`P>uTzXihdchIvi{7rC2{NKX1XOC|R4YGLoHC{{ z<7;XlgJjW))TfLUxhLP}jtUvcq~O6<*Yk8wS{>)kM~(C{$}5 z1bA`l#E)VT$uB~v$XGGCZkhx15SgQLYA$>gK@(&H)Re$PsWFnM-9+&ut%-24z-T&H z!D>N*H_1&ibSsa*6QEOULNiUsFn(^IIzL$yCoiYf@a3_B6Gv|bBR2r3Q5Scm}?(3f?kw`3>j1c2L_$M`4 zMiF#eKCz%AwFgH(m}y2=rtOFw|LvkMhOxnW&(?t#6v_vtF2V37=qfIn#@`ZIA9J?U zi;@q8Rd7xKz6rKz6dG3J@B&;di;xLlWwE^(hOj+06;}Q;~ zt|<;=dTbb;zYi70Hi!(IqX*3 z*#S~UEh1(7)WWLvCmEAqh%-RU7+w^gH}6s`{6rtuS-mAyJ0Sz+CuwTvSBR~_!g>Os z|A(SMndEj=s)%Xq@cj`WhYN^0O$kWJX8|_z0SP3}H+X+@8{Zd{>2XuV1#S(O6lP&RKP#s%ggq-<~In$8pg~ehsoF%z^2yD_O8~s5jEi4&_5mKE7y4?z7@@8IAN3?O2#*QT8(e`&a8&Q9C7 zV^`3Zdc&9?yu|N6F)^9!zql^Ma1Weg#oJp|WFDqSUcqn#)-?(yGYcSX;St2Y9#nR9 zdQ&lV`U_hK;`PQbqJrl~&@AM)22Gf%(FFgvP>6}o>wB*yV5dzwg=2;a`2CZEpd{HK zFnmV9vP9O~RSHi&a17-XJi0LVkIjKE7qBTjFiGY+siI=?5a%_;4)ZpAO_4G}SO*%i`4CV^iK>m>cZk!;fIFD9$Dw`Xw zRV7Z`LXifWF)a-_{-o5}@n?WHCE%RKh?K<3>&%%?RX)@}iot8pqWRW@Gn<-oSh-aH z6cnNsqezidcXm)QtdT0UPzEg=^y|j}CuRQhT`=A8Rbh&J)hfX!#Zsi6K&%?MJBp~A3vKlx6(o;cni}b`H`n$X z*@KV&3>b8=ks46v2(?aAakEv_xQbjVC}2$Y?zmkLdk8|(Kf!B*q1j>LAIdHBo7JTH zUk8-OR&i84p+(I={_l$UIV34DI6*TB7?6eX9hB*8LocG8+w3~-?C z`kAADMsSvwRaKsDNYe_2vIN!qr#%BNBoBW7z_Yc`y%U&}ky?3$9}qA;<)^M2z{miG z^07J*UJ>>3yDO&o_FhPLC^}HINI?fZPFnrwkz_Cj!vS>w1v(3%Z*F29na%;M9;zf7 zDJ(tB!_iXcetBusiXxcS7C#;k^_9%E*kN~_dwo;}{g~PWMd9Vkm&;Do{2hw(Lr^YW z?Tcxo_*KTsk~Mz4g_FI;Cpf~Q1!k`e@ouSqf55cYdfSkNZG83mkw3P*OTi6a?!4Ri z`1V_${l}{R|HD;B+v^g!9I>e0gJ-*tP-Ob=pDB>`AD=L=boJKY%a$!!V#yLqUa;r` zOO{x&guwz!sJQ3{OO{x&#L{_K^noQyELp-}fhAO2^n)c!ELr0J*Lj%H<3|_tSwX+B zR6Fq-4=&!oWl#1kZX_~%EBC#{sbIs^hCe?~5iWv0U0mL1_|Z526>0eL_Hp6r;vAdd h`iu4d&OvNnzVhbklfOM};2M60+V8cm;;Wz^{{=1.6)", "pytest-mypy-plugins"] tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] -[[package]] -name = "cachetools" -version = "5.3.2" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, - {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, -] - [[package]] name = "cattrs" version = "23.2.3" @@ -195,79 +75,15 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] -[[package]] -name = "cffi" -version = "1.16.0" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, -] - -[package.dependencies] -pycparser = "*" - [[package]] name = "charset-normalizer" version = "3.3.2" @@ -367,6 +183,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -378,51 +208,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "cryptography" -version = "41.0.7" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, - {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, - {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, - {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, -] - -[package.dependencies] -cffi = ">=1.12" - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - [[package]] name = "diskcache" version = "5.6.3" @@ -446,173 +231,79 @@ files = [ ] [[package]] -name = "frozenlist" -version = "1.4.1" -description = "A list-like structure which implements collections.abc.MutableSequence" +name = "fastapi" +version = "0.110.0" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, -] - -[[package]] -name = "gptcache" -version = "0.1.43" -description = "GPTCache, a powerful caching library that can be used to speed up and lower the cost of chat applications that rely on the LLM service. GPTCache works as a memcache for AIGC applications, similar to how Redis works for traditional applications." -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "gptcache-0.1.43-py3-none-any.whl", hash = "sha256:9c557ec9cc14428942a0ebf1c838520dc6d2be801d67bb6964807043fc2feaf5"}, - {file = "gptcache-0.1.43.tar.gz", hash = "sha256:cebe7ec5e32a3347bf839e933a34e67c7fcae620deaa7cb8c6d7d276c8686f1a"}, + {file = "fastapi-0.110.0-py3-none-any.whl", hash = "sha256:87a1f6fb632a218222c5984be540055346a8f5d8a68e8f6fb647b1dc9934de4b"}, + {file = "fastapi-0.110.0.tar.gz", hash = "sha256:266775f0dcc95af9d3ef39bad55cff525329a931d5fd51930aadd4f428bf7ff3"}, ] [package.dependencies] -cachetools = "*" -numpy = "*" -requests = "*" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.36.3,<0.37.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "guidance" -version = "0.1.10" +version = "0.1.13" description = "A guidance language for controlling large language models." optional = false python-versions = ">=3.8" files = [ - {file = "guidance-0.1.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533b8c185ca81e838cb5c8bb44c076c7be7b7af91b4a2c0907ee6abbd62161bc"}, - {file = "guidance-0.1.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e13e16cc8fe0957f6d48bb1aa58ae5d36429d9d625c1c1bdc304afa3dd0938d0"}, - {file = "guidance-0.1.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabe39779fb1dc7707965879afae3f9167de522c5e17e2efc9abd4e552396c1c"}, - {file = "guidance-0.1.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:449798a3d9b9eeea58fa561a5b98094ba2fcfd6fee9c08a04d22f2b380482e2f"}, - {file = "guidance-0.1.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df64622e71d40fc054b0ccfa49f0fa6399d740679e3493b6227e4020473f96a1"}, - {file = "guidance-0.1.10-cp310-cp310-win32.whl", hash = "sha256:5118cbdd9ccc489c5d3c456c3e138ffc4327584375d55b9ece15fa9b10f9c4a2"}, - {file = "guidance-0.1.10-cp310-cp310-win_amd64.whl", hash = "sha256:00803c9f70a3f70fd80314f746348981a92cd581a76de8ae1f591c0d0b6bb512"}, - {file = "guidance-0.1.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b3d890a5f935a5cd6ba714a5a0fe6559f56d65e0378fd33fbe90cf4507ee6cfa"}, - {file = "guidance-0.1.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f03ed0b1e86b0d6e011538d43bce67ed3c53784871c99019860d7b27631d89f"}, - {file = "guidance-0.1.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004aba30b5f02ebe20c35e358baaf5459eefb10889a7126df523118cc95c1396"}, - {file = "guidance-0.1.10-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:544a3e25f917e865a862046fd51f840644f0cf72326d3af3838bd256f151dee1"}, - {file = "guidance-0.1.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e9baff5c27926dcb617f4a5259115e494995ca5f0a7a368b2506e05a3e1c0b9"}, - {file = "guidance-0.1.10-cp311-cp311-win32.whl", hash = "sha256:b8c6e4ae6e838670e2d6a48249b999a20b1de4d222b629ed9e2ee36025fb8814"}, - {file = "guidance-0.1.10-cp311-cp311-win_amd64.whl", hash = "sha256:165f4e430179c75f6fa1ab9880bd10c76d2305210e7317883882f65d7b73bd57"}, - {file = "guidance-0.1.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e47f810c8723f80101acb102e842b29afa5601943cc299d699d99fa2d4483185"}, - {file = "guidance-0.1.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4aba5e7c6c56975ffdfa817a94ea4079b755ae0262f1ffb77eef65d192f8faec"}, - {file = "guidance-0.1.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfe93227c9c42a415518acf7d66109b8575ab1e5d4fb3315b459d3b98a4ba98d"}, - {file = "guidance-0.1.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:17e4371e57785b8a6c5b238091085a3a08f1b0059789d565cfe6b442b0784dea"}, - {file = "guidance-0.1.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:326653e895015e3cef36e0936951898f58a52a4e35973c3434570c657c7fd37b"}, - {file = "guidance-0.1.10-cp38-cp38-win32.whl", hash = "sha256:a6813064e50679746be727ac70888397e70c68a3950d64a25e9e8137cc97eb18"}, - {file = "guidance-0.1.10-cp38-cp38-win_amd64.whl", hash = "sha256:f635e813b73de88eaab4d4e88a281b02cc65661eac882b5727c061527ac49aad"}, - {file = "guidance-0.1.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e0d69784b769e20ecc64e89bed59d2f0e21977a6ef55a29adcbb86d063c2d11"}, - {file = "guidance-0.1.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f88254d3340298ba75fd0def7842771f0cc23955a87f0bf77e407c4360a3e5d"}, - {file = "guidance-0.1.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c4a8b3ff3d13409b194d6021b97df56e14c14f28c9107177cfe0d8242bb4da2"}, - {file = "guidance-0.1.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:65c1234c26fef2bad79776ecd508ee344cc91de90acaf676900f11d24b0f24a3"}, - {file = "guidance-0.1.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edac3a0d48e54091fd91038ae8cdd1e071471ea3e4a81de64ea61864d25aa9d9"}, - {file = "guidance-0.1.10-cp39-cp39-win32.whl", hash = "sha256:6ce02899342245ee86f300ecb934f207cbfca867f68f7dc2c74ab17b76d4fe38"}, - {file = "guidance-0.1.10-cp39-cp39-win_amd64.whl", hash = "sha256:fd6b3ac2e725978b9d932e828eb8d955683518976508aedc4ba1a640aed15f90"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6b428a3738dc5caff326f6c54526d5ea740c00b69245a6afdee05b703169618b"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:958f20e34d6db1b67fea56dd2e1be5463531cc3889f130ace1ea8fc2f1a72796"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb0f052ecba795a494f0d7207909f4853c06960715960ff4f03c3a9afdf4a0b"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c42e5643c035bae6484cad3cc45591186f3f84fe9e42461eab046811c44dc17e"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:12d856520d692315b2118433aab024382e08e4b389da7145cbe86772789a665f"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31f1f200915213cbbc9380775d66052ebc95b2bad39509fb3edcb74e8b4bc8d4"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de137da50a25f6004a61aea44f0401e9ee6d86c412d152eda202e5b6f6dba6b2"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4118b6dea6c6e79ca19a6e4251d388264f85bc2bc4b045ebaff8c8e2f52b1eb6"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f6ed612929b2b174aabca87f3cc3d05ca881d572703de091d0fdaab0d7c060"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9bbd795982c767aa7671514883d0f9279a1efc5186e913e52f1d94e98053d68"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03f2075002a0a92eb4eb0cfdf5051f3a03bdf36d1953a6a5d658af633ecea27e"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0a36068fef8c5a7285937ff7f4dca83b68b94bf8cb1e37709ee20e08c11a497e"}, - {file = "guidance-0.1.10.tar.gz", hash = "sha256:104c014f739ba671fdd38b76746d8238dc97775678db805c4a9fd04b5ea2bde7"}, + {file = "guidance-0.1.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0644f6996b0901de80cb38db00eb4562e23e7b0d04a8096d069f8d0de996f07"}, + {file = "guidance-0.1.13-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7783cbf08cfa35157616e7f822bff7f163fada2dee76c3d55d4f6dd9b01de2"}, + {file = "guidance-0.1.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89fb74439947d9fcf27da06d09e830841679202e831530e9efd0a3c00d79a8de"}, + {file = "guidance-0.1.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:260451d8acbb2f0120e22df3c63a10e8dcb2d87f56c70a70cf5675779fb2fd6d"}, + {file = "guidance-0.1.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ce4c1196db806c615bf45d9a813d7fd4fdf28a4ec6ad71cd6a754718f01a7825"}, + {file = "guidance-0.1.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:770d74133f6014b84712de2e91ef4a385aafd68d9d6fcff4ee6ac0337ab5ae9f"}, + {file = "guidance-0.1.13-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4bcb1cd2089cb4c7e9dff46560473bf71215bd9a7ee1f58a7c7cffa2fa4803"}, + {file = "guidance-0.1.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e19a1969ba073db8b2fa8ef16d4d9fca15101e4109662c11a09e322f29edcc50"}, + {file = "guidance-0.1.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2a1f9e747433dd8345a6420a89d3f2d6262554a37df5a20cc0a7933a0b4dfdde"}, + {file = "guidance-0.1.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45ebc16b5b120e8d7c043d7fe9047b6766391e8b8009fc23a7f7a55f4fb27d67"}, + {file = "guidance-0.1.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1251ff5364b5b4a588921dc5cac9296c032b0c988098145023122db1d5eb1bf8"}, + {file = "guidance-0.1.13-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:352b08b6c5dbb4d4f4de2b6235e984fe22869dade8f81287ffa783dbbd68ba7e"}, + {file = "guidance-0.1.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d2bf949b1745850f4243195632a8d1bd38c66dd62be8457e0ce01dc38841d89"}, + {file = "guidance-0.1.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d1eb00e6176a3b28839c861c496ca273e43112408a56c10a7612b169f48b88ad"}, + {file = "guidance-0.1.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e667392d0d014bc47bb247c4b7a34d59fa3a56f8efd0cc41a5ce21705c6c3367"}, + {file = "guidance-0.1.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d73dda705ac0bcb18fd392f961f335b434d9ebfb74a864afa79ad9abcbf913c"}, + {file = "guidance-0.1.13-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3577ffbe2a48c02ebc0947b281b32d0c60ec8f828f0d30a30a97b1139556e250"}, + {file = "guidance-0.1.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a0a21a95c94714383b4a08319b29c6096cd867be22566a9a0087fc612ea33"}, + {file = "guidance-0.1.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9b94e4ca5f852cf97b2b2fa010d6fc16b3990b0d7e454d22f12f910abab1e8bb"}, + {file = "guidance-0.1.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0385718b2a2d1e1198b88fa154e1b2e9fd7b31361a129f3e454a5772b4b26249"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6d1a927ededbcc9dd54b1542a86ba38ca37068ebeba9a99008ef11864df33285"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aac2cb2bd03435e397a0916db96ae9a70daa54bb4ec4536c7079e3beb194d835"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0fd340affc9a21c7c34444ad45c1bcfb1879b6d03633beba90a3681cd0f61cd"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb767d66204f1deb26091f5fd50e03e2e9d5fa2a85719891f2ee5b0ab27c7b1e"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb9de8e46b4dbc79d144cc25b50b48124a18782467c4ababbfd868cd6380eb8"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:712150468b407e00f96d3beffc6c1bdc5f7b52c17c40c01db4c552e1848113b1"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9dccd8a0cb6c855817a475c4bfcb82b63ead4a42c7ead6581f6586a907226db8"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea5dc2f19b5a137ca171d498595e9cc402ecb2d9127afb381dabb3fd7faa8953"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7129dfcfcfed0e9e94ae864f0383b9f7dcacacc118a28da6a32681418fbb5b9c"}, + {file = "guidance-0.1.13.tar.gz", hash = "sha256:acf6ffccbca85eb5f0c358f7f715586bf3e540703f55739e42f43bf7d2eb5627"}, ] [package.dependencies] -aiohttp = "*" diskcache = "*" -gptcache = "*" -msal = "*" +fastapi = "*" numpy = "*" openai = ">=1.0" ordered-set = "*" platformdirs = "*" +protobuf = "*" pyformlang = "*" requests = "*" tiktoken = ">=0.3" +uvicorn = "*" [package.extras] docs = ["ipython", "nbsphinx", "numpydoc", "sphinx", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov", "torch", "transformers"] +test = ["jsonschema", "pytest", "pytest-cov", "torch", "transformers"] [[package]] name = "h11" @@ -627,13 +318,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -644,17 +335,17 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpx" -version = "0.26.0" +version = "0.27.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, - {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, ] [package.dependencies] @@ -682,105 +373,14 @@ files = [ ] [[package]] -name = "msal" -version = "1.26.0" -description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." -optional = false -python-versions = ">=2.7" -files = [ - {file = "msal-1.26.0-py2.py3-none-any.whl", hash = "sha256:be77ba6a8f49c9ff598bbcdc5dfcf1c9842f3044300109af738e8c3e371065b5"}, - {file = "msal-1.26.0.tar.gz", hash = "sha256:224756079fe338be838737682b49f8ebc20a87c1c5eeaf590daae4532b83de15"}, -] - -[package.dependencies] -cryptography = ">=0.6,<44" -PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} -requests = ">=2.0.0,<3" - -[package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.14)"] - -[[package]] -name = "multidict" -version = "6.0.4" -description = "multidict implementation" +name = "joblib" +version = "1.3.2" +description = "Lightweight pipelining with Python functions" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, + {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, ] [[package]] @@ -803,58 +403,58 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.26.3" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, - {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, - {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, - {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, - {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, - {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, - {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, - {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, - {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, - {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, - {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] name = "openai" -version = "1.7.1" +version = "1.14.3" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.7.1-py3-none-any.whl", hash = "sha256:e52ad7ea015331edc584e6e9c98741c819d7ffbbd2ecc50bf1f55c33f9cb3f77"}, - {file = "openai-1.7.1.tar.gz", hash = "sha256:7556e6aa30e20254b1ad68de49bb5ef4d8106bfac5e8a78abdc1daa911fbb1fb"}, + {file = "openai-1.14.3-py3-none-any.whl", hash = "sha256:7a465994a7ccf677a110c6cc2ef9d86229bad42c060b585b67049aa749f3b774"}, + {file = "openai-1.14.3.tar.gz", hash = "sha256:37b514e9c0ff45383ec9b242abd0f7859b1080d4b54b61393ed341ecad1b8eb9"}, ] [package.dependencies] @@ -885,18 +485,18 @@ dev = ["black", "mypy", "pytest"] [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "portalocker" @@ -917,6 +517,26 @@ docs = ["sphinx (>=1.7.1)"] redis = ["redis"] tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"] +[[package]] +name = "protobuf" +version = "5.26.0" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "protobuf-5.26.0-cp310-abi3-win32.whl", hash = "sha256:f9ecc8eb6f18037e0cbf43256db0325d4723f429bca7ef5cd358b7c29d65f628"}, + {file = "protobuf-5.26.0-cp310-abi3-win_amd64.whl", hash = "sha256:dfd29f6eb34107dccf289a93d44fb6b131e68888d090b784b691775ac84e8213"}, + {file = "protobuf-5.26.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:7e47c57303466c867374a17b2b5e99c5a7c8b72a94118e2f28efb599f19b4069"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e184175276edc222e2d5e314a72521e10049938a9a4961fe4bea9b25d073c03f"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:6ee9d1aa02f951c5ce10bf8c6cfb7604133773038e33f913183c8b5201350600"}, + {file = "protobuf-5.26.0-cp38-cp38-win32.whl", hash = "sha256:2c334550e1cb4efac5c8a3987384bf13a4334abaf5ab59e40479e7b70ecd6b19"}, + {file = "protobuf-5.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:8eef61a90631c21b06b4f492a27e199a269827f046de3bb68b61aa84fcf50905"}, + {file = "protobuf-5.26.0-cp39-cp39-win32.whl", hash = "sha256:ca825f4eecb8c342d2ec581e6a5ad1ad1a47bededaecd768e0d3451ae4aaac2b"}, + {file = "protobuf-5.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:efd4f5894c50bd76cbcfdd668cd941021333861ed0f441c78a83d8254a01cc9f"}, + {file = "protobuf-5.26.0-py3-none-any.whl", hash = "sha256:a49b6c5359bf34fb7bf965bf21abfab4476e4527d822ab5289ee3bf73f291159"}, + {file = "protobuf-5.26.0.tar.gz", hash = "sha256:82f5870d74c99addfe4152777bdf8168244b9cf0ac65f8eccf045ddfa9d80d9b"}, +] + [[package]] name = "psupport" version = "0.1.0" @@ -933,36 +553,26 @@ portalocker = "^2.8.2" python-dotenv = "^1.0.0" pyyaml = "^6.0.1" requests-cache = "^1.1.1" +scikit-learn = "^1.4.1.post1" [package.source] type = "directory" url = "util/psupport" -[[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] - [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.4" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, + {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.3" typing-extensions = ">=4.6.1" [package.extras] @@ -970,116 +580,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.3" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, + {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, + {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, + {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, + {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, + {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, + {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, + {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, + {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, + {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, + {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, + {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, + {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, + {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, ] [package.dependencies] @@ -1106,13 +690,13 @@ tests = ["black", "chardet", "tox"] [[package]] name = "pyformlang" -version = "1.0.4" +version = "1.0.9" description = "A python framework for formal grammars" optional = false python-versions = "*" files = [ - {file = "pyformlang-1.0.4-py3-none-any.whl", hash = "sha256:19bd167f0ac15c4d204274c85f889d690e106e43cb4094e926a12f6288dc4b2d"}, - {file = "pyformlang-1.0.4.tar.gz", hash = "sha256:cac5fa73cab6e9b710caae8680a04ac53769d348fee32a5bde680cd9ca82981b"}, + {file = "pyformlang-1.0.9-py3-none-any.whl", hash = "sha256:d64dc2ce35cf22b4aa34ccfeedb52dab357bcd29201a83e08e610b127f336b91"}, + {file = "pyformlang-1.0.9.tar.gz", hash = "sha256:a02c18338c90d4a619a42eef5697874880c7d90f77d0902e4c3abd99db3dce87"}, ] [package.dependencies] @@ -1120,35 +704,15 @@ networkx = "*" numpy = "*" pydot = "*" -[[package]] -name = "pyjwt" -version = "2.8.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, -] - -[package.dependencies] -cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -1156,13 +720,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1216,6 +780,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1375,13 +940,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-cache" -version = "1.1.1" +version = "1.2.0" description = "A persistent cache for python requests" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8" files = [ - {file = "requests_cache-1.1.1-py3-none-any.whl", hash = "sha256:c8420cf096f3aafde13c374979c21844752e2694ffd8710e6764685bb577ac90"}, - {file = "requests_cache-1.1.1.tar.gz", hash = "sha256:764f93d3fa860be72125a568c2cc8eafb151cf29b4dc2515433a56ee657e1c60"}, + {file = "requests_cache-1.2.0-py3-none-any.whl", hash = "sha256:490324301bf0cb924ff4e6324bd2613453e7e1f847353928b08adb0fdfb7f722"}, + {file = "requests_cache-1.2.0.tar.gz", hash = "sha256:db1c709ca343cc1cd5b6c8b1a5387298eceed02306a6040760db538c885e3838"}, ] [package.dependencies] @@ -1393,15 +958,99 @@ url-normalize = ">=1.4" urllib3 = ">=1.25.5" [package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=5.4)", "redis (>=3)", "ujson (>=5.4)"] +all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.6)"] +docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] json = ["ujson (>=5.4)"] mongodb = ["pymongo (>=3)"] redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=5.4)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "scikit-learn" +version = "1.4.1.post1" +description = "A set of python modules for machine learning and data mining" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5,<2.0" +scipy = ">=1.6.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] + +[[package]] +name = "scipy" +version = "1.12.0" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<1.29.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "six" @@ -1416,87 +1065,104 @@ files = [ [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] -name = "tiktoken" -version = "0.5.2" -description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" +name = "starlette" +version = "0.36.3" +description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "tiktoken-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c4e654282ef05ec1bd06ead22141a9a1687991cef2c6a81bdd1284301abc71d"}, - {file = "tiktoken-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b3134aa24319f42c27718c6967f3c1916a38a715a0fa73d33717ba121231307"}, - {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6092e6e77730929c8c6a51bb0d7cfdf1b72b63c4d033d6258d1f2ee81052e9e5"}, - {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ad8ae2a747622efae75837abba59be6c15a8f31b4ac3c6156bc56ec7a8e631"}, - {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51cba7c8711afa0b885445f0637f0fcc366740798c40b981f08c5f984e02c9d1"}, - {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3d8c7d2c9313f8e92e987d585ee2ba0f7c40a0de84f4805b093b634f792124f5"}, - {file = "tiktoken-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:692eca18c5fd8d1e0dde767f895c17686faaa102f37640e884eecb6854e7cca7"}, - {file = "tiktoken-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:138d173abbf1ec75863ad68ca289d4da30caa3245f3c8d4bfb274c4d629a2f77"}, - {file = "tiktoken-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7388fdd684690973fdc450b47dfd24d7f0cbe658f58a576169baef5ae4658607"}, - {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a114391790113bcff670c70c24e166a841f7ea8f47ee2fe0e71e08b49d0bf2d4"}, - {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca96f001e69f6859dd52926d950cfcc610480e920e576183497ab954e645e6ac"}, - {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:15fed1dd88e30dfadcdd8e53a8927f04e1f6f81ad08a5ca824858a593ab476c7"}, - {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f8e692db5756f7ea8cb0cfca34638316dcf0841fb8469de8ed7f6a015ba0b0"}, - {file = "tiktoken-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:bcae1c4c92df2ffc4fe9f475bf8148dbb0ee2404743168bbeb9dcc4b79dc1fdd"}, - {file = "tiktoken-0.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b76a1e17d4eb4357d00f0622d9a48ffbb23401dcf36f9716d9bd9c8e79d421aa"}, - {file = "tiktoken-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01d8b171bb5df4035580bc26d4f5339a6fd58d06f069091899d4a798ea279d3e"}, - {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42adf7d4fb1ed8de6e0ff2e794a6a15005f056a0d83d22d1d6755a39bffd9e7f"}, - {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3f894dbe0adb44609f3d532b8ea10820d61fdcb288b325a458dfc60fefb7db"}, - {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58ccfddb4e62f0df974e8f7e34a667981d9bb553a811256e617731bf1d007d19"}, - {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58902a8bad2de4268c2a701f1c844d22bfa3cbcc485b10e8e3e28a050179330b"}, - {file = "tiktoken-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e39257826d0647fcac403d8fa0a474b30d02ec8ffc012cfaf13083e9b5e82c5"}, - {file = "tiktoken-0.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bde3b0fbf09a23072d39c1ede0e0821f759b4fa254a5f00078909158e90ae1f"}, - {file = "tiktoken-0.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ddee082dcf1231ccf3a591d234935e6acf3e82ee28521fe99af9630bc8d2a60"}, - {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35c057a6a4e777b5966a7540481a75a31429fc1cb4c9da87b71c8b75b5143037"}, - {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c4a049b87e28f1dc60509f8eb7790bc8d11f9a70d99b9dd18dfdd81a084ffe6"}, - {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5bf5ce759089f4f6521ea6ed89d8f988f7b396e9f4afb503b945f5c949c6bec2"}, - {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0c964f554af1a96884e01188f480dad3fc224c4bbcf7af75d4b74c4b74ae0125"}, - {file = "tiktoken-0.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:368dd5726d2e8788e47ea04f32e20f72a2012a8a67af5b0b003d1e059f1d30a3"}, - {file = "tiktoken-0.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a2deef9115b8cd55536c0a02c0203512f8deb2447f41585e6d929a0b878a0dd2"}, - {file = "tiktoken-0.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ed7d380195affbf886e2f8b92b14edfe13f4768ff5fc8de315adba5b773815e"}, - {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76fce01309c8140ffe15eb34ded2bb94789614b7d1d09e206838fc173776a18"}, - {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60a5654d6a2e2d152637dd9a880b4482267dfc8a86ccf3ab1cec31a8c76bfae8"}, - {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41d4d3228e051b779245a8ddd21d4336f8975563e92375662f42d05a19bdff41"}, - {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c1cdec2c92fcde8c17a50814b525ae6a88e8e5b02030dc120b76e11db93f13"}, - {file = "tiktoken-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:84ddb36faedb448a50b246e13d1b6ee3437f60b7169b723a4b2abad75e914f3e"}, - {file = "tiktoken-0.5.2.tar.gz", hash = "sha256:f54c581f134a8ea96ce2023ab221d4d4d81ab614efa0b2fbce926387deb56c80"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] -regex = ">=2022.1.18" -requests = ">=2.26.0" +anyio = ">=3.4.0,<5" [package.extras] -blobfile = ["blobfile (>=2)"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" +name = "threadpoolctl" +version = "3.4.0" +description = "threadpoolctl" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.8" files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, + {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, + {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, ] +[[package]] +name = "tiktoken" +version = "0.6.0" +description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"}, + {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"}, + {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"}, + {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"}, + {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"}, + {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"}, + {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"}, + {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"}, + {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"}, + {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"}, + {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"}, + {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"}, + {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"}, + {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"}, + {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"}, + {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"}, + {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"}, + {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"}, + {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"}, + {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"}, + {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"}, + {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"}, + {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"}, + {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"}, + {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"}, + {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"}, + {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"}, + {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"}, + {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"}, + {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"}, + {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"}, + {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"}, + {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"}, + {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"}, + {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"}, + {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"}, +] + +[package.dependencies] +regex = ">=2022.1.18" +requests = ">=2.26.0" + +[package.extras] +blobfile = ["blobfile (>=2)"] + [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -1510,13 +1176,13 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] @@ -1535,137 +1201,50 @@ six = "*" [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] -name = "vulture" -version = "2.10" -description = "Find dead code" +name = "uvicorn" +version = "0.29.0" +description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.8" files = [ - {file = "vulture-2.10-py2.py3-none-any.whl", hash = "sha256:568a4176db7468d0157817ae3bb1847a19f1ddc629849af487f9d3b279bff77d"}, - {file = "vulture-2.10.tar.gz", hash = "sha256:2a5c3160bffba77595b6e6dfcc412016bd2a09cd4b66cdf7fbba913684899f6f"}, + {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, + {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, ] [package.dependencies] -toml = "*" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] -name = "yarl" -version = "1.9.4" -description = "Yet another URL library" +name = "vulture" +version = "2.11" +description = "Find dead code" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "vulture-2.11-py2.py3-none-any.whl", hash = "sha256:12d745f7710ffbf6aeb8279ba9068a24d4e52e8ed333b8b044035c9d6b823aba"}, + {file = "vulture-2.11.tar.gz", hash = "sha256:f0fbb60bce6511aad87ee0736c502456737490a82d919a44e6d92262cb35f1c2"}, ] -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" - [metadata] lock-version = "2.0" python-versions = "^3.11" diff --git a/util/functions b/util/functions index 3b5bd15c7..63b5831aa 100644 --- a/util/functions +++ b/util/functions @@ -311,7 +311,7 @@ start-blog(){ # Start up blog on localhost:4002/blog. then bundle exec jekyll serve "$@" -H 0.0.0.0 -P 4002 else - bundle exec jekyll serve --future --incremental -H 0.0.0.0 -P 4002 + bundle exec jekyll serve --future --profile --incremental -H 0.0.0.0 -P 4002 fi ) } @@ -319,7 +319,7 @@ start-blog(){ # Start up blog on localhost:4002/blog. start-blog-verbose(){ # Start up blog will all debug info printing. ( cd blog || exit - bundle exec jekyll serve --future --verbose --incremental --profile --trace -H 0.0.0.0 -P 4002 | ts + bundle exec jekyll serve --future --incremental --profile --trace --verbose -H 0.0.0.0 -P 4002 | ts ) } @@ -358,6 +358,6 @@ cta_top() { # Change CTA Top check_python_code() { # type check python code poetry run ruff . --fix - poetry run mypy --disallow-untyped-defs --ignore-missing-imports --exclude 'blog/_plugins/' --exclude 'util/suggest-links.py' --exclude 'util/cluster.py' . + poetry run mypy --disallow-untyped-defs --ignore-missing-imports --exclude 'blog/_plugins/' --exclude 'util/suggest-links.py' . poetry run vulture ./util/psupport } diff --git a/util/psupport/poetry.lock b/util/psupport/poetry.lock index e0aa19df1..bbe42d910 100644 --- a/util/psupport/poetry.lock +++ b/util/psupport/poetry.lock @@ -1,114 +1,5 @@ # This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. -[[package]] -name = "aiohttp" -version = "3.9.1" -description = "Async http client/server framework (asyncio)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501"}, - {file = "aiohttp-3.9.1-cp310-cp310-win32.whl", hash = "sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489"}, - {file = "aiohttp-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"}, - {file = "aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"}, - {file = "aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"}, - {file = "aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"}, - {file = "aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8"}, - {file = "aiohttp-3.9.1-cp38-cp38-win32.whl", hash = "sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4"}, - {file = "aiohttp-3.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c"}, - {file = "aiohttp-3.9.1-cp39-cp39-win32.whl", hash = "sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7"}, - {file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"}, - {file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"}, -] - -[package.dependencies] -aiosignal = ">=1.1.2" -attrs = ">=17.3.0" -frozenlist = ">=1.1.1" -multidict = ">=4.5,<7.0" -yarl = ">=1.0,<2.0" - -[package.extras] -speedups = ["Brotli", "aiodns", "brotlicffi"] - -[[package]] -name = "aiosignal" -version = "1.3.1" -description = "aiosignal: a list of registered asynchronous callbacks" -optional = false -python-versions = ">=3.7" -files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, -] - -[package.dependencies] -frozenlist = ">=1.1.0" - [[package]] name = "annotated-types" version = "0.6.0" @@ -122,13 +13,13 @@ files = [ [[package]] name = "anyio" -version = "4.2.0" +version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [package.dependencies] @@ -159,17 +50,6 @@ tests = ["attrs[tests-no-zope]", "zope-interface"] tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] -[[package]] -name = "cachetools" -version = "5.3.2" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, - {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, -] - [[package]] name = "cattrs" version = "23.2.3" @@ -195,79 +75,15 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] -[[package]] -name = "cffi" -version = "1.16.0" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, -] - -[package.dependencies] -pycparser = "*" - [[package]] name = "charset-normalizer" version = "3.3.2" @@ -367,6 +183,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -378,51 +208,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "cryptography" -version = "41.0.7" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, - {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, - {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, - {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, -] - -[package.dependencies] -cffi = ">=1.12" - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - [[package]] name = "diskcache" version = "5.6.3" @@ -446,173 +231,79 @@ files = [ ] [[package]] -name = "frozenlist" -version = "1.4.1" -description = "A list-like structure which implements collections.abc.MutableSequence" +name = "fastapi" +version = "0.110.0" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, -] - -[[package]] -name = "gptcache" -version = "0.1.43" -description = "GPTCache, a powerful caching library that can be used to speed up and lower the cost of chat applications that rely on the LLM service. GPTCache works as a memcache for AIGC applications, similar to how Redis works for traditional applications." -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "gptcache-0.1.43-py3-none-any.whl", hash = "sha256:9c557ec9cc14428942a0ebf1c838520dc6d2be801d67bb6964807043fc2feaf5"}, - {file = "gptcache-0.1.43.tar.gz", hash = "sha256:cebe7ec5e32a3347bf839e933a34e67c7fcae620deaa7cb8c6d7d276c8686f1a"}, + {file = "fastapi-0.110.0-py3-none-any.whl", hash = "sha256:87a1f6fb632a218222c5984be540055346a8f5d8a68e8f6fb647b1dc9934de4b"}, + {file = "fastapi-0.110.0.tar.gz", hash = "sha256:266775f0dcc95af9d3ef39bad55cff525329a931d5fd51930aadd4f428bf7ff3"}, ] [package.dependencies] -cachetools = "*" -numpy = "*" -requests = "*" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.36.3,<0.37.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "guidance" -version = "0.1.10" +version = "0.1.13" description = "A guidance language for controlling large language models." optional = false python-versions = ">=3.8" files = [ - {file = "guidance-0.1.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533b8c185ca81e838cb5c8bb44c076c7be7b7af91b4a2c0907ee6abbd62161bc"}, - {file = "guidance-0.1.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e13e16cc8fe0957f6d48bb1aa58ae5d36429d9d625c1c1bdc304afa3dd0938d0"}, - {file = "guidance-0.1.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabe39779fb1dc7707965879afae3f9167de522c5e17e2efc9abd4e552396c1c"}, - {file = "guidance-0.1.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:449798a3d9b9eeea58fa561a5b98094ba2fcfd6fee9c08a04d22f2b380482e2f"}, - {file = "guidance-0.1.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df64622e71d40fc054b0ccfa49f0fa6399d740679e3493b6227e4020473f96a1"}, - {file = "guidance-0.1.10-cp310-cp310-win32.whl", hash = "sha256:5118cbdd9ccc489c5d3c456c3e138ffc4327584375d55b9ece15fa9b10f9c4a2"}, - {file = "guidance-0.1.10-cp310-cp310-win_amd64.whl", hash = "sha256:00803c9f70a3f70fd80314f746348981a92cd581a76de8ae1f591c0d0b6bb512"}, - {file = "guidance-0.1.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b3d890a5f935a5cd6ba714a5a0fe6559f56d65e0378fd33fbe90cf4507ee6cfa"}, - {file = "guidance-0.1.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f03ed0b1e86b0d6e011538d43bce67ed3c53784871c99019860d7b27631d89f"}, - {file = "guidance-0.1.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004aba30b5f02ebe20c35e358baaf5459eefb10889a7126df523118cc95c1396"}, - {file = "guidance-0.1.10-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:544a3e25f917e865a862046fd51f840644f0cf72326d3af3838bd256f151dee1"}, - {file = "guidance-0.1.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e9baff5c27926dcb617f4a5259115e494995ca5f0a7a368b2506e05a3e1c0b9"}, - {file = "guidance-0.1.10-cp311-cp311-win32.whl", hash = "sha256:b8c6e4ae6e838670e2d6a48249b999a20b1de4d222b629ed9e2ee36025fb8814"}, - {file = "guidance-0.1.10-cp311-cp311-win_amd64.whl", hash = "sha256:165f4e430179c75f6fa1ab9880bd10c76d2305210e7317883882f65d7b73bd57"}, - {file = "guidance-0.1.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e47f810c8723f80101acb102e842b29afa5601943cc299d699d99fa2d4483185"}, - {file = "guidance-0.1.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4aba5e7c6c56975ffdfa817a94ea4079b755ae0262f1ffb77eef65d192f8faec"}, - {file = "guidance-0.1.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfe93227c9c42a415518acf7d66109b8575ab1e5d4fb3315b459d3b98a4ba98d"}, - {file = "guidance-0.1.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:17e4371e57785b8a6c5b238091085a3a08f1b0059789d565cfe6b442b0784dea"}, - {file = "guidance-0.1.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:326653e895015e3cef36e0936951898f58a52a4e35973c3434570c657c7fd37b"}, - {file = "guidance-0.1.10-cp38-cp38-win32.whl", hash = "sha256:a6813064e50679746be727ac70888397e70c68a3950d64a25e9e8137cc97eb18"}, - {file = "guidance-0.1.10-cp38-cp38-win_amd64.whl", hash = "sha256:f635e813b73de88eaab4d4e88a281b02cc65661eac882b5727c061527ac49aad"}, - {file = "guidance-0.1.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e0d69784b769e20ecc64e89bed59d2f0e21977a6ef55a29adcbb86d063c2d11"}, - {file = "guidance-0.1.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f88254d3340298ba75fd0def7842771f0cc23955a87f0bf77e407c4360a3e5d"}, - {file = "guidance-0.1.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c4a8b3ff3d13409b194d6021b97df56e14c14f28c9107177cfe0d8242bb4da2"}, - {file = "guidance-0.1.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:65c1234c26fef2bad79776ecd508ee344cc91de90acaf676900f11d24b0f24a3"}, - {file = "guidance-0.1.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edac3a0d48e54091fd91038ae8cdd1e071471ea3e4a81de64ea61864d25aa9d9"}, - {file = "guidance-0.1.10-cp39-cp39-win32.whl", hash = "sha256:6ce02899342245ee86f300ecb934f207cbfca867f68f7dc2c74ab17b76d4fe38"}, - {file = "guidance-0.1.10-cp39-cp39-win_amd64.whl", hash = "sha256:fd6b3ac2e725978b9d932e828eb8d955683518976508aedc4ba1a640aed15f90"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6b428a3738dc5caff326f6c54526d5ea740c00b69245a6afdee05b703169618b"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:958f20e34d6db1b67fea56dd2e1be5463531cc3889f130ace1ea8fc2f1a72796"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb0f052ecba795a494f0d7207909f4853c06960715960ff4f03c3a9afdf4a0b"}, - {file = "guidance-0.1.10-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c42e5643c035bae6484cad3cc45591186f3f84fe9e42461eab046811c44dc17e"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:12d856520d692315b2118433aab024382e08e4b389da7145cbe86772789a665f"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31f1f200915213cbbc9380775d66052ebc95b2bad39509fb3edcb74e8b4bc8d4"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de137da50a25f6004a61aea44f0401e9ee6d86c412d152eda202e5b6f6dba6b2"}, - {file = "guidance-0.1.10-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4118b6dea6c6e79ca19a6e4251d388264f85bc2bc4b045ebaff8c8e2f52b1eb6"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f6ed612929b2b174aabca87f3cc3d05ca881d572703de091d0fdaab0d7c060"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9bbd795982c767aa7671514883d0f9279a1efc5186e913e52f1d94e98053d68"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03f2075002a0a92eb4eb0cfdf5051f3a03bdf36d1953a6a5d658af633ecea27e"}, - {file = "guidance-0.1.10-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0a36068fef8c5a7285937ff7f4dca83b68b94bf8cb1e37709ee20e08c11a497e"}, - {file = "guidance-0.1.10.tar.gz", hash = "sha256:104c014f739ba671fdd38b76746d8238dc97775678db805c4a9fd04b5ea2bde7"}, + {file = "guidance-0.1.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0644f6996b0901de80cb38db00eb4562e23e7b0d04a8096d069f8d0de996f07"}, + {file = "guidance-0.1.13-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7783cbf08cfa35157616e7f822bff7f163fada2dee76c3d55d4f6dd9b01de2"}, + {file = "guidance-0.1.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89fb74439947d9fcf27da06d09e830841679202e831530e9efd0a3c00d79a8de"}, + {file = "guidance-0.1.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:260451d8acbb2f0120e22df3c63a10e8dcb2d87f56c70a70cf5675779fb2fd6d"}, + {file = "guidance-0.1.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ce4c1196db806c615bf45d9a813d7fd4fdf28a4ec6ad71cd6a754718f01a7825"}, + {file = "guidance-0.1.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:770d74133f6014b84712de2e91ef4a385aafd68d9d6fcff4ee6ac0337ab5ae9f"}, + {file = "guidance-0.1.13-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4bcb1cd2089cb4c7e9dff46560473bf71215bd9a7ee1f58a7c7cffa2fa4803"}, + {file = "guidance-0.1.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e19a1969ba073db8b2fa8ef16d4d9fca15101e4109662c11a09e322f29edcc50"}, + {file = "guidance-0.1.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2a1f9e747433dd8345a6420a89d3f2d6262554a37df5a20cc0a7933a0b4dfdde"}, + {file = "guidance-0.1.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45ebc16b5b120e8d7c043d7fe9047b6766391e8b8009fc23a7f7a55f4fb27d67"}, + {file = "guidance-0.1.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1251ff5364b5b4a588921dc5cac9296c032b0c988098145023122db1d5eb1bf8"}, + {file = "guidance-0.1.13-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:352b08b6c5dbb4d4f4de2b6235e984fe22869dade8f81287ffa783dbbd68ba7e"}, + {file = "guidance-0.1.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d2bf949b1745850f4243195632a8d1bd38c66dd62be8457e0ce01dc38841d89"}, + {file = "guidance-0.1.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d1eb00e6176a3b28839c861c496ca273e43112408a56c10a7612b169f48b88ad"}, + {file = "guidance-0.1.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e667392d0d014bc47bb247c4b7a34d59fa3a56f8efd0cc41a5ce21705c6c3367"}, + {file = "guidance-0.1.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d73dda705ac0bcb18fd392f961f335b434d9ebfb74a864afa79ad9abcbf913c"}, + {file = "guidance-0.1.13-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3577ffbe2a48c02ebc0947b281b32d0c60ec8f828f0d30a30a97b1139556e250"}, + {file = "guidance-0.1.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a0a21a95c94714383b4a08319b29c6096cd867be22566a9a0087fc612ea33"}, + {file = "guidance-0.1.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9b94e4ca5f852cf97b2b2fa010d6fc16b3990b0d7e454d22f12f910abab1e8bb"}, + {file = "guidance-0.1.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0385718b2a2d1e1198b88fa154e1b2e9fd7b31361a129f3e454a5772b4b26249"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6d1a927ededbcc9dd54b1542a86ba38ca37068ebeba9a99008ef11864df33285"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aac2cb2bd03435e397a0916db96ae9a70daa54bb4ec4536c7079e3beb194d835"}, + {file = "guidance-0.1.13-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0fd340affc9a21c7c34444ad45c1bcfb1879b6d03633beba90a3681cd0f61cd"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb767d66204f1deb26091f5fd50e03e2e9d5fa2a85719891f2ee5b0ab27c7b1e"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb9de8e46b4dbc79d144cc25b50b48124a18782467c4ababbfd868cd6380eb8"}, + {file = "guidance-0.1.13-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:712150468b407e00f96d3beffc6c1bdc5f7b52c17c40c01db4c552e1848113b1"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9dccd8a0cb6c855817a475c4bfcb82b63ead4a42c7ead6581f6586a907226db8"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea5dc2f19b5a137ca171d498595e9cc402ecb2d9127afb381dabb3fd7faa8953"}, + {file = "guidance-0.1.13-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7129dfcfcfed0e9e94ae864f0383b9f7dcacacc118a28da6a32681418fbb5b9c"}, + {file = "guidance-0.1.13.tar.gz", hash = "sha256:acf6ffccbca85eb5f0c358f7f715586bf3e540703f55739e42f43bf7d2eb5627"}, ] [package.dependencies] -aiohttp = "*" diskcache = "*" -gptcache = "*" -msal = "*" +fastapi = "*" numpy = "*" openai = ">=1.0" ordered-set = "*" platformdirs = "*" +protobuf = "*" pyformlang = "*" requests = "*" tiktoken = ">=0.3" +uvicorn = "*" [package.extras] docs = ["ipython", "nbsphinx", "numpydoc", "sphinx", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov", "torch", "transformers"] +test = ["jsonschema", "pytest", "pytest-cov", "torch", "transformers"] [[package]] name = "h11" @@ -627,13 +318,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -644,17 +335,17 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpx" -version = "0.26.0" +version = "0.27.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, - {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, ] [package.dependencies] @@ -682,105 +373,14 @@ files = [ ] [[package]] -name = "msal" -version = "1.26.0" -description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." -optional = false -python-versions = ">=2.7" -files = [ - {file = "msal-1.26.0-py2.py3-none-any.whl", hash = "sha256:be77ba6a8f49c9ff598bbcdc5dfcf1c9842f3044300109af738e8c3e371065b5"}, - {file = "msal-1.26.0.tar.gz", hash = "sha256:224756079fe338be838737682b49f8ebc20a87c1c5eeaf590daae4532b83de15"}, -] - -[package.dependencies] -cryptography = ">=0.6,<44" -PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} -requests = ">=2.0.0,<3" - -[package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.14)"] - -[[package]] -name = "multidict" -version = "6.0.4" -description = "multidict implementation" +name = "joblib" +version = "1.3.2" +description = "Lightweight pipelining with Python functions" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, + {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, ] [[package]] @@ -803,58 +403,58 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.26.3" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, - {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, - {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, - {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, - {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, - {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, - {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, - {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, - {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, - {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, - {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] name = "openai" -version = "1.7.1" +version = "1.14.3" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.7.1-py3-none-any.whl", hash = "sha256:e52ad7ea015331edc584e6e9c98741c819d7ffbbd2ecc50bf1f55c33f9cb3f77"}, - {file = "openai-1.7.1.tar.gz", hash = "sha256:7556e6aa30e20254b1ad68de49bb5ef4d8106bfac5e8a78abdc1daa911fbb1fb"}, + {file = "openai-1.14.3-py3-none-any.whl", hash = "sha256:7a465994a7ccf677a110c6cc2ef9d86229bad42c060b585b67049aa749f3b774"}, + {file = "openai-1.14.3.tar.gz", hash = "sha256:37b514e9c0ff45383ec9b242abd0f7859b1080d4b54b61393ed341ecad1b8eb9"}, ] [package.dependencies] @@ -885,18 +485,18 @@ dev = ["black", "mypy", "pytest"] [[package]] name = "platformdirs" -version = "4.1.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, - {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "portalocker" @@ -918,30 +518,39 @@ redis = ["redis"] tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"] [[package]] -name = "pycparser" -version = "2.21" -description = "C parser in Python" +name = "protobuf" +version = "5.26.0" +description = "" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "protobuf-5.26.0-cp310-abi3-win32.whl", hash = "sha256:f9ecc8eb6f18037e0cbf43256db0325d4723f429bca7ef5cd358b7c29d65f628"}, + {file = "protobuf-5.26.0-cp310-abi3-win_amd64.whl", hash = "sha256:dfd29f6eb34107dccf289a93d44fb6b131e68888d090b784b691775ac84e8213"}, + {file = "protobuf-5.26.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:7e47c57303466c867374a17b2b5e99c5a7c8b72a94118e2f28efb599f19b4069"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e184175276edc222e2d5e314a72521e10049938a9a4961fe4bea9b25d073c03f"}, + {file = "protobuf-5.26.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:6ee9d1aa02f951c5ce10bf8c6cfb7604133773038e33f913183c8b5201350600"}, + {file = "protobuf-5.26.0-cp38-cp38-win32.whl", hash = "sha256:2c334550e1cb4efac5c8a3987384bf13a4334abaf5ab59e40479e7b70ecd6b19"}, + {file = "protobuf-5.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:8eef61a90631c21b06b4f492a27e199a269827f046de3bb68b61aa84fcf50905"}, + {file = "protobuf-5.26.0-cp39-cp39-win32.whl", hash = "sha256:ca825f4eecb8c342d2ec581e6a5ad1ad1a47bededaecd768e0d3451ae4aaac2b"}, + {file = "protobuf-5.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:efd4f5894c50bd76cbcfdd668cd941021333861ed0f441c78a83d8254a01cc9f"}, + {file = "protobuf-5.26.0-py3-none-any.whl", hash = "sha256:a49b6c5359bf34fb7bf965bf21abfab4476e4527d822ab5289ee3bf73f291159"}, + {file = "protobuf-5.26.0.tar.gz", hash = "sha256:82f5870d74c99addfe4152777bdf8168244b9cf0ac65f8eccf045ddfa9d80d9b"}, ] [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.4" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, + {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.3" typing-extensions = ">=4.6.1" [package.extras] @@ -949,116 +558,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.3" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, + {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, + {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, + {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, + {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, + {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, + {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, + {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, + {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, + {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, + {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, + {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, + {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, + {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, ] [package.dependencies] @@ -1085,13 +668,13 @@ tests = ["black", "chardet", "tox"] [[package]] name = "pyformlang" -version = "1.0.4" +version = "1.0.9" description = "A python framework for formal grammars" optional = false python-versions = "*" files = [ - {file = "pyformlang-1.0.4-py3-none-any.whl", hash = "sha256:19bd167f0ac15c4d204274c85f889d690e106e43cb4094e926a12f6288dc4b2d"}, - {file = "pyformlang-1.0.4.tar.gz", hash = "sha256:cac5fa73cab6e9b710caae8680a04ac53769d348fee32a5bde680cd9ca82981b"}, + {file = "pyformlang-1.0.9-py3-none-any.whl", hash = "sha256:d64dc2ce35cf22b4aa34ccfeedb52dab357bcd29201a83e08e610b127f336b91"}, + {file = "pyformlang-1.0.9.tar.gz", hash = "sha256:a02c18338c90d4a619a42eef5697874880c7d90f77d0902e4c3abd99db3dce87"}, ] [package.dependencies] @@ -1099,35 +682,15 @@ networkx = "*" numpy = "*" pydot = "*" -[[package]] -name = "pyjwt" -version = "2.8.0" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, -] - -[package.dependencies] -cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -1135,13 +698,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1195,6 +758,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1354,13 +918,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-cache" -version = "1.1.1" +version = "1.2.0" description = "A persistent cache for python requests" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8" files = [ - {file = "requests_cache-1.1.1-py3-none-any.whl", hash = "sha256:c8420cf096f3aafde13c374979c21844752e2694ffd8710e6764685bb577ac90"}, - {file = "requests_cache-1.1.1.tar.gz", hash = "sha256:764f93d3fa860be72125a568c2cc8eafb151cf29b4dc2515433a56ee657e1c60"}, + {file = "requests_cache-1.2.0-py3-none-any.whl", hash = "sha256:490324301bf0cb924ff4e6324bd2613453e7e1f847353928b08adb0fdfb7f722"}, + {file = "requests_cache-1.2.0.tar.gz", hash = "sha256:db1c709ca343cc1cd5b6c8b1a5387298eceed02306a6040760db538c885e3838"}, ] [package.dependencies] @@ -1372,15 +936,99 @@ url-normalize = ">=1.4" urllib3 = ">=1.25.5" [package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=5.4)", "redis (>=3)", "ujson (>=5.4)"] +all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.6)"] +docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] json = ["ujson (>=5.4)"] mongodb = ["pymongo (>=3)"] redis = ["redis (>=3)"] security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=5.4)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "scikit-learn" +version = "1.4.1.post1" +description = "A set of python modules for machine learning and data mining" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5,<2.0" +scipy = ">=1.6.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] + +[[package]] +name = "scipy" +version = "1.12.0" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<1.29.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "six" @@ -1395,58 +1043,86 @@ files = [ [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "starlette" +version = "0.36.3" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "threadpoolctl" +version = "3.4.0" +description = "threadpoolctl" +optional = false +python-versions = ">=3.8" +files = [ + {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, + {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, ] [[package]] name = "tiktoken" -version = "0.5.2" +version = "0.6.0" description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" optional = false python-versions = ">=3.8" files = [ - {file = "tiktoken-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c4e654282ef05ec1bd06ead22141a9a1687991cef2c6a81bdd1284301abc71d"}, - {file = "tiktoken-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7b3134aa24319f42c27718c6967f3c1916a38a715a0fa73d33717ba121231307"}, - {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6092e6e77730929c8c6a51bb0d7cfdf1b72b63c4d033d6258d1f2ee81052e9e5"}, - {file = "tiktoken-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ad8ae2a747622efae75837abba59be6c15a8f31b4ac3c6156bc56ec7a8e631"}, - {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51cba7c8711afa0b885445f0637f0fcc366740798c40b981f08c5f984e02c9d1"}, - {file = "tiktoken-0.5.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3d8c7d2c9313f8e92e987d585ee2ba0f7c40a0de84f4805b093b634f792124f5"}, - {file = "tiktoken-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:692eca18c5fd8d1e0dde767f895c17686faaa102f37640e884eecb6854e7cca7"}, - {file = "tiktoken-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:138d173abbf1ec75863ad68ca289d4da30caa3245f3c8d4bfb274c4d629a2f77"}, - {file = "tiktoken-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7388fdd684690973fdc450b47dfd24d7f0cbe658f58a576169baef5ae4658607"}, - {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a114391790113bcff670c70c24e166a841f7ea8f47ee2fe0e71e08b49d0bf2d4"}, - {file = "tiktoken-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca96f001e69f6859dd52926d950cfcc610480e920e576183497ab954e645e6ac"}, - {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:15fed1dd88e30dfadcdd8e53a8927f04e1f6f81ad08a5ca824858a593ab476c7"}, - {file = "tiktoken-0.5.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f8e692db5756f7ea8cb0cfca34638316dcf0841fb8469de8ed7f6a015ba0b0"}, - {file = "tiktoken-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:bcae1c4c92df2ffc4fe9f475bf8148dbb0ee2404743168bbeb9dcc4b79dc1fdd"}, - {file = "tiktoken-0.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b76a1e17d4eb4357d00f0622d9a48ffbb23401dcf36f9716d9bd9c8e79d421aa"}, - {file = "tiktoken-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:01d8b171bb5df4035580bc26d4f5339a6fd58d06f069091899d4a798ea279d3e"}, - {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42adf7d4fb1ed8de6e0ff2e794a6a15005f056a0d83d22d1d6755a39bffd9e7f"}, - {file = "tiktoken-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3f894dbe0adb44609f3d532b8ea10820d61fdcb288b325a458dfc60fefb7db"}, - {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58ccfddb4e62f0df974e8f7e34a667981d9bb553a811256e617731bf1d007d19"}, - {file = "tiktoken-0.5.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58902a8bad2de4268c2a701f1c844d22bfa3cbcc485b10e8e3e28a050179330b"}, - {file = "tiktoken-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:5e39257826d0647fcac403d8fa0a474b30d02ec8ffc012cfaf13083e9b5e82c5"}, - {file = "tiktoken-0.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bde3b0fbf09a23072d39c1ede0e0821f759b4fa254a5f00078909158e90ae1f"}, - {file = "tiktoken-0.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ddee082dcf1231ccf3a591d234935e6acf3e82ee28521fe99af9630bc8d2a60"}, - {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35c057a6a4e777b5966a7540481a75a31429fc1cb4c9da87b71c8b75b5143037"}, - {file = "tiktoken-0.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c4a049b87e28f1dc60509f8eb7790bc8d11f9a70d99b9dd18dfdd81a084ffe6"}, - {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5bf5ce759089f4f6521ea6ed89d8f988f7b396e9f4afb503b945f5c949c6bec2"}, - {file = "tiktoken-0.5.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0c964f554af1a96884e01188f480dad3fc224c4bbcf7af75d4b74c4b74ae0125"}, - {file = "tiktoken-0.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:368dd5726d2e8788e47ea04f32e20f72a2012a8a67af5b0b003d1e059f1d30a3"}, - {file = "tiktoken-0.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a2deef9115b8cd55536c0a02c0203512f8deb2447f41585e6d929a0b878a0dd2"}, - {file = "tiktoken-0.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ed7d380195affbf886e2f8b92b14edfe13f4768ff5fc8de315adba5b773815e"}, - {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76fce01309c8140ffe15eb34ded2bb94789614b7d1d09e206838fc173776a18"}, - {file = "tiktoken-0.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60a5654d6a2e2d152637dd9a880b4482267dfc8a86ccf3ab1cec31a8c76bfae8"}, - {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41d4d3228e051b779245a8ddd21d4336f8975563e92375662f42d05a19bdff41"}, - {file = "tiktoken-0.5.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c1cdec2c92fcde8c17a50814b525ae6a88e8e5b02030dc120b76e11db93f13"}, - {file = "tiktoken-0.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:84ddb36faedb448a50b246e13d1b6ee3437f60b7169b723a4b2abad75e914f3e"}, - {file = "tiktoken-0.5.2.tar.gz", hash = "sha256:f54c581f134a8ea96ce2023ab221d4d4d81ab614efa0b2fbce926387deb56c80"}, + {file = "tiktoken-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:277de84ccd8fa12730a6b4067456e5cf72fef6300bea61d506c09e45658d41ac"}, + {file = "tiktoken-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c44433f658064463650d61387623735641dcc4b6c999ca30bc0f8ba3fccaf5c"}, + {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afb9a2a866ae6eef1995ab656744287a5ac95acc7e0491c33fad54d053288ad3"}, + {file = "tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c62c05b3109fefca26fedb2820452a050074ad8e5ad9803f4652977778177d9f"}, + {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ef917fad0bccda07bfbad835525bbed5f3ab97a8a3e66526e48cdc3e7beacf7"}, + {file = "tiktoken-0.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e095131ab6092d0769a2fda85aa260c7c383072daec599ba9d8b149d2a3f4d8b"}, + {file = "tiktoken-0.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:05b344c61779f815038292a19a0c6eb7098b63c8f865ff205abb9ea1b656030e"}, + {file = "tiktoken-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cefb9870fb55dca9e450e54dbf61f904aab9180ff6fe568b61f4db9564e78871"}, + {file = "tiktoken-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:702950d33d8cabc039845674107d2e6dcabbbb0990ef350f640661368df481bb"}, + {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d49d076058f23254f2aff9af603863c5c5f9ab095bc896bceed04f8f0b013a"}, + {file = "tiktoken-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:430bc4e650a2d23a789dc2cdca3b9e5e7eb3cd3935168d97d43518cbb1f9a911"}, + {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:293cb8669757301a3019a12d6770bd55bec38a4d3ee9978ddbe599d68976aca7"}, + {file = "tiktoken-0.6.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bd1a288b7903aadc054b0e16ea78e3171f70b670e7372432298c686ebf9dd47"}, + {file = "tiktoken-0.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac76e000183e3b749634968a45c7169b351e99936ef46f0d2353cd0d46c3118d"}, + {file = "tiktoken-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17cc8a4a3245ab7d935c83a2db6bb71619099d7284b884f4b2aea4c74f2f83e3"}, + {file = "tiktoken-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:284aebcccffe1bba0d6571651317df6a5b376ff6cfed5aeb800c55df44c78177"}, + {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c1a3a5d33846f8cd9dd3b7897c1d45722f48625a587f8e6f3d3e85080559be8"}, + {file = "tiktoken-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6318b2bb2337f38ee954fd5efa82632c6e5ced1d52a671370fa4b2eff1355e91"}, + {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f5f0f2ed67ba16373f9a6013b68da298096b27cd4e1cf276d2d3868b5c7efd1"}, + {file = "tiktoken-0.6.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:75af4c0b16609c2ad02581f3cdcd1fb698c7565091370bf6c0cf8624ffaba6dc"}, + {file = "tiktoken-0.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:45577faf9a9d383b8fd683e313cf6df88b6076c034f0a16da243bb1c139340c3"}, + {file = "tiktoken-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c1492ab90c21ca4d11cef3a236ee31a3e279bb21b3fc5b0e2210588c4209e68"}, + {file = "tiktoken-0.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e2b380c5b7751272015400b26144a2bab4066ebb8daae9c3cd2a92c3b508fe5a"}, + {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f497598b9f58c99cbc0eb764b4a92272c14d5203fc713dd650b896a03a50ad"}, + {file = "tiktoken-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e65e8bd6f3f279d80f1e1fbd5f588f036b9a5fa27690b7f0cc07021f1dfa0839"}, + {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5f1495450a54e564d236769d25bfefbf77727e232d7a8a378f97acddee08c1ae"}, + {file = "tiktoken-0.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6c4e4857d99f6fb4670e928250835b21b68c59250520a1941618b5b4194e20c3"}, + {file = "tiktoken-0.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:168d718f07a39b013032741867e789971346df8e89983fe3c0ef3fbd5a0b1cb9"}, + {file = "tiktoken-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:47fdcfe11bd55376785a6aea8ad1db967db7f66ea81aed5c43fad497521819a4"}, + {file = "tiktoken-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb7d2ccbf1a7784810aff6b80b4012fb42c6fc37eaa68cb3b553801a5cc2d1fc"}, + {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ccb7a111ee76af5d876a729a347f8747d5ad548e1487eeea90eaf58894b3138"}, + {file = "tiktoken-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2048e1086b48e3c8c6e2ceeac866561374cd57a84622fa49a6b245ffecb7744"}, + {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07f229a5eb250b6403a61200199cecf0aac4aa23c3ecc1c11c1ca002cbb8f159"}, + {file = "tiktoken-0.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:432aa3be8436177b0db5a2b3e7cc28fd6c693f783b2f8722539ba16a867d0c6a"}, + {file = "tiktoken-0.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:8bfe8a19c8b5c40d121ee7938cd9c6a278e5b97dc035fd61714b4f0399d2f7a1"}, + {file = "tiktoken-0.6.0.tar.gz", hash = "sha256:ace62a4ede83c75b0374a2ddfa4b76903cf483e9cb06247f566be3bf14e6beed"}, ] [package.dependencies] @@ -1458,13 +1134,13 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -1478,13 +1154,13 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] @@ -1503,124 +1179,40 @@ six = "*" [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] -name = "yarl" -version = "1.9.4" -description = "Yet another URL library" +name = "uvicorn" +version = "0.29.0" +description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, + {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, ] [package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "9c97da6540bb1fc6e625d46086d43ce3e0338515ed92ca8e635fb559d2c13f8a" +content-hash = "a66559eda99c3047bfd4c4548dc07726f0489731a3e333979d1a09801e7f1caa" diff --git a/util/psupport/psupport/core/prompts.py b/util/psupport/psupport/core/prompts.py index 9d99ec3ea..8d1fb44ef 100644 --- a/util/psupport/psupport/core/prompts.py +++ b/util/psupport/psupport/core/prompts.py @@ -1,12 +1,8 @@ -import argparse -import os from textwrap import dedent -from typing import Callable, List, Optional, Tuple +from typing import Callable, List, Tuple -import guidance -from guidance.models import Model from guidance import assistant, gen, system, user - +from guidance.models import Model # Patterns @@ -21,9 +17,9 @@ def run_n_times(run : Callable[[], Model], n : int, answer_key : str) -> List[st ## Run and then judge def run_n_and_judge(model: Model, run : Callable[[], Model], n : int, answer_key : str, criteria : str) -> Tuple[str,str]: - list = run_n_times(run, n, answer_key) + list = run_n_times(run, n, answer_key) with system(): - llm = model + dedent(""" + llm = model + dedent(f""" Can you please comment on the pros and cons of each of these options based on these criteria? --- Criteria: @@ -39,7 +35,7 @@ def run_n_and_judge(model: Model, run : Callable[[], Model], n : int, answer_key """) with assistant(): llm += gen('thinking', temperature=0, max_tokens=2000) - + with user(): llm += "Please return the text of the best option, based on the above thinking. Return just the text, not its option number." diff --git a/util/psupport/psupport/scripts/bottomcta.py b/util/psupport/psupport/scripts/bottomcta.py index 5b3c84536..1f3865833 100755 --- a/util/psupport/psupport/scripts/bottomcta.py +++ b/util/psupport/psupport/scripts/bottomcta.py @@ -5,6 +5,7 @@ import guidance from guidance import assistant, gen, system, user + from psupport.core import prompts gpt4 : guidance.models.Model = guidance.models.OpenAI("gpt-4-1106-preview") @@ -122,7 +123,7 @@ def merge_tie_in(summary: str, conclusion: str, tie_in: str) -> str: with assistant(): lm += example['result'] with system(): - lm += dedent(f""" + lm += dedent(""" Can you add the tie in to the conclusion in a way that makes sense and blends in? Rewrite it if needed. """) with user(): diff --git a/util/cluster.py b/util/psupport/psupport/scripts/cluster.py old mode 100644 new mode 100755 similarity index 87% rename from util/cluster.py rename to util/psupport/psupport/scripts/cluster.py index e4843fa1c..f34699ddb --- a/util/cluster.py +++ b/util/psupport/psupport/scripts/cluster.py @@ -1,11 +1,14 @@ import os -import openai -from sklearn.cluster import KMeans -from typing import List, Tuple import pickle +from typing import List, Tuple + import numpy as np +from openai import APIError, OpenAI +from sklearn.cluster import KMeans -CACHE_FILE = "./util/cluster_embeddings_cache.pkl" +client = OpenAI(api_key=os.environ.get('OPENAI_API_KEY')) + +CACHE_FILE = "./blog/_data/embeddings_cache.pkl" def load_cache() -> dict: if os.path.exists(CACHE_FILE): @@ -19,11 +22,10 @@ def save_cache(cache: dict) -> None: with open(CACHE_FILE, 'wb') as f: pickle.dump(cache, f) - # 1. Load the Markdown Files def load_markdown_files(folder_path: str) -> Tuple[List[str], List[str]]: all_files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] - # all_files = all_files[:100] + all_files = all_files[:100] markdown_texts = [] for file in all_files: @@ -33,7 +35,7 @@ def load_markdown_files(folder_path: str) -> Tuple[List[str], List[str]]: return all_files, markdown_texts -def get_embedding(text: str, filename : str, model="text-embedding-ada-002") -> List[float]: +def get_embedding(text: str, filename : str, model : str ="text-embedding-3-small" ) -> List[float]: if filename in cache: return cache[filename] @@ -41,10 +43,10 @@ def get_embedding(text: str, filename : str, model="text-embedding-ada-002") -> while True: try: # text = text.replace("\n", " ") - embedding = openai.Embedding.create(input = [text], model=model)['data'][0]['embedding'] + embedding = client.embeddings.create(input = text, model=model).data[0].embedding cache[filename] = embedding return embedding - except openai.error.InvalidRequestError as e: + except APIError as e: if "maximum context length" in str(e): print(f"{filename}: dropping lines") lines = text.split("\n") @@ -56,9 +58,8 @@ def get_embedding(text: str, filename : str, model="text-embedding-ada-002") -> return [0.0] * 1536 else: raise e - + def generate_embeddings(markdown_texts: List[str], filenames: List[str]) -> List[List[float]]: - openai.api_key = os.environ.get('OPENAI_API_KEY') embeddings = [get_embedding(text, filename) for text, filename in zip(markdown_texts, filenames)] return embeddings @@ -97,10 +98,10 @@ def main() -> None: embeddings = handle_nan_in_embeddings(embeddings) labels = cluster_embeddings(embeddings, n_clusters) - clusters = [[] for _ in range(n_clusters)] + clusters : List[List] = [[] for _ in range(n_clusters)] for idx, label in enumerate(labels): clusters[label].append(all_files[idx]) - + display_clusters(clusters) except Exception as e: diff --git a/util/psupport/psupport/scripts/suggested_posts.py b/util/psupport/psupport/scripts/suggested_posts.py new file mode 100755 index 000000000..f736b2baf --- /dev/null +++ b/util/psupport/psupport/scripts/suggested_posts.py @@ -0,0 +1,121 @@ +import os +import pickle +from typing import List, Dict, Tuple + +import numpy as np +from openai import APIError, OpenAI +from sklearn.metrics.pairwise import cosine_similarity + +client = OpenAI(api_key=os.environ.get('OPENAI_API_KEY')) + +CACHE_FILE = "./blog/_data/embeddings_cache.pkl" + +def load_cache() -> dict: + if os.path.exists(CACHE_FILE): + with open(CACHE_FILE, 'rb') as f: + return pickle.load(f) + return {} + +cache = load_cache() + +def save_cache(cache: dict) -> None: + with open(CACHE_FILE, 'wb') as f: + pickle.dump(cache, f) + +def extract_slug(filename: str) -> str: + # Assuming filenames are in the format "YYYY-MM-DD-title.md" + parts = filename.split('-') + if len(parts) > 3: # Expected to have date at the start + slug = '-'.join(parts[3:]) # Skip date parts + slug = slug.rsplit('.', 1)[0] # Remove file extension + return slug + return filename # Return original filename if it doesn't match the expected format + +def handle_nan_in_embeddings(embeddings: List[List[float]]) -> List[List[float]]: + cleaned_embeddings = [] + for embedding in embeddings: + if np.isnan(np.sum(embedding)): # Check if there are any NaN values in the embedding + cleaned_embedding = [0 if np.isnan(val) else val for val in embedding] + cleaned_embeddings.append(cleaned_embedding) + else: + cleaned_embeddings.append(embedding) + return cleaned_embeddings + +def load_markdown_files(folder_path: str) -> Tuple[List[str], List[str]]: + all_files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] + all_files = sorted(all_files) + markdown_texts = [] + + for file in all_files: + with open(os.path.join(folder_path, file), 'r', encoding='utf-8') as f: + markdown_texts.append(f.read()) + + return all_files, markdown_texts + +def get_embedding(text: str, filename: str, model: str = "text-embedding-3-small") -> List[float]: + if filename in cache: + return cache[filename] + + while True: + try: + embedding = client.embeddings.create(input=text, model=model).data[0].embedding + cache[filename] = embedding + return embedding + except APIError as e: + if "maximum context length" in str(e): + lines = text.split("\n") + if len(lines) > 10: + text = "\n".join(lines[:-10]) # Drop last 10 lines + else: + return [0.0] * 1536 + else: + raise e + +def find_related_posts(folder_path: str, max_related: int = 15, min_similarity: float = 0.3) -> Dict[str, List[str]]: + all_files, markdown_texts = load_markdown_files(folder_path) + embeddings = [get_embedding(text, filename) for text, filename in zip(markdown_texts, all_files)] + embeddings = handle_nan_in_embeddings(embeddings) + embeddings_matrix = np.array(embeddings) + similarity_matrix = cosine_similarity(embeddings_matrix) + np.fill_diagonal(similarity_matrix, 0) # Fill diagonal with 0s to ignore self-similarity + + related_posts = {} + for idx, filename in enumerate(all_files): + slug = extract_slug(filename) + similarity_scores = similarity_matrix[idx] + related_indices = np.argsort(similarity_scores)[::-1] + related_slugs = [] + for related_idx in related_indices: + if related_idx == idx: + continue # Skip self-similarity + related_slug = extract_slug(all_files[related_idx]) + related_similarity = similarity_scores[related_idx] + if related_similarity >= min_similarity: + related_slugs.append(related_slug) + if len(related_slugs) >= max_related: + break + + related_posts[slug] = related_slugs + + sorted_related_posts = sorted(related_posts.items(), key=lambda x: len(x[1])) + + for slug, related_slugs in sorted_related_posts: + if related_slugs: + print(f"{slug}:") + for related_slug in related_slugs: + print(f" - {related_slug}") + print("\n") + + return related_posts + +def main() -> None: + try: + folder_path = "./blog/_posts" + related_posts = find_related_posts(folder_path, max_related=10, min_similarity=0.60) + except Exception as e: + print(f"An error occurred: {e}") + finally: + save_cache(cache) + +if __name__ == "__main__": + main() diff --git a/util/psupport/pyproject.toml b/util/psupport/pyproject.toml index f4369272a..856e94bd8 100644 --- a/util/psupport/pyproject.toml +++ b/util/psupport/pyproject.toml @@ -12,6 +12,7 @@ python-dotenv = "^1.0.0" guidance = "^0.1.10" portalocker = "^2.8.2" pyyaml = "^6.0.1" +scikit-learn = "^1.4.1.post1" [build-system] requires = ["poetry-core"] diff --git a/util/slides_markdown.py b/util/slides_markdown.py index e73cb47af..31e1be718 100755 --- a/util/slides_markdown.py +++ b/util/slides_markdown.py @@ -1,12 +1,13 @@ import re import sys +from typing import Any -def convert_markdown(text): +def convert_markdown(text : str) -> str: # First pass: Handle blocks with language and captions complex_pattern = re.compile( r'~~~\{\.(\w+)(?:\s+caption="([^"]*)")?\}\n(.*?)~~~', re.DOTALL) - def complex_replacer(match): + def complex_replacer(match : Any) -> str: language = match.group(1) caption = match.group(2) or "Unnamed" code = match.group(3).strip() @@ -18,7 +19,7 @@ def complex_replacer(match): intermediary_pattern = re.compile( r'~~~\{(.*?)\}\n(.*?)~~~', re.DOTALL) - def intermediary_replacer(match): + def intermediary_replacer(match : Any) -> str: language = match.group(1) code = match.group(2).strip() return f"## Unnamed\n```{language}\n{code}\n```" @@ -29,7 +30,7 @@ def intermediary_replacer(match): simple_pattern = re.compile( r'~~~\n(.*?)~~~', re.DOTALL) - def simple_replacer(match): + def simple_replacer(match : Any) -> str: code = match.group(1).strip() return "## Unnamed\n```\n" + code + "\n```" @@ -37,12 +38,12 @@ def simple_replacer(match): return text -def add_page_break_before_headings(text): +def add_page_break_before_headings(text : str) -> str: # Regex to match headings that start with # or ## heading_pattern = re.compile(r'^(#{1,2}\s+.+)$', re.MULTILINE) # Function to add a markdown page break before the matched heading - def page_break_replacer(match): + def page_break_replacer(match : Any) -> str: return f"---\n{match.group(0)}" # Replace all occurrences of headings with themselves preceded by a page break