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 162691df6..d42b62465 100644 Binary files a/util/cluster_embeddings_cache.pkl and b/blog/_data/embeddings_cache.pkl differ diff --git a/blog/_data/related_articles.yml b/blog/_data/related_articles.yml new file mode 100644 index 000000000..6e90c7ae4 --- /dev/null +++ b/blog/_data/related_articles.yml @@ -0,0 +1,5732 @@ +developer-platforms: + - why-developer-platform + - developer-portals-backstage + + +data-engineering-analysis: + - konfig + - developer-portals-backstage + + +poetry-publish: + - create-python-package + - python-c-extension + - python-monorepo + + +larger-satellite-sizes: + - self-hosted-satellites + - earthly-v0-8 + - on-star-history + + +why-developer-platform: + - developer-platforms + - developer-portals-backstage + - docker-build-cloud + + +create-python-package: + - poetry-publish + - python-c-extension + - python-monorepo + - incremental-rust-builds + + +single-expression-functions: + - showboaters + - readability + - future-is-rusty + - language-style-czar + + +showboaters: + - readability + - single-expression-functions + - language-style-czar + - future-is-rusty + + +readability: + - showboaters + - single-expression-functions + - future-is-rusty + - language-style-czar + + +language-style-czar: + - showboaters + - single-expression-functions + - readability + - future-is-rusty + + +python-c-extension: + - create-python-package + - poetry-publish + - incremental-rust-builds + - python-monorepo + - future-is-rusty + + +generating-sbom: + - docker-sbom + - docker-scout + - developer-portals-backstage + - docker-buildx + - docker-build-cloud + + +gradle-monorepo: + - python-monorepo + - rust-monorepo + - cargo-workspace-crates + - yarn-vite-monorepo + - konfig + + +self-hosted-satellites: + - larger-satellite-sizes + - earthly-v0-8 + - konfig + - on-star-history + - docker-build-cloud + + +future-is-rusty: + - showboaters + - readability + - single-expression-functions + - language-style-czar + - incremental-rust-builds + - rust-sccache + - python-c-extension + + +on-star-history: + - konfig + - earthly-v0-8 + - self-hosted-satellites + - cargo-chef + - docker-build-cloud + - larger-satellite-sizes + - docker-init-in-go + + +yarn-vite-monorepo: + - gradle-monorepo + - rust-monorepo + - cargo-workspace-crates + - python-monorepo + - developer-portals-backstage + - docker-init-nodejs + - incremental-rust-builds + + +developer-portals-backstage: + - why-developer-platform + - yarn-vite-monorepo + - developer-platforms + - generating-sbom + - docker-scout + - data-engineering-analysis + - docker-init-nodejs + + +earthly-v0-8: + - konfig + - self-hosted-satellites + - incremental-rust-builds + - larger-satellite-sizes + - on-star-history + - python-monorepo + - docker-init-in-go + - cargo-chef + + +rust-sccache: + - incremental-rust-builds + - cargo-chef + - cargo-workspace-crates + - rust-monorepo + - docker-init-rust + - build-buildkit-cache + - docker-build-cloud + - future-is-rusty + - konfig + + +cargo-workspace-crates: + - rust-monorepo + - python-monorepo + - gradle-monorepo + - cargo-chef + - incremental-rust-builds + - rust-sccache + - yarn-vite-monorepo + - docker-init-rust + - konfig + + +introducing-earthly-build-automation-for-the-container-era: + - the-world-deserves-better-builds + - launching-earthly-CI + - earthly-cloud-free-tier-launch + - earthly-github-actions + - earthly-v0-6 + - better-builds + - what-makes-earthly-fast + - shutting-down-earthly-ci + - phoenix + - earthly-v0-7 + + +v0-1-3-released: + - v0-2-0-released + - v0-3-2-released + - v0-3-0-released + - v0-3-3-released + - v0-2-2-released + - v0-2-1 + - earthly-v0-6 + - earthly-0-3-6-released + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + + +v0-2-0-released: + - v0-3-0-released + - v0-3-2-released + - v0-1-3-released + - v0-2-2-released + - v0-3-3-released + - v0-2-1 + - earthly-v0-7 + - earthly-v0-6 + - earthly-0-3-6-released + - introducing-earthly-build-automation-for-the-container-era + + +v0-2-1: + - v0-2-2-released + - earthly-0-3-6-released + - v0-1-3-released + - v0-2-0-released + - v0-3-2-released + - v0-3-3-released + - v0-3-0-released + - earthly-v0-6 + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + + +v0-2-2-released: + - v0-2-1 + - earthly-0-3-6-released + - v0-2-0-released + - v0-3-3-released + - v0-3-2-released + - v0-1-3-released + - v0-3-0-released + - earthly-v0-6 + - earthly-v0-7 + - new-fundings-at-earthly + + +v0-3-0-released: + - v0-3-2-released + - v0-2-0-released + - earthly-0-3-6-released + - v0-1-3-released + - earthly-v0-6 + - earthly-v0-7 + - v0-3-3-released + - v0-2-2-released + - v0-2-1 + - introducing-earthly-build-automation-for-the-container-era + + +v0-3-2-released: + - v0-3-0-released + - v0-3-3-released + - v0-2-0-released + - earthly-0-3-6-released + - v0-1-3-released + - v0-2-2-released + - earthly-v0-6 + - v0-2-1 + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + + +v0-3-3-released: + - v0-3-2-released + - earthly-0-3-6-released + - v0-1-3-released + - v0-2-2-released + - v0-3-0-released + - v0-2-0-released + - v0-2-1 + - earthly-v0-6 + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + + +better-builds: + - the-world-deserves-better-builds + - introducing-earthly-build-automation-for-the-container-era + - repeatable-builds-every-time + - earthly-github-actions + - launching-earthly-CI + - what-makes-earthly-fast + - python-earthly + - shutting-down-earthly-ci + - docker-multistage + - the-next-iteration + + +earthly-0-3-6-released: + - v0-3-2-released + - v0-3-0-released + - v0-2-1 + - v0-3-3-released + - v0-2-2-released + - earthly-v0-6 + - v0-2-0-released + - v0-1-3-released + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + + +hacktoberfest-2020: + - hacktoberfest-2021 + - grateful-for-hacktoberfest + - the-world-deserves-better-builds + - earthly-open-source + - the-next-iteration + - new-fundings-at-earthly + - introducing-earthly-build-automation-for-the-container-era + - earthly-github-actions + - open-source-startup-podcast + - earthly-v0-6 + + +the-world-deserves-better-builds: + - introducing-earthly-build-automation-for-the-container-era + - launching-earthly-CI + - new-fundings-at-earthly + - shutting-down-earthly-ci + - the-next-iteration + - better-builds + - earthly-github-actions + - what-makes-earthly-fast + - repeatable-builds-every-time + - earthly-cloud-free-tier-launch + + +grateful-for-hacktoberfest: + - hacktoberfest-2020 + - hacktoberfest-2021 + - earthly-github-actions + - the-world-deserves-better-builds + - earthly-open-source + - new-fundings-at-earthly + - phoenix + - the-next-iteration + - introducing-earthly-build-automation-for-the-container-era + - python-earthly + + +building-on-kubernetes-ingress: + - app-routing-in-k8-cluster + - k8s-networking + - mutual-tls-kubernetes-nginx-ingress-controller + - canary-deployment-in-k8s + - K3s-and-K8s + - kubernetes-terraform + - dont-be-weird + - kubernetes-services + - openshift-vs-kubernetes + - spinnaker-kubernetes + + +dont-be-weird: + - see-state + - thought-leaders + - building-on-kubernetes-ingress + - idiots-and-maniacs + - platform-values + - repeatable-builds-every-time + - youre-using-docker-compose-wrong + - misaligned-incentives + - confidently-uncertain + - nomad-vs-kubernetes + + +protobufs-and-grpc: + - golang-grpc-example + - lambda-grpc + - golang-grpc-gateway + - buf-protobuf + - backward-and-forward-compatibility + - build-GraphQL-APIs-Go + - aws-lambda-api-proxy + - build-golang-bazel-gazelle + - mail-server-API-goroutines-gmail + - aws-lambda-golang + + +youre-using-docker-compose-wrong: + - dockercompose-vs-k8s + - docker-vagrant + - docker-networking + - kubernetes-docker + - earthly-podman + - docker-secrets + - repeatable-builds-every-time + - docker-alternatives + - portainer-for-docker-container-management + - docker-vs-vm + + +unit-vs-integration: + - continuous-testing-in-devops + - continuous-integration + - youre-using-docker-compose-wrong + - ci-vs-cd + - programming-language-improvements + - docker-vs-vm + - docker-vagrant + - kubernetes-docker + - line-staff + - idiots-and-maniacs + + +the-next-iteration: + - the-world-deserves-better-builds + - earthly-github-actions + - launching-earthly-CI + - introducing-earthly-build-automation-for-the-container-era + - earthly-v0-6 + - shutting-down-earthly-ci + - new-fundings-at-earthly + - platform-values + - phoenix + - what-makes-earthly-fast + + +encrypting-data-with-ssh-keys-and-golang: + - cryptography-encryption-in-go + - image-upload-api-cloudinary-golang + - securing-kubernetes-secrets + - golang-zip-files + - build-GraphQL-APIs-Go + - aws-lambda-golang + - golang-csv-files + - golang-http + - golang-grpc-example + - using-gorm-go + + +stackoverflow: + - software-engineering-daily + - ruby-rogues + - programming-throwdown + - open-source-startup-podcast + - tech-and-main-interview + - effective-developer-podcast + - dev-tool-time + - business-of-open-source-podcast + - the-world-deserves-better-builds + - coffee-and-opensource + + +migrating-from-travis: + - travis-ci-alternatives + - ci-comparison + - earthly-cloud-free-tier-launch + - bitbucket-ci + - earthly-github-actions + - shutting-down-earthly-ci + - earthly-open-source + - repeatable-builds-every-time + - launching-earthly-CI + - travis-bitbucket + + +phoenix: + - launching-earthly-CI + - earthly-github-actions + - introducing-earthly-build-automation-for-the-container-era + - the-world-deserves-better-builds + - python-earthly + - new-fundings-at-earthly + - earthly-cloud-free-tier-launch + - what-makes-earthly-fast + - software-engineering-daily + - shutting-down-earthly-ci + + +top-3-resources-to-learn-golang-in-2021: + - optimize-golang-for-kubernetes + - learning-golang-common-mistakes-to-avoid + - golang-monorepo + - golang-streamers + - build-golang-bazel-gazelle + - aws-lambda-golang + - programming-language-improvements + - concurrency-in-Go + - golang-gin-framework + - software-design-go-interfaces + + +top-5-scala-blogs: + - programming-language-improvements + - top-3-resources-to-learn-golang-in-2021 + - brown-green-language + - better-builds + - monorepo-tools + - building-js-monorepo + - software-engineering-daily + - stackoverflow + - dev-tool-time + - idiots-and-maniacs + + +monorepo-vs-polyrepo: + - understanding-monorepos + - setup-typescript-monorepo + - monorepo-with-bazel + - monorepo-tools + - golang-monorepo + - building-js-monorepo + - nx-monorepos-guide + - build-monorepo-with-turporepo + - javascript-monorepo-with-lerna + - npm-workspaces-monorepo + + +every-open-core-company-should-be-a-source-available-company: + - earthly-open-source + - introducing-earthly-build-automation-for-the-container-era + - the-world-deserves-better-builds + - misaligned-incentives + - earthly-satellites-ga + - business-of-open-source-podcast + - earthly-cloud-free-tier-launch + - new-fundings-at-earthly + - launching-earthly-CI + - open-source-startup-podcast + + +mitmproxy: + - mutual-tls-kubernetes-nginx-ingress-controller + - build-your-own-ngrok-clone + - setup-reverse-proxy-kubernetes-nginx + - grafana-https-nginx-certbot + - ess-linux-term-cmd + - pull-through-cache + - private-docker-registry + - repeatable-builds-every-time + - how-to-use-docker-in-vscode + - docker-and-makefiles + + +what-is-buildkit-and-what-can-i-do-with-it: + - compiling-containers-dockerfiles-llvm-and-buildkit + - docker-multistage + - repeatable-builds-every-time + - docker-and-makefiles + - introducing-earthly-build-automation-for-the-container-era + - docker-vs-buildah-vs-kaniko + - docker-alternatives + - the-world-deserves-better-builds + - earthly-podman + - macOS-native-containers + + +intercal-yaml-and-other-horrible-programming-languages: + - dont-configure-control-flow + - on-yaml-discussions + - yaml-validate-and-lint-cue-lang + - introducing-earthly-build-automation-for-the-container-era + - programming-language-improvements + - compiling-containers-dockerfiles-llvm-and-buildkit + - brown-green-language + - what-is-nix + - repeatable-builds-every-time + - idiots-and-maniacs + + +using-apple-silicon-m1-as-a-cloud-engineer-two-months-in: + - homebrew-on-m1 + - macOS-native-containers + - lima + - docker-alternatives + - earthly-cloud-free-tier-launch + - using-aws-graviton + - docker-vagrant + - introducing-earthly-build-automation-for-the-container-era + - devcontainers + - shutting-down-earthly-ci + + +how-to-setup-and-use-amazons-elastic-container-registry: + - aws-ecs-tutorial + - aws-ecr-github-actions + - deploy-DockerContainers-with-ECS + - streamline-container-ghcr + - aws-lambda-docker + - private-docker-registry + - deploy-dockcontainers-to-AWSECS-using-Terraform + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - docker-secrets + + +understanding-docker-logging-and-log-files: + - docker-volumes + - logging-in-python + - debugging-docker-containers + - docker-image-storage-on-host + - docker-networking + - grafana-loki-log-aggregation-k8s + - mongodb-docker + - how-to-use-docker-in-vscode + - running-Grafana-in-Docker + - containerd-vs-docker + + +build-your-own-ngrok-clone: + - aws-ecs-tutorial + - aws-networks + - aws-lambda-docker + - setup-reverse-proxy-kubernetes-nginx + - deploy-dockcontainers-to-AWSECS-using-Terraform + - app-routing-in-k8-cluster + - deploy-DockerContainers-with-ECS + - pull-through-cache + - automate-micsvcs-in-k8s + - aws-lambda-node + + +on-yaml-discussions: + - dont-configure-control-flow + - intercal-yaml-and-other-horrible-programming-languages + - programming-language-improvements + - brown-green-language + - yaml-validate-and-lint-cue-lang + - what-is-nix + - idiots-and-maniacs + - bazel-build + - yaml-in-python + - see-state + + +compiling-containers-dockerfiles-llvm-and-buildkit: + - what-is-buildkit-and-what-can-i-do-with-it + - repeatable-builds-every-time + - docker-multistage + - docker-and-makefiles + - docker-vs-buildah-vs-kaniko + - push-docker-image-bazel + - chroot + - build-golang-bazel-gazelle + - macOS-native-containers + - containerd-vs-docker + + +understanding-bash: + - bash-variables + - shell-functions-arguments + - bash-conditionals + - automate-tasks-shell-scripts + - bash-read-files + - loops-in-bash + - safely-using-bash-eval + - bash-string + - ess-linux-term-cmd + - repeatable-builds-every-time + + +slow-performance-in-jenkins: + - jenkins-stages-pipelines + - bitbucket-ci + - what-makes-earthly-fast + - earthly-cloud-free-tier-launch + - gitlab-ci + - travis-ci-alternatives + - ci-cd-security-challenges-best-practices + - achieving-repeatability + - jruby + - repeatable-builds-every-time + + +wes-mckinney: + - new-fundings-at-earthly + - the-world-deserves-better-builds + - launching-earthly-CI + - python-earthly + - introducing-earthly-build-automation-for-the-container-era + - earthly-github-actions + - phoenix + - earthly-cloud-free-tier-launch + - open-source-startup-podcast + - welcome-josh + + +real-time-phoenix-elixir: + - phoenix + - azure-functions + - rails-with-docker + - netlify-cloud-functions + - aws-lambda-docker + - build-real-time-comm-app + - new-fundings-at-earthly + - golang-streamers + - cicd-build-github-action-dockerhub + - earthly-github-actions + + +brown-green-language: + - programming-language-improvements + - on-yaml-discussions + - bazel-build + - bullshit-software-projects + - dont-configure-control-flow + - idiots-and-maniacs + - blue-green + - golang-streamers + - see-state + - line-staff + + +docker-networking: + - k8s-networking + - docker-volumes + - docker-vs-vm + - docker-image-storage-on-host + - containerd-vs-docker + - debugging-docker-containers + - linux-network-commands + - docker-mysql + - docker-vagrant + - youre-using-docker-compose-wrong + + +monorepo-with-bazel: + - building-js-monorepo + - monorepo-tools + - using-bazel-with-typescript + - bazel-build + - build-nodejs-app-with-bazel + - setup-typescript-monorepo + - understanding-monorepos + - push-docker-image-bazel + - bazel-with-rust + - build-java-projects-with-bazel + + +dos-gaming-in-docker: + - how-to-use-docker-in-vscode + - earthly-podman + - cicd-build-github-action-dockerhub + - python-docker + - docker-slim + - aws-lambda-docker + - introducing-earthly-build-automation-for-the-container-era + - aws-ecs-tutorial + - build-your-own-ngrok-clone + - devcontainers + + +continuous-integration: + - ci-vs-cd + - achieving-repeatability + - gitlab-ci + - ci-cd-security-challenges-best-practices + - continuous-testing-in-devops + - ios-continuous-integration-pipeline + - bitbucket-ci + - travis-bitbucket + - travis-ci-alternatives + - earthly-cloud-free-tier-launch + + +repeatable-builds-every-time: + - what-makes-earthly-fast + - the-world-deserves-better-builds + - better-builds + - docker-multistage + - introducing-earthly-build-automation-for-the-container-era + - docker-and-makefiles + - achieving-repeatability + - monorepo-with-bazel + - push-docker-image-bazel + - monorepo-tools + + +docker-multistage: + - repeatable-builds-every-time + - docker-and-makefiles + - what-is-buildkit-and-what-can-i-do-with-it + - what-makes-earthly-fast + - push-docker-image-bazel + - better-builds + - rails-with-docker + - docker-vs-chef + - introducing-earthly-build-automation-for-the-container-era + - the-world-deserves-better-builds + + +backward-and-forward-compatibility: + - buf-protobuf + - golang-grpc-example + - protobufs-and-grpc + - software-design-go-interfaces + - write-better-tutorials + - golang-monorepo + - golang-grpc-gateway + - optimize-golang-for-kubernetes + - lambda-grpc + - build-golang-bazel-gazelle + + +jruby: + - slow-performance-in-jenkins + - programming-language-improvements + - rails-with-docker + - travis-ci-alternatives + - migrating-from-travis + - docker-vagrant + - what-makes-earthly-fast + - dont-configure-control-flow + - bazel-build + - ruby-rogues + + +achieving-repeatability: + - continuous-integration + - ci-vs-cd + - gitlab-ci + - repeatable-builds-every-time + - continuous-testing-in-devops + - ci-cd-security-challenges-best-practices + - launching-earthly-CI + - earthly-cloud-free-tier-launch + - jenkins-stages-pipelines + - ios-continuous-integration-pipeline + + +creating-and-hosting-your-own-deb-packages-and-apt-repo: + - creating-and-hosting-your-own-rpm-packages-and-yum-repo + - private-docker-registry + - cross-compiling-raspberry-pi + - repeatable-builds-every-time + - github-actions-environment-variables-and-secrets + - cmake-gcc-cross-compile + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - g++-makefile + - gitlab-ci + + +autoconf: + - make-tutorial + - g++-makefile + - using-cmake + - cmake-gcc-cross-compile + - cmake-vs-make-diff + - vscode-make + - makefiles-on-windows + - repeatable-builds-every-time + - python-makefile + - make-flags + + +thought-leaders: + - see-state + - confidently-uncertain + - idiots-and-maniacs + - the-opinionated-way-in-which-we-interview-engineers + - bullshit-software-projects + - dont-be-weird + - stop-10x-developer + - diluting-dora + - misaligned-incentives + - golang-streamers + + +deployment-strategies: + - deployment-strategies-kubernetes + - blue-green + - canary-deployment + - octopus-deploy + - ci-vs-cd + - canary-deployment-in-k8s + - gitlab-ci + - openshift-vs-kubernetes + - jenkins-stages-pipelines + - git-branching + + +incident-management-metrics: + - the-roi-of-fast + - achieving-repeatability + - idiots-and-maniacs + - misaligned-incentives + - continuous-testing-in-devops + - ci-comparison + - aws-cloudwatch + - earthly-cloud-free-tier-launch + - shutting-down-earthly-ci + - devops-glossary + + +git-branching: + - monorepo-vs-polyrepo + - gitlab-ci + - migrating-from-travis + - repeatable-builds-every-time + - ci-vs-cd + - blue-green + - deployment-strategies + - advanced-git-commands + - continuous-integration + - misaligned-incentives + + +15-minute-project: + - misaligned-incentives + - earthly-cloud-free-tier-launch + - python-earthly + - the-world-deserves-better-builds + - what-makes-earthly-fast + - introducing-earthly-build-automation-for-the-container-era + - the-roi-of-fast + - see-state + - platform-values + - the-next-iteration + + +creating-and-hosting-your-own-rpm-packages-and-yum-repo: + - creating-and-hosting-your-own-deb-packages-and-apt-repo + - earthly-podman + - repeatable-builds-every-time + - private-docker-registry + - earthly-github-actions + - aws-ecr-github-actions + - cicd-build-github-action-dockerhub + - automate-micsvcs-in-k8s + - github-actions-and-docker + - bazel-with-rust + + +markdown-lint: + - yaml-validate-and-lint-cue-lang + - monorepo-tools + - validate-&-clean-yaml + - building-js-monorepo + - programming-language-improvements + - command-line-tools + - dont-configure-control-flow + - devetools-for-k8s + - understanding-bash + - repeatable-builds-every-time + + +video-camera-on: + - see-state + - golang-streamers + - thought-leaders + - the-opinionated-way-in-which-we-interview-engineers + - confidently-uncertain + - idiots-and-maniacs + - bullshit-software-projects + - printf-debugging + - programming-language-improvements + - build-transpose + + +g++-makefile: + - cmake-gcc-cross-compile + - vscode-make + - make-tutorial + - cmake-vs-make-diff + - using-cmake + - python-makefile + - golang-makefile + - makefiles-on-windows + - make-flags + - makefile-variables + + +python-concatenate-lists: + - python-timsort-merge + - bash-string + - yaml-in-python + - magic-methods-python + - python-classes-and-objects + - python-data-classes + - python-3.11-new-features + - error-handling-in-python + - python-docker + - python-makefile + + +python-makefile: + - make-tutorial + - golang-makefile + - vscode-make + - g++-makefile + - makefiles-on-windows + - makefile-variables + - cmake-vs-make-diff + - python-docker + - docker-and-makefiles + - make-flags + + +python-timsort-merge: + - python-concatenate-lists + - stop-using-pie-charts + - python-data-classes-vs-namedtuples + - magic-methods-python + - circle-ci-with-django + - python-data-classes + - programming-language-improvements + - python-3.11-new-features + - improve-django-performance-caching + - more-on-python-data-classes + + +golang-makefile: + - make-tutorial + - docker-and-makefiles + - python-makefile + - g++-makefile + - vscode-make + - build-golang-bazel-gazelle + - makefile-variables + - using-makefile-wildcards + - golang-monorepo + - makefiles-on-windows + + +python-matplotlib-docker: + - python-docker + - running-Grafana-in-Docker + - rails-with-docker + - stop-using-pie-charts + - python-earthly + - streamlit-python-dashboard + - mongodb-docker + - devcontainers + - earthly-podman + - cross-compiling-raspberry-pi + + +command-line-tools: + - ess-linux-term-cmd + - monorepo-tools + - fish-shell + - devetools-for-k8s + - advanced-git-commands + - programming-language-improvements + - linux-text-processing-commands + - advanced-git-commands-2 + - repeatable-builds-every-time + - mng-dotfiles-with-git + + +continuous-testing-in-devops: + - continuous-integration + - achieving-repeatability + - ios-continuous-integration-pipeline + - gitlab-ci + - github-actions-and-docker + - ci-vs-cd + - ci-cd-security-challenges-best-practices + - travis-bitbucket + - aws-ecr-github-actions + - terraform-with-github-actions + + +vscode-make: + - g++-makefile + - make-tutorial + - makefiles-on-windows + - using-cmake + - python-makefile + - cmake-vs-make-diff + - golang-makefile + - makefile-variables + - make-flags + - docker-and-makefiles + + +idiots-and-maniacs: + - see-state + - bullshit-software-projects + - thought-leaders + - golang-streamers + - stop-10x-developer + - programming-language-improvements + - dont-be-weird + - devops-glossary + - misaligned-incentives + - repeatable-builds-every-time + + +convert-to-from-json: + - jq-select + - awk-csv + - sed-find-replace + - dont-configure-control-flow + - bash-read-files + - ess-linux-term-cmd + - command-line-tools + - understanding-bash + - golang-csv-files + - devetools-for-k8s + + +plotting-rainfall-data-with-python-and-matplotlib: + - analyze-amzndata-pyth + - stop-using-pie-charts + - streamlit-python-dashboard + - csv-python + - build-news-classifier-nlp-newsapi-lr + - python-poetry + - yaml-in-python + - python-matplotlib-docker + - python-earthly + - psycopg2-postgres-python + + +jq-select: + - convert-to-from-json + - bash-string + - bash-variables + - shell-functions-arguments + - linux-text-processing-commands + - awk-examples + - ess-linux-term-cmd + - understanding-bash + - sed-find-replace + - linux-uniq-command + + +make-flags: + - makefile-variables + - make-tutorial + - g++-makefile + - using-makefile-wildcards + - vscode-make + - makefiles-on-windows + - cmake-vs-make-diff + - python-makefile + - using-cmake + - golang-makefile + + +make-tutorial: + - makefile-variables + - python-makefile + - golang-makefile + - using-makefile-wildcards + - g++-makefile + - vscode-make + - cmake-vs-make-diff + - autoconf + - docker-and-makefiles + - make-flags + + +ios-continuous-integration-pipeline: + - gitlab-ci + - continuous-testing-in-devops + - cicd-build-github-action-dockerhub + - continuous-integration + - aws-ecr-github-actions + - travis-bitbucket + - github-actions-and-docker + - jenkins-stages-pipelines + - earthly-github-actions + - terraform-with-github-actions + + +hacktoberfest-2021: + - hacktoberfest-2020 + - grateful-for-hacktoberfest + - the-world-deserves-better-builds + - the-next-iteration + - earthly-open-source + - introducing-earthly-build-automation-for-the-container-era + - new-fundings-at-earthly + - earthly-github-actions + - earthly-v0-6 + - earthly-cloud-free-tier-launch + + +awk-examples: + - awk-csv + - linux-text-processing-commands + - bash-string + - understanding-bash + - shell-functions-arguments + - jq-select + - bash-read-files + - linux-uniq-command + - automate-tasks-shell-scripts + - sed-find-replace + + +pull-through-cache: + - what-makes-earthly-fast + - repeatable-builds-every-time + - how-to-setup-and-use-amazons-elastic-container-registry + - build-your-own-ngrok-clone + - caching-dependencies-github-actions + - earthly-podman + - private-docker-registry + - introducing-earthly-build-automation-for-the-container-era + - earthly-github-actions + - streamline-container-ghcr + + +bitbucket-ci: + - travis-bitbucket + - travis-ci-alternatives + - gitlab-ci + - earthly-cloud-free-tier-launch + - continuous-integration + - jenkins-stages-pipelines + - ci-comparison + - ci-vs-cd + - migrating-from-travis + - ci-cd-security-challenges-best-practices + + +platform-values: + - the-world-deserves-better-builds + - introducing-earthly-build-automation-for-the-container-era + - repeatable-builds-every-time + - the-next-iteration + - earthly-github-actions + - launching-earthly-CI + - what-makes-earthly-fast + - shutting-down-earthly-ci + - earthly-cloud-free-tier-launch + - python-earthly + + +travis-bitbucket: + - gitlab-ci + - bitbucket-ci + - cicd-build-github-action-dockerhub + - ios-continuous-integration-pipeline + - continuous-integration + - travis-ci-alternatives + - earthly-github-actions + - aws-ecr-github-actions + - ci-vs-cd + - continuous-testing-in-devops + + +dev-tool-time: + - software-engineering-daily + - ruby-rogues + - stackoverflow + - introducing-earthly-build-automation-for-the-container-era + - devetools-for-k8s + - effective-developer-podcast + - misaligned-incentives + - new-fundings-at-earthly + - earthly-github-actions + - coffee-and-opensource + + +confidently-uncertain: + - thought-leaders + - see-state + - bullshit-software-projects + - idiots-and-maniacs + - the-opinionated-way-in-which-we-interview-engineers + - golang-streamers + - dont-be-weird + - misaligned-incentives + - stop-10x-developer + - dont-configure-control-flow + + +ci-vs-cd: + - continuous-integration + - gitlab-ci + - achieving-repeatability + - ci-cd-security-challenges-best-practices + - octopus-deploy + - earthly-cloud-free-tier-launch + - jenkins-stages-pipelines + - docker-vs-chef + - bitbucket-ci + - blue-green + + +bash-string: + - bash-variables + - understanding-bash + - bash-conditionals + - bash-read-files + - loops-in-bash + - shell-functions-arguments + - sed-find-replace + - linux-text-processing-commands + - practical-guide-to-linux-echo-cmd + - ess-linux-term-cmd + + +canary-deployment: + - canary-deployment-in-k8s + - deployment-strategies-kubernetes + - deployment-strategies + - blue-green + - octopus-deploy + - gitlab-ci + - ci-vs-cd + - jenkins-stages-pipelines + - ci-cd-security-challenges-best-practices + - what-makes-earthly-fast + + +bash-variables: + - understanding-bash + - shell-functions-arguments + - bash-string + - makefile-variables + - github-actions-environment-variables-and-secrets + - bash-conditionals + - loops-in-bash + - terraform-variables-guide + - automate-tasks-shell-scripts + - bash-read-files + + +azure-functions-node: + - azure-functions + - netlify-cloud-functions + - aws-lambda-node + - aws-lambda-docker + - cicd-build-github-action-dockerhub + - octopus-deploy + - gitlab-ci + - build-nodejs-app-with-bazel + - travis-bitbucket + - how-to-use-docker-in-vscode + + +argocd-kubernetes: + - k8s-GitOps-with-FluxCD + - Flux-vs-Argo-CD + - gitlab-ci + - building-k8s-tekton + - spinnaker-kubernetes + - octopus-deploy + - devetools-for-k8s + - canary-deployment-in-k8s + - K3s-and-K8s + - kubernetes-terraform + + +octopus-deploy: + - gitlab-ci + - ci-vs-cd + - jenkins-stages-pipelines + - spinnaker-kubernetes + - kubernetes-terraform + - argocd-kubernetes + - building-k8s-tekton + - k8s-GitOps-with-FluxCD + - cicd-build-github-action-dockerhub + - blue-green + + +aws-lambda-node: + - aws-lambda-docker + - azure-functions-node + - netlify-cloud-functions + - azure-functions + - aws-ecs-tutorial + - deploy-DockerContainers-with-ECS + - aws-ecr-github-actions + - deploying-iac-aws-cloud-formation + - deploy-dockcontainers-to-AWSECS-using-Terraform + - cicd-build-github-action-dockerhub + + +awk-csv: + - golang-csv-files + - awk-examples + - convert-to-from-json + - property-based-testing + - write-better-tutorials + - bash-read-files + - sed-find-replace + - csv-python + - bash-string + - linux-uniq-command + + +jenkins-stages-pipelines: + - gitlab-ci + - octopus-deploy + - ci-vs-cd + - bitbucket-ci + - ios-continuous-integration-pipeline + - building-k8s-tekton + - continuous-integration + - cicd-build-github-action-dockerhub + - ci-cd-security-challenges-best-practices + - aws-ecr-github-actions + + +spinnaker-kubernetes: + - k8s-GitOps-with-FluxCD + - building-k8s-tekton + - octopus-deploy + - argocd-kubernetes + - kubernetes-terraform + - managing-k8s-with-kubeadm + - explore-portainer-as-tool + - automate-micsvcs-in-k8s + - gitlab-ci + - devetools-for-k8s + + +travis-ci-alternatives: + - bitbucket-ci + - ci-comparison + - migrating-from-travis + - docker-alternatives + - earthly-cloud-free-tier-launch + - gitlab-ci + - continuous-integration + - travis-bitbucket + - launching-earthly-CI + - circle-ci-with-django + + +property-based-testing: + - golang-csv-files + - write-better-tutorials + - awk-csv + - golang-makefile + - golang-monorepo + - golang-errors + - golang-zip-files + - cryptography-encryption-in-go + - software-design-go-interfaces + - tui-app-with-go + + +earthly-v0-6: + - earthly-v0-7 + - introducing-earthly-build-automation-for-the-container-era + - v0-3-0-released + - the-world-deserves-better-builds + - v0-3-2-released + - earthly-0-3-6-released + - launching-earthly-CI + - v0-2-0-released + - v0-1-3-released + - new-fundings-at-earthly + + +kubernetes-docker: + - dockercompose-vs-k8s + - k8s-dev-solutions + - K3s-and-K8s + - openshift-vs-kubernetes + - docker-vagrant + - docker-vs-vm + - docker-alternatives + - devetools-for-k8s + - nomad-vs-kubernetes + - containerd-vs-docker + + +podman-rootless: + - docker-alternatives + - earthly-podman + - containerd-vs-docker + - docker-vagrant + - kubernetes-docker + - docker-vs-vm + - macOS-native-containers + - docker-vs-buildah-vs-kaniko + - devetools-for-k8s + - explore-portainer-as-tool + + +containerd-vs-docker: + - kubernetes-docker + - lxc-vs-docker + - docker-alternatives + - dockercompose-vs-k8s + - docker-vs-vm + - docker-vagrant + - K3s-and-K8s + - openshift-vs-kubernetes + - podman-rootless + - macOS-native-containers + + +docker-vs-chef: + - docker-vagrant + - kubernetes-docker + - docker-vs-vm + - dockercompose-vs-k8s + - lxc-vs-docker + - openshift-vs-kubernetes + - docker-vs-buildah-vs-kaniko + - docker-alternatives + - containerd-vs-docker + - K3s-and-K8s + + +printf-debugging: + - cross-compiling-raspberry-pi + - programming-language-improvements + - golang-streamers + - idiots-and-maniacs + - see-state + - pants-build + - dont-configure-control-flow + - stop-10x-developer + - debugging-docker-containers + - video-camera-on + + +golang-http: + - golang-command-line + - golang-grpc-example + - golang-grpc-gateway + - aws-lambda-api-proxy + - aws-lambda-golang + - golang-sqlite + - golang-gin-framework + - mail-server-API-goroutines-gmail + - golang-chi + - build-GraphQL-APIs-Go + + +docker-secrets: + - kubernetes-secrets + - securing-kubernetes-secrets + - docker-volumes + - docker-mysql + - github-actions-environment-variables-and-secrets + - dockercompose-vs-k8s + - github-actions-and-docker + - explore-portainer-as-tool + - portainer-for-docker-container-management + - deploy-DockerContainers-with-ECS + + +golang-errors: + - learning-golang-common-mistakes-to-avoid + - software-design-go-interfaces + - write-better-tutorials + - concurrency-in-Go + - top-3-resources-to-learn-golang-in-2021 + - golang-csv-files + - using-gorm-go + - golang-gin-framework + - optimize-sql-queries-golang + - golang-http + + +golang-command-line: + - golang-http + - golang-grpc-example + - golang-sqlite + - golang-grpc-gateway + - aws-lambda-golang + - pongo + - aws-lambda-api-proxy + - mail-server-API-goroutines-gmail + - golang-gin-framework + - image-upload-api-cloudinary-golang + + +stop-using-pie-charts: + - plotting-rainfall-data-with-python-and-matplotlib + - streamlit-python-dashboard + - analyze-amzndata-pyth + - python-matplotlib-docker + - python-data-classes + - python-earthly + - circle-ci-with-django + - django-template-filters + - build-news-classifier-nlp-newsapi-lr + - magic-methods-python + + +blue-green: + - deployment-strategies + - deployment-strategies-kubernetes + - canary-deployment + - octopus-deploy + - canary-deployment-in-k8s + - ci-vs-cd + - gitlab-ci + - docker-vagrant + - kubernetes-terraform + - jenkins-stages-pipelines + + +docker-mysql: + - mongodb-docker + - docker-volumes + - postgres-docker + - docker-secrets + - running-Grafana-in-Docker + - docker-networking + - docker-image-storage-on-host + - portainer-for-docker-container-management + - python-docker + - explore-portainer-as-tool + + +golang-sqlite: + - using-gorm-go + - golang-grpc-example + - golang-http + - optimize-sql-queries-golang + - golang-command-line + - use-mongo-with-go + - build-GraphQL-APIs-Go + - golang-gin-framework + - golang-csv-files + - golang-grpc-gateway + + +docker-volumes: + - kubernetes-persistent-volumes + - docker-mysql + - mongodb-docker + - docker-image-storage-on-host + - docker-networking + - kubernetes-secrets + - how-to-use-docker-in-vscode + - docker-secrets + - docker-vagrant + - postgres-docker + + +gitlab-ci: + - ci-vs-cd + - travis-bitbucket + - octopus-deploy + - continuous-integration + - jenkins-stages-pipelines + - cicd-build-github-action-dockerhub + - ios-continuous-integration-pipeline + - aws-ecr-github-actions + - bitbucket-ci + - k8s-GitOps-with-FluxCD + + +golang-grpc-example: + - golang-grpc-gateway + - golang-http + - protobufs-and-grpc + - golang-command-line + - lambda-grpc + - buf-protobuf + - golang-sqlite + - aws-lambda-api-proxy + - build-GraphQL-APIs-Go + - mail-server-API-goroutines-gmail + + +lxc-vs-docker: + - docker-vs-vm + - docker-vagrant + - docker-alternatives + - kubernetes-docker + - containerd-vs-docker + - dockercompose-vs-k8s + - openshift-vs-kubernetes + - docker-vs-chef + - K3s-and-K8s + - nomad-vs-kubernetes + + +csv-python: + - yaml-in-python + - bash-read-files + - golang-csv-files + - python-classes-and-objects + - python-data-classes + - analyze-amzndata-pyth + - awk-csv + - write-better-tutorials + - starting-with-pymongo + - psycopg2-postgres-python + + +mongodb-docker: + - docker-mysql + - starting-with-pymongo + - postgres-docker + - python-docker + - docker-volumes + - helm-k8s-package-manager + - how-to-use-docker-in-vscode + - devcontainers + - rails-with-docker + - docker-secrets + + +welcome-josh: + - write-for-us-anniversary + - coffee-and-opensource + - tech-and-main-interview + - new-fundings-at-earthly + - stackoverflow + - write-for-us + - dev-tool-time + - jeff-bullas-interview + - software-engineering-daily + - earthly-github-actions + + +circle-ci-with-django: + - python-earthly + - python-docker + - gitlab-ci + - ci-comparison + - earthly-cloud-free-tier-launch + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - devcontainers + - deploy-DockerContainers-with-ECS + - earthly-github-actions + + +see-state: + - thought-leaders + - idiots-and-maniacs + - misaligned-incentives + - bullshit-software-projects + - dont-be-weird + - line-staff + - the-opinionated-way-in-which-we-interview-engineers + - 15-minute-project + - programming-language-improvements + - youre-using-docker-compose-wrong + + +golang-monorepo: + - go-workspaces + - setup-typescript-monorepo + - monorepo-vs-polyrepo + - monorepo-with-bazel + - nx-monorepos-guide + - build-golang-bazel-gazelle + - understanding-monorepos + - monorepo-tools + - javascript-monorepo-with-lerna + - build-monorepo-with-turporepo + + +golang-grpc-gateway: + - golang-grpc-example + - lambda-grpc + - aws-lambda-api-proxy + - golang-http + - protobufs-and-grpc + - buf-protobuf + - aws-lambda-golang + - golang-command-line + - golang-gin-framework + - golang-monorepo + + +buf-protobuf: + - golang-grpc-example + - golang-grpc-gateway + - backward-and-forward-compatibility + - protobufs-and-grpc + - build-golang-bazel-gazelle + - lambda-grpc + - golang-http + - golang-command-line + - bazel-with-rust + - golang-monorepo + + +aws-lambda-docker: + - aws-ecs-tutorial + - aws-lambda-node + - deploy-DockerContainers-with-ECS + - deploy-dockcontainers-to-AWSECS-using-Terraform + - aws-ecr-github-actions + - how-to-setup-and-use-amazons-elastic-container-registry + - github-actions-and-docker + - aws-lambda-golang + - terraform-lambda + - build-your-own-ngrok-clone + + +text-mode: + - aws-lambda-golang + - earthly-github-actions + - build-transpose + - introducing-earthly-build-automation-for-the-container-era + - netlify-cloud-functions + - aws-lambda-node + - aws-lambda-docker + - build-your-own-ngrok-clone + - using-bazel-with-typescript + - python-earthly + + +postgres-docker: + - docker-mysql + - mongodb-docker + - rails-with-docker + - kubernetes-secrets + - explore-portainer-as-tool + - docker-volumes + - running-Grafana-in-Docker + - psycopg2-postgres-python + - portainer-for-docker-container-management + - python-docker + + +write-for-us: + - write-for-us-anniversary + - earthly-github-actions + - the-next-iteration + - shutting-down-earthly-ci + - earthly-cloud-free-tier-launch + - misaligned-incentives + - new-fundings-at-earthly + - welcome-josh + - dev-tool-time + - the-world-deserves-better-builds + + +golang-streamers: + - build-transpose + - top-3-resources-to-learn-golang-in-2021 + - earthly-github-actions + - repeatable-builds-every-time + - idiots-and-maniacs + - programming-language-improvements + - the-world-deserves-better-builds + - introducing-earthly-build-automation-for-the-container-era + - coffee-and-opensource + - shutting-down-earthly-ci + + +bash-conditionals: + - loops-in-bash + - understanding-bash + - bash-variables + - shell-functions-arguments + - bash-read-files + - bash-string + - dont-configure-control-flow + - automate-tasks-shell-scripts + - ess-linux-term-cmd + - practical-guide-to-linux-echo-cmd + + +tui-app-with-go: + - pongo + - pong-part2 + - golang-gin-framework + - golang-http + - aws-lambda-golang + - golang-monorepo + - software-design-go-interfaces + - golang-chi + - build-golang-bazel-gazelle + - build-GraphQL-APIs-Go + + +earthly-open-source: + - every-open-core-company-should-be-a-source-available-company + - launching-earthly-CI + - the-world-deserves-better-builds + - introducing-earthly-build-automation-for-the-container-era + - earthly-cloud-free-tier-launch + - new-fundings-at-earthly + - open-source-startup-podcast + - shutting-down-earthly-ci + - misaligned-incentives + - earthly-github-actions + + +docker-vs-vm: + - docker-vagrant + - lxc-vs-docker + - kubernetes-docker + - docker-alternatives + - containerd-vs-docker + - docker-vs-chef + - dockercompose-vs-k8s + - openshift-vs-kubernetes + - podman-rootless + - docker-networking + + +loops-in-bash: + - bash-conditionals + - bash-read-files + - understanding-bash + - bash-variables + - automate-tasks-shell-scripts + - bash-string + - shell-functions-arguments + - using-sleep + - ess-linux-term-cmd + - practical-guide-to-linux-echo-cmd + + +docker-alternatives: + - podman-rootless + - docker-vs-buildah-vs-kaniko + - kubernetes-docker + - docker-vagrant + - lxc-vs-docker + - docker-vs-vm + - containerd-vs-docker + - devetools-for-k8s + - K3s-and-K8s + - dockercompose-vs-k8s + + +programming-throwdown: + - stackoverflow + - software-engineering-daily + - open-source-startup-podcast + - ruby-rogues + - business-of-open-source-podcast + - coffee-and-opensource + - tech-and-main-interview + - earthly-open-source + - effective-developer-podcast + - new-fundings-at-earthly + + +python-docker: + - rails-with-docker + - mongodb-docker + - how-to-use-docker-in-vscode + - circle-ci-with-django + - cicd-build-github-action-dockerhub + - devcontainers + - deploy-DockerContainers-with-ECS + - github-actions-and-docker + - docker-mysql + - aws-ecs-tutorial + + +sed-find-replace: + - linux-text-processing-commands + - ess-linux-term-cmd + - bash-read-files + - understanding-bash + - bash-string + - practical-guide-to-linux-echo-cmd + - bash-conditionals + - linux-uniq-command + - automate-tasks-shell-scripts + - convert-to-from-json + + +docker-vagrant: + - docker-vs-vm + - lxc-vs-docker + - kubernetes-docker + - docker-alternatives + - docker-vs-chef + - containerd-vs-docker + - dockercompose-vs-k8s + - devcontainers + - nomad-vs-kubernetes + - openshift-vs-kubernetes + + +the-opinionated-way-in-which-we-interview-engineers: + - thought-leaders + - see-state + - line-staff + - stop-10x-developer + - golang-streamers + - confidently-uncertain + - platform-values + - programming-language-improvements + - dont-be-weird + - repeatable-builds-every-time + + +aws-lambda-golang: + - aws-lambda-api-proxy + - aws-lambda-docker + - lambda-grpc + - golang-http + - image-upload-api-cloudinary-golang + - aws-lambda-node + - golang-monorepo + - build-golang-bazel-gazelle + - golang-grpc-gateway + - build-GraphQL-APIs-Go + + +ci-comparison: + - travis-ci-alternatives + - earthly-cloud-free-tier-launch + - earthly-github-actions + - bitbucket-ci + - circle-ci-with-django + - migrating-from-travis + - what-makes-earthly-fast + - shutting-down-earthly-ci + - launching-earthly-CI + - the-roi-of-fast + + +docker-and-makefiles: + - golang-makefile + - repeatable-builds-every-time + - make-tutorial + - makefiles-on-windows + - docker-multistage + - push-docker-image-bazel + - vscode-make + - using-makefile-wildcards + - cicd-build-github-action-dockerhub + - docker-vs-chef + + +earthly-podman: + - podman-rootless + - docker-alternatives + - portainer-for-docker-container-management + - introducing-earthly-build-automation-for-the-container-era + - containerd-vs-docker + - macOS-native-containers + - explore-portainer-as-tool + - automate-micsvcs-in-k8s + - dockercompose-vs-k8s + - earthly-v0-7 + + +rails-with-docker: + - python-docker + - postgres-docker + - cicd-build-github-action-dockerhub + - how-to-use-docker-in-vscode + - devcontainers + - github-actions-and-docker + - dockercompose-vs-k8s + - mongodb-docker + - aws-ecs-tutorial + - docker-slim + + +kubernetes-config-maps: + - kubernetes-secrets + - kubernetes-persistent-volumes + - docker-volumes + - securing-kubernetes-secrets + - k8s-namespaces + - use-replicasets-in-k8s + - k8s-cluster-security + - kubernetes-terraform + - kubernetes-services + - docker-mysql + + +using-cmake: + - cmake-vs-make-diff + - installandrun-CMake-on-windows + - g++-makefile + - cmake-gcc-cross-compile + - vscode-make + - ninjabuild-for-faster-build + - make-tutorial + - makefiles-on-windows + - autoconf + - docker-and-makefiles + + +line-staff: + - misaligned-incentives + - see-state + - the-opinionated-way-in-which-we-interview-engineers + - stop-10x-developer + - docker-vagrant + - ci-vs-cd + - 15-minute-project + - docker-vs-chef + - devetools-for-k8s + - programming-language-improvements + + +makefiles-on-windows: + - vscode-make + - installandrun-CMake-on-windows + - cmake-vs-make-diff + - make-tutorial + - g++-makefile + - docker-and-makefiles + - python-makefile + - using-cmake + - using-makefile-wildcards + - make-flags + + +minikube: + - k8s-dev-solutions + - managing-k8s-with-k9s + - managing-k8s-with-kubeadm + - k8s-role-based-access-control + - securing-kubernetes-secrets + - kubernetes-secrets + - automate-micsvcs-in-k8s + - deploy-kubernetes-cri-o-container-runtime + - use-replicasets-in-k8s + - K3s-and-K8s + + +kubescape: + - validate-&-clean-yaml + - managing-k8s-with-k9s + - kube-bench + - k8s-cluster-security + - securing-kubernetes-secrets + - minikube + - managing-k8s-with-kubeadm + - devetools-for-k8s + - k8s-GitOps-with-FluxCD + - kubernetes-terraform + + +bash-read-files: + - loops-in-bash + - understanding-bash + - bash-conditionals + - automate-tasks-shell-scripts + - bash-string + - bash-variables + - practical-guide-to-linux-echo-cmd + - ess-linux-term-cmd + - sed-find-replace + - shell-functions-arguments + + +lambda-grpc: + - golang-grpc-gateway + - aws-lambda-api-proxy + - golang-grpc-example + - aws-lambda-golang + - protobufs-and-grpc + - aws-lambda-docker + - build-golang-bazel-gazelle + - build-GraphQL-APIs-Go + - golang-monorepo + - golang-http + + +kubernetes-persistent-volumes: + - docker-volumes + - kubernetes-secrets + - kubernetes-config-maps + - use-replicasets-in-k8s + - k8s-namespaces + - docker-mysql + - kubernetes-services + - k8s-cluster-security + - k8s-autoscaling + - kubernetes-terraform + + +kubernetes-terraform: + - K3s-and-K8s + - devetools-for-k8s + - nomad-vs-kubernetes + - dockercompose-vs-k8s + - terraform-with-github-actions + - building-k8s-tekton + - openshift-vs-kubernetes + - terraform-init-plan-apply + - kubernetes-docker + - pulumi-vs-terraform + + +k8s-namespaces: + - devetools-for-k8s + - k8s-networking + - K3s-and-K8s + - kubernetes-operators + - kubernetes-terraform + - kubernetes-secrets + - k8s-cluster-security + - managing-k8s-with-k9s + - use-replicasets-in-k8s + - nomad-vs-kubernetes + + +homebrew-on-m1: + - using-apple-silicon-m1-as-a-cloud-engineer-two-months-in + - macOS-native-containers + - migrating-from-travis + - understanding-bash + - lima + - devcontainers + - repeatable-builds-every-time + - earthly-open-source + - introducing-earthly-build-automation-for-the-container-era + - podman-rootless + + +k8s-autoscaling: + - kubernetes-terraform + - devetools-for-k8s + - kubernetes-operators + - k8s-namespaces + - k8s-networking + - use-replicasets-in-k8s + - kubernetes-services + - K3s-and-K8s + - spinnaker-kubernetes + - automate-micsvcs-in-k8s + + +k8s-networking: + - kubernetes-services + - app-routing-in-k8-cluster + - kubernetes-network-policies + - docker-networking + - k8s-namespaces + - K3s-and-K8s + - managing-k8s-with-kubeadm + - devetools-for-k8s + - building-on-kubernetes-ingress + - aws-networks + + +aws-lambda-api-proxy: + - aws-lambda-golang + - lambda-grpc + - golang-grpc-gateway + - golang-http + - aws-lambda-docker + - golang-gin-framework + - golang-chi + - build-GraphQL-APIs-Go + - image-upload-api-cloudinary-golang + - golang-grpc-example + + +yaml-validate-and-lint-cue-lang: + - validate-&-clean-yaml + - dont-configure-control-flow + - markdown-lint + - on-yaml-discussions + - intercal-yaml-and-other-horrible-programming-languages + - terraform-variables-guide + - understanding-bash + - build-transpose + - kubescape + - introducing-earthly-build-automation-for-the-container-era + + +k8s-dev-solutions: + - kubernetes-docker + - K3s-and-K8s + - devetools-for-k8s + - docker-alternatives + - minikube + - dockercompose-vs-k8s + - openshift-vs-kubernetes + - nomad-vs-kubernetes + - docker-vs-buildah-vs-kaniko + - managing-k8s-with-kubeadm + + +building-k8s-tekton: + - k8s-GitOps-with-FluxCD + - cicd-build-github-action-dockerhub + - kubernetes-terraform + - gitlab-ci + - spinnaker-kubernetes + - aws-ecr-github-actions + - automate-micsvcs-in-k8s + - devetools-for-k8s + - argocd-kubernetes + - github-actions-and-docker + + +multi-factor-auth: + - AWS-IAM + - github-actions-environment-variables-and-secrets + - docker-secrets + - securing-kubernetes-secrets + - build-transpose + - terraform-with-github-actions + - automate-micsvcs-in-k8s + - earthly-github-actions + - python-earthly + - repeatable-builds-every-time + + +introduction-pyscript: + - python-docker + - streamlit-python-dashboard + - circle-ci-with-django + - pants-python-monorepo + - playwright-python-api-testing + - understanding-bash + - starting-with-pymongo + - python-earthly + - yaml-in-python + - python-poetry + + +software-engineering-daily: + - stackoverflow + - ruby-rogues + - open-source-startup-podcast + - the-world-deserves-better-builds + - effective-developer-podcast + - introducing-earthly-build-automation-for-the-container-era + - dev-tool-time + - programming-throwdown + - tech-and-main-interview + - phoenix + + +programming-language-improvements: + - brown-green-language + - devetools-for-k8s + - bazel-build + - monorepo-tools + - what-is-nix + - dont-configure-control-flow + - pants-build + - command-line-tools + - top-3-resources-to-learn-golang-in-2021 + - on-yaml-discussions + + +pulumi-vs-terraform: + - kubernetes-terraform + - terraform-init-plan-apply + - IaC-terraform-cdk + - deploying-iac-aws-cloud-formation + - terraform-with-github-actions + - terraform-variables-guide + - terraform-functions + - nomad-vs-kubernetes + - docker-vagrant + - openshift-vs-kubernetes + + +open-source-startup-podcast: + - business-of-open-source-podcast + - coffee-and-opensource + - effective-developer-podcast + - tech-and-main-interview + - jeff-bullas-interview + - software-engineering-daily + - podcast-earthly + - stackoverflow + - new-fundings-at-earthly + - programming-throwdown + + +devcontainers: + - how-to-use-docker-in-vscode + - docker-vagrant + - python-docker + - macOS-native-containers + - github-actions-and-docker + - devetools-for-k8s + - circle-ci-with-django + - rails-with-docker + - kubernetes-docker + - aws-ecs-tutorial + + +analyze-amzndata-pyth: + - plotting-rainfall-data-with-python-and-matplotlib + - streamlit-python-dashboard + - stop-using-pie-charts + - build-news-classifier-nlp-newsapi-lr + - csv-python + - starting-with-pymongo + - circle-ci-with-django + - python-data-classes + - awk-examples + - data-pipelines-with-airflow + + +podcast-earthly: + - open-source-startup-podcast + - effective-developer-podcast + - tech-and-main-interview + - coffee-and-opensource + - business-of-open-source-podcast + - jeff-bullas-interview + - stackoverflow + - devtool-fm + - software-engineering-daily + - earthly-cloud-free-tier-launch + + +terraform-lambda: + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-state-bucket + - terraform-init-plan-apply + - terraform-route53 + - aws-lambda-docker + - deploying-iac-aws-cloud-formation + - IaC-terraform-cdk + - terraform-with-github-actions + - aws-ecr-github-actions + - terraform-depends-on-argument + + +terraform-state-bucket: + - terraform-lambda + - terraform-init-plan-apply + - aws-s3-backup-recovery-restic + - terraform-with-github-actions + - deploy-dockcontainers-to-AWSECS-using-Terraform + - deploying-iac-aws-cloud-formation + - IaC-terraform-cdk + - terraform-route53 + - aws-lambda-golang + - aws-lambda-docker + + +use-mongo-with-go: + - starting-with-pymongo + - build-GraphQL-APIs-Go + - using-gorm-go + - optimize-sql-queries-golang + - mongodb-docker + - golang-gin-framework + - golang-sqlite + - golang-monorepo + - mail-server-API-goroutines-gmail + - golang-csv-files + + +docker-slim: + - rails-with-docker + - docker-multistage + - docker-alternatives + - how-to-use-docker-in-vscode + - push-docker-image-bazel + - earthly-podman + - docker-image-storage-on-host + - containerd-vs-docker + - docker-secrets + - repeatable-builds-every-time + + +pongo: + - pong-part2 + - tui-app-with-go + - golang-http + - aws-lambda-golang + - write-better-tutorials + - golang-monorepo + - golang-gin-framework + - build-golang-bazel-gazelle + - golang-command-line + - concurrency-in-Go + + +using-aws-graviton: + - using-apple-silicon-m1-as-a-cloud-engineer-two-months-in + - aws-ecs-tutorial + - aws-cloudwatch + - deploying-iac-aws-cloud-formation + - aws-lambda-docker + - remote-code-execution + - deploy-DockerContainers-with-ECS + - lambda-grpc + - aws-ecr-github-actions + - spinnaker-kubernetes + + +terraform-route53: + - terraform-lambda + - terraform-state-bucket + - build-your-own-ngrok-clone + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-init-plan-apply + - deploying-iac-aws-cloud-formation + - IaC-terraform-cdk + - aws-lambda-docker + - terraform-with-github-actions + - aws-networks + + +using-makefile-wildcards: + - make-tutorial + - makefile-variables + - make-flags + - makefiles-on-windows + - docker-and-makefiles + - g++-makefile + - golang-makefile + - vscode-make + - python-makefile + - using-cmake + + +docker-vs-buildah-vs-kaniko: + - docker-alternatives + - kubernetes-docker + - dockercompose-vs-k8s + - devetools-for-k8s + - K3s-and-K8s + - k8s-dev-solutions + - docker-vs-chef + - openshift-vs-kubernetes + - containerd-vs-docker + - nomad-vs-kubernetes + + +validate-&-clean-yaml: + - managing-k8s-with-k9s + - kubescape + - yaml-validate-and-lint-cue-lang + - managing-k8s-with-kubeadm + - minikube + - securing-kubernetes-secrets + - kube-bench + - devetools-for-k8s + - k8s-role-based-access-control + - kubernetes-secrets + + +cryptography-encryption-in-go: + - encrypting-data-with-ssh-keys-and-golang + - securing-kubernetes-secrets + - concurrency-in-Go + - image-upload-api-cloudinary-golang + - golang-zip-files + - use-mongo-with-go + - golang-csv-files + - software-design-go-interfaces + - golang-gin-framework + - using-gorm-go + + +managing-k8s-with-k9s: + - K3s-and-K8s + - minikube + - managing-k8s-with-kubeadm + - kubernetes-jobs-cron-jobs + - kubernetes-secrets + - grafana-and-prometheus-k8s + - simplify-k8s-using-cr-cp + - k8s-namespaces + - securing-kubernetes-secrets + - devetools-for-k8s + + +pong-part2: + - pongo + - tui-app-with-go + - golang-http + - aws-lambda-golang + - write-better-tutorials + - golang-command-line + - concurrency-in-Go + - learning-golang-common-mistakes-to-avoid + - golang-gin-framework + - mail-server-API-goroutines-gmail + + +stop-10x-developer: + - dx-three-ways + - idiots-and-maniacs + - thought-leaders + - line-staff + - the-opinionated-way-in-which-we-interview-engineers + - programming-language-improvements + - see-state + - golang-streamers + - diluting-dora + - devops-glossary + + +devetools-for-k8s: + - kubernetes-docker + - k8s-dev-solutions + - kubernetes-terraform + - docker-alternatives + - K3s-and-K8s + - openshift-vs-kubernetes + - docker-vs-buildah-vs-kaniko + - dockercompose-vs-k8s + - nomad-vs-kubernetes + - k8s-namespaces + + +kube-bench: + - managing-k8s-with-kubeadm + - managing-k8s-with-k9s + - kubescape + - securing-kubernetes-secrets + - validate-&-clean-yaml + - K3s-and-K8s + - k8s-cluster-security + - minikube + - grafana-and-prometheus-k8s + - kubernetes-jobs-cron-jobs + + +grafana-and-prometheus-k8s: + - monitoring-system-metrics-prometheus-grafana + - grafana-loki-log-aggregation-k8s + - k8s-GitOps-with-FluxCD + - running-Grafana-in-Docker + - helm-k8s-package-manager + - managing-k8s-with-k9s + - aws-cloudwatch + - kubernetes-jobs-cron-jobs + - explore-portainer-as-tool + - managing-k8s-with-kubeadm + + +ruby-rogues: + - software-engineering-daily + - stackoverflow + - programming-throwdown + - dev-tool-time + - open-source-startup-podcast + - jeff-bullas-interview + - effective-developer-podcast + - phoenix + - tech-and-main-interview + - business-of-open-source-podcast + + +ess-linux-term-cmd: + - linux-text-processing-commands + - advanced-git-commands + - command-line-tools + - sed-find-replace + - advanced-git-commands-2 + - practical-guide-to-linux-echo-cmd + - understanding-bash + - automate-tasks-shell-scripts + - mng-dotfiles-with-git + - linux-uniq-command + + +python-classes-and-objects: + - python-data-classes + - magic-methods-python + - more-on-python-data-classes + - abstract-base-classes-python + - python-data-classes-vs-namedtuples + - python-closures-decorators + - yaml-in-python + - error-handling-in-python + - psycopg2-postgres-python + - python-3.11-new-features + + +mng-dotfiles-with-git: + - a-developer-guide-to-git-lfs + - vscode-git + - ess-linux-term-cmd + - repeatable-builds-every-time + - devcontainers + - automate-tasks-shell-scripts + - gitlab-ci + - advanced-git-commands + - github-actions-environment-variables-and-secrets + - automate-micsvcs-in-k8s + + +bazel-build: + - monorepo-with-bazel + - pants-build + - build-java-projects-with-bazel + - push-docker-image-bazel + - using-bazel-with-typescript + - monorepo-tools + - build-golang-bazel-gazelle + - building-js-monorepo + - bazel-and-automated-tests + - bazel-with-rust + + +aws-networks: + - create-manage-vpc-terraform + - build-your-own-ngrok-clone + - aws-ecs-tutorial + - deploying-iac-aws-cloud-formation + - k8s-networking + - app-routing-in-k8-cluster + - deploy-dockcontainers-to-AWSECS-using-Terraform + - deploy-DockerContainers-with-ECS + - docker-networking + - terraform-init-plan-apply + + +automate-micsvcs-in-k8s: + - simplify-k8s-using-cr-cp + - introducing-earthly-build-automation-for-the-container-era + - managing-k8s-with-kubeadm + - kubernetes-terraform + - building-k8s-tekton + - cicd-build-github-action-dockerhub + - deploy-DockerContainers-with-ECS + - github-actions-and-docker + - deploy-dockcontainers-to-AWSECS-using-Terraform + - k8s-GitOps-with-FluxCD + + +face-recog-sys-with-jupyter: + - circle-ci-with-django + - python-docker + - python-earthly + - data-pipelines-with-airflow + - deploy-DockerContainers-with-ECS + - pants-python-monorepo + - streamlit-python-dashboard + - aws-ecs-tutorial + - cicd-build-github-action-dockerhub + - netlify-cloud-functions + + +lima: + - macOS-native-containers + - using-apple-silicon-m1-as-a-cloud-engineer-two-months-in + - earthly-podman + - devcontainers + - homebrew-on-m1 + - docker-vagrant + - docker-slim + - how-to-use-docker-in-vscode + - aws-lambda-docker + - docker-alternatives + + +Flux-vs-Argo-CD: + - k8s-GitOps-with-FluxCD + - argocd-kubernetes + - openshift-vs-kubernetes + - K3s-and-K8s + - devetools-for-k8s + - nomad-vs-kubernetes + - kubernetes-terraform + - building-k8s-tekton + - ci-vs-cd + - kubernetes-docker + + +use-replicasets-in-k8s: + - kubernetes-services + - kubernetes-secrets + - k8s-namespaces + - kubernetes-operators + - kubernetes-persistent-volumes + - rancher-managing-k8s + - K3s-and-K8s + - kubernetes-terraform + - setup-reverse-proxy-kubernetes-nginx + - automate-micsvcs-in-k8s + + +build-real-time-comm-app: + - django-signals + - python-microservices-rabbitmq-docker + - datastreaming-kafka-asyncio + - set-up-postgresql-db + - customize-django-admin-site + - circle-ci-with-django + - streamlit-python-dashboard + - improve-django-performance-caching + - django-template-filters + - python-docker + + +explore-portainer-as-tool: + - portainer-for-docker-container-management + - kubernetes-terraform + - running-Grafana-in-Docker + - aws-ecs-tutorial + - dockercompose-vs-k8s + - earthly-podman + - kubernetes-docker + - how-to-use-docker-in-vscode + - kubernetes-secrets + - spinnaker-kubernetes + + +set-up-postgresql-db: + - postgres-docker + - psycopg2-postgres-python + - python-microservices-rabbitmq-docker + - improve-django-performance-caching + - build-real-time-comm-app + - circle-ci-with-django + - customize-django-admin-site + - query-database-sqlalchemy-python + - django-signals + - starting-with-pymongo + + +build-GraphQL-APIs-Go: + - use-mongo-with-go + - using-gorm-go + - golang-gin-framework + - optimize-sql-queries-golang + - golang-chi + - build-golang-bazel-gazelle + - aws-lambda-api-proxy + - mail-server-API-goroutines-gmail + - aws-lambda-golang + - golang-http + + +K3s-and-K8s: + - openshift-vs-kubernetes + - nomad-vs-kubernetes + - kubernetes-docker + - dockercompose-vs-k8s + - k8s-dev-solutions + - kubernetes-terraform + - docker-alternatives + - rancher-managing-k8s + - devetools-for-k8s + - containerd-vs-docker + + +concurrency-in-Go: + - mail-server-API-goroutines-gmail + - learning-golang-common-mistakes-to-avoid + - rust-concurrency-patterns-parallel-programming + - concurrency-in-github-actions + - using-gorm-go + - go-modules + - golang-gin-framework + - cryptography-encryption-in-go + - software-design-go-interfaces + - top-3-resources-to-learn-golang-in-2021 + + +python-subprocess: + - psycopg2-postgres-python + - python-docker + - python-classes-and-objects + - python-makefile + - error-handling-in-python + - pants-python-monorepo + - python-poetry + - yaml-in-python + - understanding-bash + - ess-linux-term-cmd + + +how-to-use-docker-in-vscode: + - devcontainers + - cicd-build-github-action-dockerhub + - github-actions-and-docker + - python-docker + - docker-volumes + - deploy-DockerContainers-with-ECS + - explore-portainer-as-tool + - rails-with-docker + - docker-vagrant + - aws-ecs-tutorial + + +deploy-DockerContainers-with-ECS: + - aws-ecs-tutorial + - deploy-dockcontainers-to-AWSECS-using-Terraform + - aws-lambda-docker + - aws-ecr-github-actions + - github-actions-and-docker + - how-to-setup-and-use-amazons-elastic-container-registry + - deploying-iac-aws-cloud-formation + - automate-micsvcs-in-k8s + - how-to-use-docker-in-vscode + - python-docker + + +simplify-k8s-using-cr-cp: + - automate-micsvcs-in-k8s + - managing-k8s-with-k9s + - kubernetes-jobs-cron-jobs + - building-k8s-tekton + - kubernetes-operators + - k8s-GitOps-with-FluxCD + - app-routing-in-k8-cluster + - use-replicasets-in-k8s + - managing-k8s-with-kubeadm + - securing-kubernetes-secrets + + +go-workspaces: + - golang-monorepo + - npm-workspaces-monorepo + - build-golang-bazel-gazelle + - setup-typescript-monorepo + - go-modules + - monorepo-with-bazel + - nx-monorepos-guide + - golang-makefile + - aws-lambda-golang + - javascript-monorepo-with-lerna + + +chroot: + - macOS-native-containers + - containerd-vs-docker + - podman-rootless + - lxc-vs-docker + - earthly-podman + - docker-alternatives + - intro-to-Linux-capabilities + - compiling-containers-dockerfiles-llvm-and-buildkit + - systemd + - k8s-cluster-security + + +rancher-managing-k8s: + - K3s-and-K8s + - openshift-vs-kubernetes + - dockercompose-vs-k8s + - nomad-vs-kubernetes + - kubernetes-docker + - kubernetes-terraform + - containerd-vs-docker + - explore-portainer-as-tool + - docker-alternatives + - devetools-for-k8s + + +k8s-role-based-access-control: + - securing-kubernetes-secrets + - minikube + - k8s-cluster-security + - kubernetes-secrets + - managing-k8s-with-k9s + - k8s-namespaces + - managing-k8s-with-kubeadm + - simplify-k8s-using-cr-cp + - app-routing-in-k8-cluster + - use-replicasets-in-k8s + + +canary-deployment-in-k8s: + - canary-deployment + - deployment-strategies-kubernetes + - blue-green + - K3s-and-K8s + - kubernetes-operators + - spinnaker-kubernetes + - building-k8s-tekton + - gitlab-ci + - argocd-kubernetes + - rancher-managing-k8s + + +bullshit-software-projects: + - idiots-and-maniacs + - see-state + - thought-leaders + - confidently-uncertain + - line-staff + - misaligned-incentives + - pants-build + - programming-language-improvements + - brown-green-language + - the-opinionated-way-in-which-we-interview-engineers + + +helm-k8s-package-manager: + - grafana-and-prometheus-k8s + - kubernetes-operators + - k8s-GitOps-with-FluxCD + - mongodb-docker + - kubernetes-secrets + - managing-k8s-with-k9s + - devetools-for-k8s + - grafana-loki-log-aggregation-k8s + - building-k8s-tekton + - spinnaker-kubernetes + + +portainer-for-docker-container-management: + - explore-portainer-as-tool + - earthly-podman + - dockercompose-vs-k8s + - running-Grafana-in-Docker + - docker-mysql + - docker-secrets + - docker-volumes + - postgres-docker + - aws-ecs-tutorial + - how-to-use-docker-in-vscode + + +structural-pattern-matching-python: + - python-classes-and-objects + - pymongo-advanced + - python-3.11-new-features + - python-data-classes + - python-ast + - more-on-python-data-classes + - magic-methods-python + - python-data-classes-vs-namedtuples + - python-closures-decorators + - abstract-base-classes-python + + +dockercompose-vs-k8s: + - kubernetes-docker + - openshift-vs-kubernetes + - K3s-and-K8s + - nomad-vs-kubernetes + - containerd-vs-docker + - kubernetes-terraform + - docker-alternatives + - docker-vs-chef + - docker-vs-buildah-vs-kaniko + - lxc-vs-docker + + +running-Grafana-in-Docker: + - grafana-loki-log-aggregation-k8s + - grafana-and-prometheus-k8s + - monitoring-system-metrics-prometheus-grafana + - explore-portainer-as-tool + - portainer-for-docker-container-management + - docker-mysql + - postgres-docker + - docker-volumes + - grafana-https-nginx-certbot + - k8s-GitOps-with-FluxCD + + +managing-k8s-with-kubeadm: + - deploy-kubernetes-cri-o-container-runtime + - K3s-and-K8s + - managing-k8s-with-k9s + - automate-micsvcs-in-k8s + - minikube + - securing-kubernetes-secrets + - k8s-dev-solutions + - k8s-GitOps-with-FluxCD + - spinnaker-kubernetes + - building-k8s-tekton + + +buildingrunning-NVIDIAcontainer: + - aws-ecs-tutorial + - containerd-vs-docker + - earthly-podman + - explore-portainer-as-tool + - github-actions-and-docker + - streamline-container-ghcr + - docker-mysql + - deploy-kubernetes-cri-o-container-runtime + - how-to-use-docker-in-vscode + - cicd-build-github-action-dockerhub + + +cmake-vs-make-diff: + - using-cmake + - g++-makefile + - make-tutorial + - installandrun-CMake-on-windows + - vscode-make + - makefiles-on-windows + - cmake-gcc-cross-compile + - python-makefile + - docker-and-makefiles + - makefile-variables + + +monorepo-tools: + - building-js-monorepo + - monorepo-with-bazel + - understanding-monorepos + - pants-python-monorepo + - nx-monorepos-guide + - pants-build + - monorepo-vs-polyrepo + - build-monorepo-with-turporepo + - repeatable-builds-every-time + - bazel-build + + +app-routing-in-k8-cluster: + - k8s-networking + - mutual-tls-kubernetes-nginx-ingress-controller + - setup-reverse-proxy-kubernetes-nginx + - kubernetes-services + - aws-ecs-tutorial + - building-on-kubernetes-ingress + - k8s-GitOps-with-FluxCD + - building-k8s-tekton + - managing-k8s-with-kubeadm + - kubernetes-secrets + + +yaml-in-python: + - python-docker + - dont-configure-control-flow + - python-classes-and-objects + - csv-python + - python-data-classes + - python-poetry + - starting-with-pymongo + - query-database-sqlalchemy-python + - pytest-fixtures + - data-pipelines-with-airflow + + +k8s-GitOps-with-FluxCD: + - Flux-vs-Argo-CD + - argocd-kubernetes + - building-k8s-tekton + - gitlab-ci + - spinnaker-kubernetes + - grafana-and-prometheus-k8s + - kubernetes-terraform + - devetools-for-k8s + - managing-k8s-with-kubeadm + - automate-micsvcs-in-k8s + + +kubernetes-services: + - k8s-networking + - use-replicasets-in-k8s + - app-routing-in-k8-cluster + - kubernetes-secrets + - devetools-for-k8s + - kubernetes-terraform + - K3s-and-K8s + - k8s-namespaces + - dockercompose-vs-k8s + - k8s-autoscaling + + +starting-with-pymongo: + - pymongo-advanced + - mongodb-docker + - use-mongo-with-go + - psycopg2-postgres-python + - helm-k8s-package-manager + - query-database-sqlalchemy-python + - circle-ci-with-django + - python-microservices-rabbitmq-docker + - python-docker + - yaml-in-python + + +intro-to-Linux-capabilities: + - k8s-cluster-security + - earthly-podman + - chown-permissions-chmod + - k8s-namespaces + - docker-volumes + - macOS-native-containers + - ess-linux-term-cmd + - lxc-vs-docker + - linux-security-modules + - docker-alternatives + + +installandrun-CMake-on-windows: + - using-cmake + - makefiles-on-windows + - cmake-vs-make-diff + - vscode-make + - ninjabuild-for-faster-build + - cmake-gcc-cross-compile + - g++-makefile + - make-tutorial + - autoconf + - docker-alternatives + + +k8s-cluster-security: + - securing-kubernetes-secrets + - kubernetes-secrets + - intro-to-Linux-capabilities + - k8s-namespaces + - kubernetes-network-policies + - k8s-role-based-access-control + - managing-k8s-with-k9s + - earthly-podman + - kubernetes-jobs-cron-jobs + - mutual-tls-kubernetes-nginx-ingress-controller + + +docker-init-rust: + - docker-init-in-go + - docker-init-nodejs + - docker-init-in-python + - cargo-chef + - docker-init-quickly + - rust-monorepo + - docker-build-cloud + - konfig + - docker-buildx + - incremental-rust-builds + + +ninjabuild-for-faster-build: + - using-cmake + - installandrun-CMake-on-windows + - vscode-make + - cmake-vs-make-diff + - makefiles-on-windows + - g++-makefile + - make-tutorial + - build-java-projects-with-bazel + - repeatable-builds-every-time + - using-bazel-with-typescript + + +k8s-distributed-tracing: + - grafana-loki-log-aggregation-k8s + - spinnaker-kubernetes + - managing-k8s-with-k9s + - k8s-GitOps-with-FluxCD + - k8s-namespaces + - K3s-and-K8s + - building-k8s-tekton + - k8s-networking + - app-routing-in-k8-cluster + - automate-micsvcs-in-k8s + + +makefile-variables: + - make-tutorial + - make-flags + - using-makefile-wildcards + - g++-makefile + - bash-variables + - vscode-make + - golang-makefile + - python-makefile + - cmake-vs-make-diff + - terraform-variables-guide + + +python-with-statement: + - error-handling-in-python + - python-3.11-new-features + - psycopg2-postgres-python + - magic-methods-python + - python-classes-and-objects + - yaml-in-python + - python-closures-decorators + - python-poetry + - python-subprocess + - pytest-fixtures + + +setup-typescript-monorepo: + - npm-workspaces-monorepo + - javascript-monorepo-with-lerna + - build-monorepo-with-turporepo + - nx-monorepos-guide + - understanding-monorepos + - monorepo-with-bazel + - monorepo-vs-polyrepo + - building-js-monorepo + - golang-monorepo + - monorepo-tools + + +build-and-deploy-PyApp-with-bazel: + - build-nodejs-app-with-bazel + - bazel-and-automated-tests + - push-docker-image-bazel + - bazel-with-rust + - build-java-projects-with-bazel + - using-bazel-with-typescript + - monorepo-with-bazel + - build-golang-bazel-gazelle + - bazel-build + - pants-python-monorepo + + +deploy-dockcontainers-to-AWSECS-using-Terraform: + - aws-ecs-tutorial + - deploy-DockerContainers-with-ECS + - aws-ecr-github-actions + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - aws-lambda-docker + - terraform-init-plan-apply + - deploying-iac-aws-cloud-formation + - terraform-with-github-actions + - create-manage-vpc-terraform + + +vscode-git: + - mng-dotfiles-with-git + - how-to-use-docker-in-vscode + - devcontainers + - github-actions-environment-variables-and-secrets + - a-developer-guide-to-git-lfs + - javascript-monorepo-with-lerna + - gitlab-ci + - caching-dependencies-github-actions + - setup-typescript-monorepo + - earthly-github-actions + + +building-js-monorepo: + - monorepo-with-bazel + - monorepo-tools + - javascript-monorepo-with-lerna + - understanding-monorepos + - setup-typescript-monorepo + - build-monorepo-with-turporepo + - using-bazel-with-typescript + - monorepo-vs-polyrepo + - bazel-build + - nx-monorepos-guide + + +openshift-vs-kubernetes: + - K3s-and-K8s + - dockercompose-vs-k8s + - kubernetes-docker + - nomad-vs-kubernetes + - docker-alternatives + - containerd-vs-docker + - kubernetes-terraform + - rancher-managing-k8s + - devetools-for-k8s + - lxc-vs-docker + + +practical-guide-to-linux-echo-cmd: + - ess-linux-term-cmd + - linux-uniq-command + - understanding-bash + - bash-read-files + - linux-text-processing-commands + - bash-variables + - sed-find-replace + - shell-functions-arguments + - fish-shell + - chown-permissions-chmod + + +build-nodejs-app-with-bazel: + - using-bazel-with-typescript + - build-and-deploy-PyApp-with-bazel + - monorepo-with-bazel + - bazel-with-rust + - build-java-projects-with-bazel + - push-docker-image-bazel + - build-golang-bazel-gazelle + - bazel-and-automated-tests + - bazel-query + - bazel-build + + +psycopg2-postgres-python: + - query-database-sqlalchemy-python + - starting-with-pymongo + - postgres-docker + - set-up-postgresql-db + - circle-ci-with-django + - python-classes-and-objects + - python-subprocess + - python-with-statement + - pymongo-advanced + - python-docker + + +streamlit-python-dashboard: + - analyze-amzndata-pyth + - stop-using-pie-charts + - circle-ci-with-django + - introduction-pyscript + - python-docker + - data-pipelines-with-airflow + - python-earthly + - build-news-classifier-nlp-newsapi-lr + - customize-django-admin-site + - datastreaming-kafka-asyncio + + +launching-earthly-CI: + - earthly-cloud-free-tier-launch + - introducing-earthly-build-automation-for-the-container-era + - shutting-down-earthly-ci + - the-world-deserves-better-builds + - what-makes-earthly-fast + - earthly-github-actions + - new-fundings-at-earthly + - phoenix + - earthly-satellites-ga + - better-builds + + +new-fundings-at-earthly: + - the-world-deserves-better-builds + - launching-earthly-CI + - earthly-cloud-free-tier-launch + - introducing-earthly-build-automation-for-the-container-era + - phoenix + - shutting-down-earthly-ci + - earthly-github-actions + - earthly-v0-6 + - open-source-startup-podcast + - earthly-open-source + + +golang-gin-framework: + - golang-chi + - using-gorm-go + - build-GraphQL-APIs-Go + - golang-http + - optimize-sql-queries-golang + - aws-lambda-api-proxy + - image-upload-api-cloudinary-golang + - use-mongo-with-go + - golang-monorepo + - tui-app-with-go + + +earthly-v0-7: + - earthly-v0-6 + - introducing-earthly-build-automation-for-the-container-era + - v0-3-0-released + - launching-earthly-CI + - v0-2-0-released + - v0-3-2-released + - earthly-0-3-6-released + - earthly-satellites-ga + - the-world-deserves-better-builds + - earthly-github-actions + + +django-signals: + - build-real-time-comm-app + - customize-django-admin-site + - improve-django-performance-caching + - django-template-filters + - set-up-postgresql-db + - circle-ci-with-django + - python-microservices-rabbitmq-docker + - data-pipelines-with-airflow + - query-database-sqlalchemy-python + - python-closures-decorators + + +pymongo-advanced: + - starting-with-pymongo + - mongodb-docker + - use-mongo-with-go + - psycopg2-postgres-python + - query-database-sqlalchemy-python + - helm-k8s-package-manager + - python-microservices-rabbitmq-docker + - magic-methods-python + - kubernetes-operators + - structural-pattern-matching-python + + +remote-code-execution: + - earthly-satellites-ga + - shutting-down-earthly-ci + - earthly-github-actions + - launching-earthly-CI + - introducing-earthly-build-automation-for-the-container-era + - what-makes-earthly-fast + - earthly-cloud-free-tier-launch + - case-study-nocd + - the-world-deserves-better-builds + - automate-micsvcs-in-k8s + + +kubernetes-operators: + - K3s-and-K8s + - kubernetes-terraform + - helm-k8s-package-manager + - k8s-namespaces + - openshift-vs-kubernetes + - devetools-for-k8s + - building-k8s-tekton + - use-replicasets-in-k8s + - kubernetes-secrets + - k8s-GitOps-with-FluxCD + + +kubernetes-secrets: + - securing-kubernetes-secrets + - docker-secrets + - github-actions-environment-variables-and-secrets + - kubernetes-persistent-volumes + - k8s-cluster-security + - kubernetes-config-maps + - eso-with-hashicorp-vault + - use-replicasets-in-k8s + - postgres-docker + - docker-volumes + + +playwright-python-api-testing: + - pytest-fixtures + - bazel-and-automated-tests + - python-poetry + - circle-ci-with-django + - pants-python-monorepo + - github-actions-and-docker + - python-docker + - continuous-testing-in-devops + - python-earthly + - build-and-deploy-PyApp-with-bazel + + +python-3.11-new-features: + - error-handling-in-python + - python-with-statement + - python-classes-and-objects + - python-poetry + - python-data-classes + - python-earthly + - python-data-classes-vs-namedtuples + - psycopg2-postgres-python + - circle-ci-with-django + - abstract-base-classes-python + + +mutual-tls-kubernetes-nginx-ingress-controller: + - app-routing-in-k8-cluster + - securing-kubernetes-secrets + - setup-reverse-proxy-kubernetes-nginx + - kubernetes-secrets + - k8s-cluster-security + - grafana-https-nginx-certbot + - kubernetes-network-policies + - building-on-kubernetes-ingress + - managing-k8s-with-kubeadm + - k8s-networking + + +what-is-nix: + - programming-language-improvements + - npm-vs-npx-vs-pnmp + - ninjabuild-for-faster-build + - bazel-build + - monorepo-with-bazel + - repeatable-builds-every-time + - nx-monorepos-guide + - macOS-native-containers + - software-dependency-management + - monorepo-tools + + +aws-s3-backup-recovery-restic: + - k8s-log-compression-s3-upload + - terraform-state-bucket + - securing-kubernetes-secrets + - aws-ecr-github-actions + - deploy-dockcontainers-to-AWSECS-using-Terraform + - how-to-setup-and-use-amazons-elastic-container-registry + - aws-ecs-tutorial + - automate-tasks-shell-scripts + - deploy-DockerContainers-with-ECS + - deploying-iac-aws-cloud-formation + + +javascript-monorepo-with-lerna: + - setup-typescript-monorepo + - building-js-monorepo + - npm-workspaces-monorepo + - monorepo-with-bazel + - nx-monorepos-guide + - build-monorepo-with-turporepo + - earthly-github-actions + - understanding-monorepos + - monorepo-vs-polyrepo + - golang-monorepo + + +python-earthly: + - introducing-earthly-build-automation-for-the-container-era + - the-world-deserves-better-builds + - earthly-github-actions + - phoenix + - circle-ci-with-django + - launching-earthly-CI + - python-poetry + - better-builds + - what-makes-earthly-fast + - new-fundings-at-earthly + + +soc-type-one: + - earthly-satellites-ga + - earthly-github-actions + - earthly-cloud-free-tier-launch + - launching-earthly-CI + - new-fundings-at-earthly + - shutting-down-earthly-ci + - remote-code-execution + - platform-values + - earthly-open-source + - what-makes-earthly-fast + + +write-for-us-anniversary: + - write-for-us + - welcome-josh + - checklist + - earthly-github-actions + - earthly-cloud-free-tier-launch + - programming-language-improvements + - grateful-for-hacktoberfest + - shutting-down-earthly-ci + - hacktoberfest-2021 + - coffee-and-opensource + + +netlify-cloud-functions: + - azure-functions-node + - aws-lambda-node + - azure-functions + - aws-lambda-docker + - terraform-functions + - deploying-iac-aws-cloud-formation + - earthly-github-actions + - shell-functions-arguments + - IaC-terraform-cdk + - github-actions-environment-variables-and-secrets + + +pants-build: + - pants-python-monorepo + - monorepo-tools + - bazel-build + - monorepo-with-bazel + - repeatable-builds-every-time + - introducing-earthly-build-automation-for-the-container-era + - earthly-github-actions + - shutting-down-earthly-ci + - the-world-deserves-better-builds + - monorepo-vs-polyrepo + + +write-better-tutorials: + - golang-csv-files + - golang-errors + - golang-zip-files + - pongo + - learning-golang-common-mistakes-to-avoid + - software-design-go-interfaces + - top-3-resources-to-learn-golang-in-2021 + - property-based-testing + - golang-makefile + - optimize-sql-queries-golang + + +python-data-classes: + - more-on-python-data-classes + - python-classes-and-objects + - python-data-classes-vs-namedtuples + - abstract-base-classes-python + - magic-methods-python + - yaml-in-python + - python-closures-decorators + - query-database-sqlalchemy-python + - python-3.11-new-features + - psycopg2-postgres-python + + +customize-django-admin-site: + - django-template-filters + - improve-django-performance-caching + - django-signals + - circle-ci-with-django + - set-up-postgresql-db + - build-real-time-comm-app + - streamlit-python-dashboard + - data-pipelines-with-airflow + - deploy-DockerContainers-with-ECS + - query-database-sqlalchemy-python + + +django-template-filters: + - customize-django-admin-site + - improve-django-performance-caching + - circle-ci-with-django + - django-signals + - data-pipelines-with-airflow + - python-closures-decorators + - using-makefile-wildcards + - github-actions-environment-variables-and-secrets + - streamlit-python-dashboard + - introduction-pyscript + + +securing-kubernetes-secrets: + - kubernetes-secrets + - k8s-cluster-security + - k8s-role-based-access-control + - eso-with-hashicorp-vault + - docker-secrets + - mutual-tls-kubernetes-nginx-ingress-controller + - managing-k8s-with-kubeadm + - managing-k8s-with-k9s + - building-k8s-tekton + - minikube + + +more-on-python-data-classes: + - python-data-classes + - python-classes-and-objects + - python-data-classes-vs-namedtuples + - magic-methods-python + - abstract-base-classes-python + - psycopg2-postgres-python + - python-3.11-new-features + - customize-django-admin-site + - python-closures-decorators + - structural-pattern-matching-python + + +advanced-git-commands: + - advanced-git-commands-2 + - ess-linux-term-cmd + - linux-text-processing-commands + - mng-dotfiles-with-git + - command-line-tools + - a-developer-guide-to-git-lfs + - gitlab-ci + - devetools-for-k8s + - git-branching + - repeatable-builds-every-time + + +caching-dependencies-github-actions: + - earthly-github-actions + - github-action-artifacts + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - terraform-with-github-actions + - aws-ecr-github-actions + - concurrency-in-github-actions + - github-actions-environment-variables-and-secrets + - using-github-actions-locally + - composite-actions-github + + +golang-zip-files: + - golang-csv-files + - golang-makefile + - build-golang-bazel-gazelle + - golang-monorepo + - image-upload-api-cloudinary-golang + - software-design-go-interfaces + - write-better-tutorials + - go-modules + - go-workspaces + - cryptography-encryption-in-go + + +misaligned-incentives: + - earthly-cloud-free-tier-launch + - the-roi-of-fast + - new-fundings-at-earthly + - earthly-open-source + - shutting-down-earthly-ci + - the-world-deserves-better-builds + - what-makes-earthly-fast + - line-staff + - launching-earthly-CI + - devtool-fm + + +python-poetry: + - python-earthly + - software-dependency-management + - python-docker + - pants-python-monorepo + - playwright-python-api-testing + - python-makefile + - circle-ci-with-django + - caching-dependencies-github-actions + - data-pipelines-with-airflow + - yaml-in-python + + +learning-golang-common-mistakes-to-avoid: + - golang-errors + - concurrency-in-Go + - top-3-resources-to-learn-golang-in-2021 + - software-design-go-interfaces + - optimize-golang-for-kubernetes + - using-gorm-go + - optimize-sql-queries-golang + - golang-gin-framework + - mail-server-API-goroutines-gmail + - write-better-tutorials + + +pytest-fixtures: + - playwright-python-api-testing + - bazel-and-automated-tests + - python-earthly + - python-poetry + - continuous-testing-in-devops + - yaml-in-python + - circle-ci-with-django + - python-makefile + - pants-python-monorepo + - python-data-classes + + +bazel-and-automated-tests: + - build-and-deploy-PyApp-with-bazel + - push-docker-image-bazel + - using-bazel-with-typescript + - bazel-with-rust + - build-java-projects-with-bazel + - monorepo-with-bazel + - build-nodejs-app-with-bazel + - bazel-build + - build-golang-bazel-gazelle + - bazel-build-with-caching + + +load-testing-using-k6: + - monitoring-system-metrics-prometheus-grafana + - running-Grafana-in-Docker + - grafana-and-prometheus-k8s + - cronjobs-for-github-actions + - automate-micsvcs-in-k8s + - aws-lambda-node + - grafana-loki-log-aggregation-k8s + - managing-k8s-with-k9s + - aws-cloudwatch + - optimize-golang-for-kubernetes + + +eso-with-hashicorp-vault: + - kubernetes-secrets + - securing-kubernetes-secrets + - kubernetes-operators + - k8s-GitOps-with-FluxCD + - k8s-cluster-security + - managing-k8s-with-k9s + - docker-secrets + - k8s-role-based-access-control + - github-actions-environment-variables-and-secrets + - deploy-dockcontainers-to-AWSECS-using-Terraform + + +aws-ecr-github-actions: + - cicd-build-github-action-dockerhub + - github-actions-and-docker + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-with-github-actions + - aws-ecs-tutorial + - deploy-DockerContainers-with-ECS + - how-to-setup-and-use-amazons-elastic-container-registry + - gitlab-ci + - streamline-container-ghcr + - aws-lambda-docker + + +github-actions-environment-variables-and-secrets: + - kubernetes-secrets + - github-actions-and-docker + - github-action-artifacts + - aws-ecr-github-actions + - terraform-variables-guide + - terraform-with-github-actions + - cicd-build-github-action-dockerhub + - caching-dependencies-github-actions + - docker-secrets + - earthly-github-actions + + +error-handling-in-python: + - python-3.11-new-features + - python-with-statement + - python-classes-and-objects + - logging-in-python + - yaml-in-python + - psycopg2-postgres-python + - abstract-base-classes-python + - python-data-classes + - golang-errors + - understanding-bash + + +docker-image-storage-on-host: + - docker-volumes + - docker-networking + - docker-mysql + - containerd-vs-docker + - docker-vs-vm + - docker-secrets + - lxc-vs-docker + - understanding-docker-logging-and-log-files + - docker-multistage + - docker-vagrant + + +logging-in-python: + - understanding-docker-logging-and-log-files + - what-is-syslog + - error-handling-in-python + - yaml-in-python + - build-news-classifier-nlp-newsapi-lr + - python-docker + - python-3.11-new-features + - python-poetry + - python-classes-and-objects + - magic-methods-python + + +earthly-satellites-ga: + - shutting-down-earthly-ci + - earthly-github-actions + - case-study-nocd + - launching-earthly-CI + - what-makes-earthly-fast + - introducing-earthly-build-automation-for-the-container-era + - remote-code-execution + - earthly-cloud-free-tier-launch + - the-world-deserves-better-builds + - earthly-v0-6 + + +oauth-2-in-non-web-clients: + - azure-functions + - cicd-build-github-action-dockerhub + - circle-ci-with-django + - aws-lambda-node + - k8s-GitOps-with-FluxCD + - azure-functions-node + - face-recog-sys-with-jupyter + - python-docker + - streamline-container-ghcr + - gitlab-ci + + +linux-text-processing-commands: + - ess-linux-term-cmd + - sed-find-replace + - linux-uniq-command + - ripgrep-for-efficient-search + - advanced-git-commands + - practical-guide-to-linux-echo-cmd + - bash-string + - bash-read-files + - command-line-tools + - awk-examples + + +terraform-with-github-actions: + - github-actions-and-docker + - aws-ecr-github-actions + - earthly-github-actions + - cicd-build-github-action-dockerhub + - kubernetes-terraform + - terraform-init-plan-apply + - deploy-dockcontainers-to-AWSECS-using-Terraform + - IaC-terraform-cdk + - github-actions-environment-variables-and-secrets + - caching-dependencies-github-actions + + +github-actions-and-docker: + - cicd-build-github-action-dockerhub + - aws-ecr-github-actions + - using-github-actions-locally + - terraform-with-github-actions + - aws-ecs-tutorial + - deploy-dockcontainers-to-AWSECS-using-Terraform + - deploy-DockerContainers-with-ECS + - streamline-container-ghcr + - github-actions-environment-variables-and-secrets + - github-action-artifacts + + +cicd-build-github-action-dockerhub: + - aws-ecr-github-actions + - github-actions-and-docker + - streamline-container-ghcr + - deploy-dockcontainers-to-AWSECS-using-Terraform + - gitlab-ci + - terraform-with-github-actions + - building-k8s-tekton + - how-to-use-docker-in-vscode + - travis-bitbucket + - aws-ecs-tutorial + + +grafana-loki-log-aggregation-k8s: + - running-Grafana-in-Docker + - monitoring-system-metrics-prometheus-grafana + - grafana-and-prometheus-k8s + - k8s-GitOps-with-FluxCD + - helm-k8s-package-manager + - k8s-log-compression-s3-upload + - kubernetes-operators + - managing-k8s-with-k9s + - devetools-for-k8s + - explore-portainer-as-tool + + +aws-ecs-tutorial: + - deploy-DockerContainers-with-ECS + - deploy-dockcontainers-to-AWSECS-using-Terraform + - aws-lambda-docker + - github-actions-and-docker + - aws-ecr-github-actions + - how-to-setup-and-use-amazons-elastic-container-registry + - deploying-iac-aws-cloud-formation + - cicd-build-github-action-dockerhub + - app-routing-in-k8-cluster + - explore-portainer-as-tool + + +bazel-with-rust: + - using-bazel-with-typescript + - build-nodejs-app-with-bazel + - push-docker-image-bazel + - monorepo-with-bazel + - build-golang-bazel-gazelle + - build-and-deploy-PyApp-with-bazel + - bazel-and-automated-tests + - build-java-projects-with-bazel + - bazel-build + - repeatable-builds-every-time + + +setup-reverse-proxy-kubernetes-nginx: + - app-routing-in-k8-cluster + - private-docker-registry + - aws-ecs-tutorial + - use-replicasets-in-k8s + - mutual-tls-kubernetes-nginx-ingress-controller + - automate-micsvcs-in-k8s + - build-your-own-ngrok-clone + - grafana-https-nginx-certbot + - k8s-networking + - deploy-DockerContainers-with-ECS + + +query-database-sqlalchemy-python: + - psycopg2-postgres-python + - starting-with-pymongo + - python-data-classes + - set-up-postgresql-db + - yaml-in-python + - python-classes-and-objects + - python-docker + - pymongo-advanced + - data-pipelines-with-airflow + - circle-ci-with-django + + +ci-cd-security-challenges-best-practices: + - ci-vs-cd + - gitlab-ci + - continuous-integration + - achieving-repeatability + - software-dependency-management + - continuous-testing-in-devops + - bitbucket-ci + - jenkins-stages-pipelines + - travis-ci-alternatives + - earthly-cloud-free-tier-launch + + +data-pipelines-with-airflow: + - circle-ci-with-django + - deploy-DockerContainers-with-ECS + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - building-k8s-tekton + - kubernetes-terraform + - k8s-GitOps-with-FluxCD + - octopus-deploy + - terraform-with-github-actions + - aws-ecr-github-actions + + +push-docker-image-bazel: + - monorepo-with-bazel + - bazel-with-rust + - using-bazel-with-typescript + - bazel-and-automated-tests + - build-and-deploy-PyApp-with-bazel + - build-java-projects-with-bazel + - build-nodejs-app-with-bazel + - build-golang-bazel-gazelle + - bazel-build + - repeatable-builds-every-time + + +abstract-base-classes-python: + - python-classes-and-objects + - python-data-classes + - magic-methods-python + - python-ast + - python-closures-decorators + - python-data-classes-vs-namedtuples + - error-handling-in-python + - python-3.11-new-features + - query-database-sqlalchemy-python + - more-on-python-data-classes + + +improve-django-performance-caching: + - django-template-filters + - customize-django-admin-site + - circle-ci-with-django + - set-up-postgresql-db + - django-signals + - caching-dependencies-github-actions + - bazel-build-with-caching + - data-pipelines-with-airflow + - python-microservices-rabbitmq-docker + - python-docker + + +deploy-kubernetes-cri-o-container-runtime: + - managing-k8s-with-kubeadm + - K3s-and-K8s + - building-k8s-tekton + - containerd-vs-docker + - streamline-container-ghcr + - k8s-GitOps-with-FluxCD + - managing-k8s-with-k9s + - kubernetes-jobs-cron-jobs + - minikube + - k8s-networking + + +build-golang-bazel-gazelle: + - bazel-with-rust + - build-nodejs-app-with-bazel + - using-bazel-with-typescript + - push-docker-image-bazel + - monorepo-with-bazel + - build-java-projects-with-bazel + - build-and-deploy-PyApp-with-bazel + - bazel-build + - golang-makefile + - golang-monorepo + + +coffee-and-opensource: + - business-of-open-source-podcast + - open-source-startup-podcast + - jeff-bullas-interview + - tech-and-main-interview + - effective-developer-podcast + - devtool-fm + - programming-throwdown + - new-fundings-at-earthly + - earthly-open-source + - software-engineering-daily + + +golang-csv-files: + - golang-zip-files + - write-better-tutorials + - property-based-testing + - using-gorm-go + - awk-csv + - golang-sqlite + - use-mongo-with-go + - image-upload-api-cloudinary-golang + - cryptography-encryption-in-go + - go-modules + + +jeff-bullas-interview: + - tech-and-main-interview + - coffee-and-opensource + - business-of-open-source-podcast + - open-source-startup-podcast + - effective-developer-podcast + - software-engineering-daily + - devtool-fm + - stackoverflow + - earthly-cloud-free-tier-launch + - podcast-earthly + + +kubernetes-network-policies: + - k8s-networking + - k8s-cluster-security + - k8s-namespaces + - app-routing-in-k8-cluster + - mutual-tls-kubernetes-nginx-ingress-controller + - securing-kubernetes-secrets + - kubernetes-secrets + - kubernetes-services + - docker-networking + - k8s-role-based-access-control + + +optimize-golang-for-kubernetes: + - optimize-sql-queries-golang + - top-3-resources-to-learn-golang-in-2021 + - learning-golang-common-mistakes-to-avoid + - golang-monorepo + - managing-k8s-with-k9s + - aws-lambda-golang + - docker-and-makefiles + - setup-reverse-proxy-kubernetes-nginx + - kubernetes-terraform + - k8s-networking + + +python-data-classes-vs-namedtuples: + - python-data-classes + - more-on-python-data-classes + - python-classes-and-objects + - abstract-base-classes-python + - python-3.11-new-features + - python-closures-decorators + - yaml-in-python + - pytest-fixtures + - query-database-sqlalchemy-python + - structural-pattern-matching-python + + +using-bazel-with-typescript: + - build-nodejs-app-with-bazel + - monorepo-with-bazel + - bazel-with-rust + - build-java-projects-with-bazel + - push-docker-image-bazel + - bazel-and-automated-tests + - build-golang-bazel-gazelle + - build-and-deploy-PyApp-with-bazel + - bazel-build + - building-js-monorepo + + +private-docker-registry: + - how-to-setup-and-use-amazons-elastic-container-registry + - streamline-container-ghcr + - aws-ecs-tutorial + - setup-reverse-proxy-kubernetes-nginx + - github-actions-and-docker + - docker-secrets + - cicd-build-github-action-dockerhub + - grafana-https-nginx-certbot + - deploy-DockerContainers-with-ECS + - deploy-dockcontainers-to-AWSECS-using-Terraform + + +kubernetes-jobs-cron-jobs: + - k8s-log-compression-s3-upload + - cronjobs-for-github-actions + - managing-k8s-with-k9s + - building-k8s-tekton + - simplify-k8s-using-cr-cp + - kubernetes-secrets + - kubernetes-operators + - k8s-GitOps-with-FluxCD + - k8s-namespaces + - deploy-kubernetes-cri-o-container-runtime + + +chown-permissions-chmod: + - intro-to-Linux-capabilities + - ess-linux-term-cmd + - understanding-bash + - practical-guide-to-linux-echo-cmd + - bash-read-files + - mng-dotfiles-with-git + - a-developer-guide-to-git-lfs + - automate-tasks-shell-scripts + - k8s-cluster-security + - shell-functions-arguments + + +cmake-gcc-cross-compile: + - cross-compiling-raspberry-pi + - g++-makefile + - using-cmake + - cmake-vs-make-diff + - vscode-make + - autoconf + - makefiles-on-windows + - installandrun-CMake-on-windows + - make-flags + - make-tutorial + + +python-microservices-rabbitmq-docker: + - python-docker + - circle-ci-with-django + - mongodb-docker + - build-real-time-comm-app + - datastreaming-kafka-asyncio + - rails-with-docker + - deploy-DockerContainers-with-ECS + - set-up-postgresql-db + - data-pipelines-with-airflow + - kafka-vs-rabbitmq + + +bazel-query: + - build-java-projects-with-bazel + - monorepo-with-bazel + - using-bazel-with-typescript + - bazel-build + - build-nodejs-app-with-bazel + - push-docker-image-bazel + - bazel-with-rust + - build-golang-bazel-gazelle + - bazel-and-automated-tests + - bazel-build-with-caching + + +cross-compiling-raspberry-pi: + - cmake-gcc-cross-compile + - g++-makefile + - using-cmake + - vscode-make + - repeatable-builds-every-time + - static-and-dynamic-linking + - creating-and-hosting-your-own-deb-packages-and-apt-repo + - devcontainers + - installandrun-CMake-on-windows + - buildingrunning-NVIDIAcontainer + + +build-java-projects-with-bazel: + - using-bazel-with-typescript + - build-nodejs-app-with-bazel + - push-docker-image-bazel + - monorepo-with-bazel + - build-and-deploy-PyApp-with-bazel + - bazel-with-rust + - bazel-and-automated-tests + - bazel-build + - build-golang-bazel-gazelle + - bazel-query + + +automate-tasks-shell-scripts: + - shell-functions-arguments + - understanding-bash + - ess-linux-term-cmd + - bash-read-files + - bash-variables + - repeatable-builds-every-time + - bash-conditionals + - mng-dotfiles-with-git + - cicd-build-github-action-dockerhub + - loops-in-bash + + +linux-uniq-command: + - linux-text-processing-commands + - practical-guide-to-linux-echo-cmd + - ess-linux-term-cmd + - bash-read-files + - sed-find-replace + - understanding-bash + - loops-in-bash + - ripgrep-for-efficient-search + - command-line-tools + - automate-tasks-shell-scripts + + +bash-pushd-popd-commands: + - ess-linux-term-cmd + - fish-shell + - understanding-bash + - practical-guide-to-linux-echo-cmd + - advanced-git-commands-2 + - mng-dotfiles-with-git + - advanced-git-commands + - command-line-tools + - bash-variables + - shell-functions-arguments + + +a-developer-guide-to-git-lfs: + - mng-dotfiles-with-git + - gitlab-ci + - build-transpose + - k8s-GitOps-with-FluxCD + - advanced-git-commands + - github-action-artifacts + - caching-dependencies-github-actions + - javascript-monorepo-with-lerna + - earthly-github-actions + - vscode-git + + +rust-macros: + - rust-generics + - rust-concurrency-patterns-parallel-programming + - bazel-with-rust + - rust-lifetimes-ownership-burrowing + - rust-api-rocket-diesel + - make-tutorial + - using-makefile-wildcards + - programming-language-improvements + - makefile-variables + - terraform-functions + + +using-sleep: + - loops-in-bash + - ess-linux-term-cmd + - understanding-bash + - automate-tasks-shell-scripts + - practical-guide-to-linux-echo-cmd + - bash-read-files + - shell-functions-arguments + - bash-conditionals + - sed-find-replace + - bash-variables + + +earthly-github-actions: + - launching-earthly-CI + - introducing-earthly-build-automation-for-the-container-era + - what-makes-earthly-fast + - the-world-deserves-better-builds + - shutting-down-earthly-ci + - earthly-satellites-ga + - phoenix + - earthly-cloud-free-tier-launch + - terraform-with-github-actions + - python-earthly + + +k8s-log-compression-s3-upload: + - kubernetes-jobs-cron-jobs + - cronjobs-for-github-actions + - kubernetes-secrets + - grafana-loki-log-aggregation-k8s + - aws-s3-backup-recovery-restic + - k8s-GitOps-with-FluxCD + - aws-ecs-tutorial + - deploy-dockcontainers-to-AWSECS-using-Terraform + - building-k8s-tekton + - securing-kubernetes-secrets + + +terraform-init-plan-apply: + - IaC-terraform-cdk + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-depends-on-argument + - deploying-iac-aws-cloud-formation + - terraform-with-github-actions + - kubernetes-terraform + - terraform-variables-guide + - create-manage-vpc-terraform + - pulumi-vs-terraform + - terraform-functions + + +monitoring-system-metrics-prometheus-grafana: + - grafana-and-prometheus-k8s + - grafana-loki-log-aggregation-k8s + - running-Grafana-in-Docker + - aws-cloudwatch + - k8s-GitOps-with-FluxCD + - grafana-https-nginx-certbot + - load-testing-using-k6 + - helm-k8s-package-manager + - explore-portainer-as-tool + - portainer-for-docker-container-management + + +tech-and-main-interview: + - business-of-open-source-podcast + - effective-developer-podcast + - jeff-bullas-interview + - open-source-startup-podcast + - coffee-and-opensource + - software-engineering-daily + - stackoverflow + - devtool-fm + - new-fundings-at-earthly + - podcast-earthly + + +terraform-variables-guide: + - terraform-functions + - terraform-init-plan-apply + - github-actions-environment-variables-and-secrets + - terraform-depends-on-argument + - IaC-terraform-cdk + - terraform-with-github-actions + - bash-variables + - kubernetes-terraform + - makefile-variables + - create-manage-vpc-terraform + + +grafana-https-nginx-certbot: + - running-Grafana-in-Docker + - setup-reverse-proxy-kubernetes-nginx + - private-docker-registry + - securing-kubernetes-secrets + - monitoring-system-metrics-prometheus-grafana + - mutual-tls-kubernetes-nginx-ingress-controller + - grafana-and-prometheus-k8s + - grafana-loki-log-aggregation-k8s + - app-routing-in-k8-cluster + - build-your-own-ngrok-clone + + +build-news-classifier-nlp-newsapi-lr: + - streamlit-python-dashboard + - circle-ci-with-django + - analyze-amzndata-pyth + - logging-in-python + - python-poetry + - datastreaming-kafka-asyncio + - data-pipelines-with-airflow + - python-docker + - yaml-in-python + - face-recog-sys-with-jupyter + + +build-transpose: + - earthly-github-actions + - introducing-earthly-build-automation-for-the-container-era + - repeatable-builds-every-time + - the-world-deserves-better-builds + - what-makes-earthly-fast + - golang-streamers + - python-earthly + - a-developer-guide-to-git-lfs + - shutting-down-earthly-ci + - dont-configure-control-flow + + +IaC-terraform-cdk: + - deploying-iac-aws-cloud-formation + - terraform-init-plan-apply + - deploy-dockcontainers-to-AWSECS-using-Terraform + - kubernetes-terraform + - terraform-with-github-actions + - terraform-variables-guide + - terraform-depends-on-argument + - building-k8s-tekton + - terraform-lambda + - pulumi-vs-terraform + + +python-closures-decorators: + - python-classes-and-objects + - python-data-classes + - magic-methods-python + - abstract-base-classes-python + - pytest-fixtures + - django-template-filters + - python-docker + - python-with-statement + - error-handling-in-python + - improve-django-performance-caching + + +shell-functions-arguments: + - bash-variables + - understanding-bash + - automate-tasks-shell-scripts + - terraform-functions + - fish-shell + - bash-conditionals + - makefile-variables + - loops-in-bash + - netlify-cloud-functions + - bash-read-files + + +rust-concurrency-patterns-parallel-programming: + - rust-lifetimes-ownership-burrowing + - rust-generics + - concurrency-in-Go + - rust-macros + - bazel-with-rust + - rust-api-rocket-diesel + - concurrency-in-github-actions + - programming-language-improvements + - learning-golang-common-mistakes-to-avoid + - monorepo-with-bazel + + +bazel-build-with-caching: + - bazel-and-automated-tests + - monorepo-with-bazel + - using-bazel-with-typescript + - bazel-build + - push-docker-image-bazel + - caching-dependencies-github-actions + - build-java-projects-with-bazel + - bazel-query + - bazel-with-rust + - build-nodejs-app-with-bazel + + +rust-lifetimes-ownership-burrowing: + - rust-generics + - rust-concurrency-patterns-parallel-programming + - rust-macros + - bazel-with-rust + - rust-api-rocket-diesel + - programming-language-improvements + - static-and-dynamic-linking + - learning-golang-common-mistakes-to-avoid + - chown-permissions-chmod + - concurrency-in-Go + + +systemd: + - chroot + - what-is-syslog + - intro-to-Linux-capabilities + - earthly-podman + - macOS-native-containers + - repeatable-builds-every-time + - understanding-bash + - aws-lambda-golang + - compiling-containers-dockerfiles-llvm-and-buildkit + - kubernetes-jobs-cron-jobs + + +using-gorm-go: + - optimize-sql-queries-golang + - golang-gin-framework + - golang-sqlite + - use-mongo-with-go + - build-GraphQL-APIs-Go + - learning-golang-common-mistakes-to-avoid + - concurrency-in-Go + - mail-server-API-goroutines-gmail + - image-upload-api-cloudinary-golang + - golang-csv-files + + +effective-developer-podcast: + - tech-and-main-interview + - open-source-startup-podcast + - coffee-and-opensource + - business-of-open-source-podcast + - jeff-bullas-interview + - software-engineering-daily + - podcast-earthly + - stackoverflow + - new-fundings-at-earthly + - devtool-fm + + +cli-with-argparse: + - using-cmake + - build-and-deploy-PyApp-with-bazel + - python-subprocess + - python-makefile + - starting-with-pymongo + - logging-in-python + - pants-python-monorepo + - python-poetry + - python-docker + - ess-linux-term-cmd + + +software-design-go-interfaces: + - learning-golang-common-mistakes-to-avoid + - golang-errors + - go-modules + - golang-gin-framework + - golang-chi + - golang-monorepo + - golang-zip-files + - concurrency-in-Go + - optimize-sql-queries-golang + - image-upload-api-cloudinary-golang + + +magic-methods-python: + - python-classes-and-objects + - abstract-base-classes-python + - python-data-classes + - python-closures-decorators + - python-with-statement + - more-on-python-data-classes + - python-3.11-new-features + - error-handling-in-python + - pymongo-advanced + - starting-with-pymongo + + +earthly-cloud-free-tier-launch: + - launching-earthly-CI + - introducing-earthly-build-automation-for-the-container-era + - shutting-down-earthly-ci + - new-fundings-at-earthly + - what-makes-earthly-fast + - the-world-deserves-better-builds + - earthly-github-actions + - gitlab-ci + - earthly-satellites-ga + - ci-comparison + + +linux-network-commands: + - docker-networking + - ess-linux-term-cmd + - k8s-networking + - debugging-docker-containers + - aws-networks + - linux-text-processing-commands + - intro-to-Linux-capabilities + - practical-guide-to-linux-echo-cmd + - advanced-git-commands + - app-routing-in-k8-cluster + + +dont-configure-control-flow: + - on-yaml-discussions + - intercal-yaml-and-other-horrible-programming-languages + - repeatable-builds-every-time + - bash-conditionals + - yaml-validate-and-lint-cue-lang + - understanding-bash + - introducing-earthly-build-automation-for-the-container-era + - earthly-github-actions + - python-earthly + - yaml-in-python + + +streamline-container-ghcr: + - cicd-build-github-action-dockerhub + - github-actions-and-docker + - aws-ecr-github-actions + - how-to-setup-and-use-amazons-elastic-container-registry + - private-docker-registry + - building-k8s-tekton + - k8s-GitOps-with-FluxCD + - deploy-kubernetes-cri-o-container-runtime + - aws-ecs-tutorial + - kubernetes-secrets + + +rust-generics: + - rust-lifetimes-ownership-burrowing + - rust-macros + - rust-concurrency-patterns-parallel-programming + - rust-api-rocket-diesel + - bazel-with-rust + - software-design-go-interfaces + - programming-language-improvements + - terraform-variables-guide + - shell-functions-arguments + - using-makefile-wildcards + + +case-study-nocd: + - earthly-satellites-ga + - what-makes-earthly-fast + - shutting-down-earthly-ci + - launching-earthly-CI + - earthly-cloud-free-tier-launch + - earthly-github-actions + - the-world-deserves-better-builds + - introducing-earthly-build-automation-for-the-container-era + - remote-code-execution + - the-roi-of-fast + + +aws-cloudwatch: + - deploying-iac-aws-cloud-formation + - monitoring-system-metrics-prometheus-grafana + - grafana-and-prometheus-k8s + - aws-ecs-tutorial + - aws-lambda-node + - aws-ecr-github-actions + - deploy-DockerContainers-with-ECS + - aws-lambda-docker + - IaC-terraform-cdk + - AWS-IAM + + +ripgrep-for-efficient-search: + - linux-text-processing-commands + - ess-linux-term-cmd + - linux-uniq-command + - sed-find-replace + - command-line-tools + - advanced-git-commands + - bazel-with-rust + - fish-shell + - repeatable-builds-every-time + - monorepo-tools + + +debugging-docker-containers: + - how-to-use-docker-in-vscode + - docker-networking + - docker-mysql + - docker-volumes + - aws-ecs-tutorial + - understanding-docker-logging-and-log-files + - explore-portainer-as-tool + - containerd-vs-docker + - running-Grafana-in-Docker + - devcontainers + + +deploying-iac-aws-cloud-formation: + - IaC-terraform-cdk + - aws-ecs-tutorial + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-init-plan-apply + - aws-ecr-github-actions + - aws-cloudwatch + - deploy-DockerContainers-with-ECS + - terraform-with-github-actions + - terraform-depends-on-argument + - terraform-lambda + + +terraform-functions: + - terraform-variables-guide + - terraform-init-plan-apply + - terraform-with-github-actions + - shell-functions-arguments + - IaC-terraform-cdk + - netlify-cloud-functions + - deploying-iac-aws-cloud-formation + - kubernetes-terraform + - terraform-depends-on-argument + - deploy-dockcontainers-to-AWSECS-using-Terraform + + +business-of-open-source-podcast: + - coffee-and-opensource + - open-source-startup-podcast + - tech-and-main-interview + - jeff-bullas-interview + - effective-developer-podcast + - devtool-fm + - software-engineering-daily + - stackoverflow + - earthly-open-source + - programming-throwdown + + +dx-three-ways: + - stop-10x-developer + - misaligned-incentives + - line-staff + - ci-vs-cd + - continuous-integration + - diluting-dora + - devetools-for-k8s + - the-opinionated-way-in-which-we-interview-engineers + - see-state + - software-dependency-management + + +create-manage-vpc-terraform: + - aws-networks + - deploy-dockcontainers-to-AWSECS-using-Terraform + - terraform-init-plan-apply + - deploying-iac-aws-cloud-formation + - terraform-depends-on-argument + - aws-ecs-tutorial + - IaC-terraform-cdk + - terraform-variables-guide + - terraform-with-github-actions + - terraform-lambda + + +mail-server-API-goroutines-gmail: + - concurrency-in-Go + - golang-http + - build-GraphQL-APIs-Go + - image-upload-api-cloudinary-golang + - using-gorm-go + - aws-lambda-api-proxy + - golang-gin-framework + - use-mongo-with-go + - golang-grpc-example + - learning-golang-common-mistakes-to-avoid + + +AWS-IAM: + - deploying-iac-aws-cloud-formation + - terraform-init-plan-apply + - aws-cloudwatch + - multi-factor-auth + - k8s-role-based-access-control + - aws-ecr-github-actions + - aws-ecs-tutorial + - create-manage-vpc-terraform + - aws-networks + - terraform-variables-guide + + +python-ast: + - abstract-base-classes-python + - python-3.11-new-features + - python-classes-and-objects + - data-pipelines-with-airflow + - error-handling-in-python + - python-data-classes + - python-closures-decorators + - magic-methods-python + - structural-pattern-matching-python + - pytest-fixtures + + +image-upload-api-cloudinary-golang: + - aws-lambda-golang + - golang-gin-framework + - aws-lambda-api-proxy + - mail-server-API-goroutines-gmail + - golang-chi + - golang-zip-files + - using-gorm-go + - golang-http + - software-design-go-interfaces + - cryptography-encryption-in-go + + +what-is-syslog: + - logging-in-python + - understanding-docker-logging-and-log-files + - systemd + - grafana-loki-log-aggregation-k8s + - linux-network-commands + - intro-to-Linux-capabilities + - monitoring-system-metrics-prometheus-grafana + - linux-security-modules + - automate-tasks-shell-scripts + - ess-linux-term-cmd + + +nx-monorepos-guide: + - understanding-monorepos + - build-monorepo-with-turporepo + - npm-workspaces-monorepo + - setup-typescript-monorepo + - monorepo-tools + - javascript-monorepo-with-lerna + - monorepo-with-bazel + - monorepo-vs-polyrepo + - building-js-monorepo + - golang-monorepo + + +shutting-down-earthly-ci: + - launching-earthly-CI + - what-makes-earthly-fast + - earthly-cloud-free-tier-launch + - the-world-deserves-better-builds + - earthly-satellites-ga + - earthly-github-actions + - introducing-earthly-build-automation-for-the-container-era + - the-roi-of-fast + - case-study-nocd + - remote-code-execution + + +safely-using-bash-eval: + - understanding-bash + - bash-variables + - shell-functions-arguments + - practical-guide-to-linux-echo-cmd + - bash-conditionals + - automate-tasks-shell-scripts + - bash-string + - ci-cd-security-challenges-best-practices + - bash-read-files + - dont-configure-control-flow + + +diluting-dora: + - misaligned-incentives + - thought-leaders + - see-state + - idiots-and-maniacs + - the-opinionated-way-in-which-we-interview-engineers + - stop-10x-developer + - bullshit-software-projects + - dx-three-ways + - software-dependency-management + - ci-cd-security-challenges-best-practices + + +static-and-dynamic-linking: + - cmake-vs-make-diff + - cmake-gcc-cross-compile + - using-cmake + - g++-makefile + - ninjabuild-for-faster-build + - cross-compiling-raspberry-pi + - make-flags + - makefile-variables + - make-tutorial + - software-dependency-management + + +powerline10k: + - command-line-tools + - fish-shell + - managing-k8s-with-k9s + - devetools-for-k8s + - programming-language-improvements + - ess-linux-term-cmd + - devcontainers + - earthly-podman + - mng-dotfiles-with-git + - introducing-earthly-build-automation-for-the-container-era + + +terraform-depends-on-argument: + - terraform-init-plan-apply + - terraform-variables-guide + - terraform-with-github-actions + - deploying-iac-aws-cloud-formation + - IaC-terraform-cdk + - deploy-dockcontainers-to-AWSECS-using-Terraform + - create-manage-vpc-terraform + - terraform-functions + - terraform-lambda + - kubernetes-terraform + + +build-monorepo-with-turporepo: + - understanding-monorepos + - nx-monorepos-guide + - setup-typescript-monorepo + - npm-workspaces-monorepo + - monorepo-with-bazel + - javascript-monorepo-with-lerna + - monorepo-tools + - building-js-monorepo + - pants-python-monorepo + - monorepo-vs-polyrepo + + +devops-glossary: + - devetools-for-k8s + - idiots-and-maniacs + - earthly-cloud-free-tier-launch + - devcontainers + - Flux-vs-Argo-CD + - programming-language-improvements + - ci-vs-cd + - stop-10x-developer + - bullshit-software-projects + - docker-alternatives + + +deprecation-error-github-action-command: + - github-actions-environment-variables-and-secrets + - github-actions-and-docker + - caching-dependencies-github-actions + - github-actions-reusable-workflows + - aws-ecr-github-actions + - github-action-artifacts + - dont-configure-control-flow + - composite-actions-github + - cicd-build-github-action-dockerhub + - understanding-bash + + +curse-of-knowledge: + - thought-leaders + - confidently-uncertain + - stop-10x-developer + - diluting-dora + - write-better-tutorials + - write-for-us-anniversary + - see-state + - programming-language-improvements + - software-dependency-management + - bullshit-software-projects + + +npm-workspaces-monorepo: + - setup-typescript-monorepo + - nx-monorepos-guide + - build-monorepo-with-turporepo + - understanding-monorepos + - javascript-monorepo-with-lerna + - monorepo-with-bazel + - npm-vs-npx-vs-pnmp + - go-workspaces + - npm-vs-yarn + - building-js-monorepo + + +advanced-git-commands-2: + - advanced-git-commands + - ess-linux-term-cmd + - command-line-tools + - mng-dotfiles-with-git + - linux-text-processing-commands + - bash-pushd-popd-commands + - a-developer-guide-to-git-lfs + - git-branching + - linux-network-commands + - gitlab-ci + + +deployment-strategies-kubernetes: + - deployment-strategies + - canary-deployment-in-k8s + - canary-deployment + - blue-green + - openshift-vs-kubernetes + - K3s-and-K8s + - spinnaker-kubernetes + - kubernetes-operators + - octopus-deploy + - dockercompose-vs-k8s + + +rust-api-rocket-diesel: + - bazel-with-rust + - rust-generics + - golang-gin-framework + - rust-macros + - rust-concurrency-patterns-parallel-programming + - build-GraphQL-APIs-Go + - rust-lifetimes-ownership-burrowing + - rails-with-docker + - azure-functions + - golang-http + + +using-github-actions-locally: + - github-actions-and-docker + - cicd-build-github-action-dockerhub + - aws-ecr-github-actions + - github-action-artifacts + - earthly-github-actions + - cronjobs-for-github-actions + - caching-dependencies-github-actions + - terraform-with-github-actions + - github-actions-environment-variables-and-secrets + - streamline-container-ghcr + + +github-action-triggers: + - github-actions-and-docker + - github-action-artifacts + - github-actions-reusable-workflows + - cronjobs-for-github-actions + - cicd-build-github-action-dockerhub + - aws-ecr-github-actions + - terraform-with-github-actions + - composite-actions-github + - github-actions-environment-variables-and-secrets + - concurrency-in-github-actions + + +azure-functions: + - azure-functions-node + - netlify-cloud-functions + - aws-lambda-node + - aws-lambda-docker + - aws-ecs-tutorial + - deploying-iac-aws-cloud-formation + - cicd-build-github-action-dockerhub + - IaC-terraform-cdk + - github-actions-environment-variables-and-secrets + - shell-functions-arguments + + +github-action-artifacts: + - github-actions-and-docker + - caching-dependencies-github-actions + - cicd-build-github-action-dockerhub + - github-actions-environment-variables-and-secrets + - aws-ecr-github-actions + - terraform-with-github-actions + - using-github-actions-locally + - composite-actions-github + - github-actions-reusable-workflows + - github-action-triggers + + +cronjobs-for-github-actions: + - kubernetes-jobs-cron-jobs + - github-actions-and-docker + - k8s-log-compression-s3-upload + - cicd-build-github-action-dockerhub + - using-github-actions-locally + - github-action-artifacts + - github-action-triggers + - aws-ecr-github-actions + - streamline-container-ghcr + - concurrency-in-github-actions + + +macOS-native-containers: + - using-apple-silicon-m1-as-a-cloud-engineer-two-months-in + - containerd-vs-docker + - chroot + - earthly-podman + - docker-alternatives + - devcontainers + - podman-rootless + - docker-vs-vm + - docker-vagrant + - lima + + +fish-shell: + - shell-functions-arguments + - understanding-bash + - ess-linux-term-cmd + - command-line-tools + - automate-tasks-shell-scripts + - practical-guide-to-linux-echo-cmd + - mng-dotfiles-with-git + - bash-variables + - how-to-use-docker-in-vscode + - bash-read-files + + +npm-vs-npx-vs-pnmp: + - npm-vs-yarn + - npm-workspaces-monorepo + - nx-monorepos-guide + - setup-typescript-monorepo + - building-js-monorepo + - monorepo-tools + - javascript-monorepo-with-lerna + - understanding-monorepos + - build-monorepo-with-turporepo + - what-is-nix + + +npm-vs-yarn: + - npm-vs-npx-vs-pnmp + - npm-workspaces-monorepo + - kubernetes-docker + - openshift-vs-kubernetes + - docker-vagrant + - setup-typescript-monorepo + - dockercompose-vs-k8s + - understanding-monorepos + - software-dependency-management + - monorepo-vs-polyrepo + + +linux-security-modules: + - intro-to-Linux-capabilities + - k8s-cluster-security + - docker-slim + - chown-permissions-chmod + - ess-linux-term-cmd + - automate-tasks-shell-scripts + - autoconf + - private-docker-registry + - static-and-dynamic-linking + - docker-secrets + + +datastreaming-kafka-asyncio: + - python-microservices-rabbitmq-docker + - build-real-time-comm-app + - data-pipelines-with-airflow + - kafka-vs-rabbitmq + - streamlit-python-dashboard + - python-docker + - circle-ci-with-django + - python-earthly + - starting-with-pymongo + - build-news-classifier-nlp-newsapi-lr + + +optimize-sql-queries-golang: + - using-gorm-go + - optimize-golang-for-kubernetes + - build-GraphQL-APIs-Go + - golang-sqlite + - golang-gin-framework + - use-mongo-with-go + - learning-golang-common-mistakes-to-avoid + - software-design-go-interfaces + - concurrency-in-Go + - golang-monorepo + + +composite-actions-github: + - github-actions-and-docker + - github-actions-reusable-workflows + - github-action-artifacts + - terraform-with-github-actions + - caching-dependencies-github-actions + - aws-ecr-github-actions + - cicd-build-github-action-dockerhub + - github-actions-environment-variables-and-secrets + - earthly-github-actions + - concurrency-in-github-actions + + +nomad-vs-kubernetes: + - K3s-and-K8s + - openshift-vs-kubernetes + - dockercompose-vs-k8s + - kubernetes-docker + - kubernetes-terraform + - docker-alternatives + - devetools-for-k8s + - k8s-dev-solutions + - rancher-managing-k8s + - docker-vagrant + + +concurrency-in-github-actions: + - caching-dependencies-github-actions + - github-actions-reusable-workflows + - github-actions-and-docker + - cronjobs-for-github-actions + - composite-actions-github + - github-action-artifacts + - concurrency-in-Go + - terraform-with-github-actions + - kubernetes-jobs-cron-jobs + - continuous-testing-in-devops + + +the-roi-of-fast: + - what-makes-earthly-fast + - shutting-down-earthly-ci + - earthly-cloud-free-tier-launch + - launching-earthly-CI + - the-world-deserves-better-builds + - earthly-github-actions + - misaligned-incentives + - new-fundings-at-earthly + - introducing-earthly-build-automation-for-the-container-era + - case-study-nocd + + +what-makes-earthly-fast: + - the-roi-of-fast + - launching-earthly-CI + - shutting-down-earthly-ci + - earthly-github-actions + - introducing-earthly-build-automation-for-the-container-era + - the-world-deserves-better-builds + - repeatable-builds-every-time + - earthly-cloud-free-tier-launch + - case-study-nocd + - earthly-satellites-ga + + +software-dependency-management: + - ci-cd-security-challenges-best-practices + - python-poetry + - python-earthly + - ci-vs-cd + - misaligned-incentives + - docker-vagrant + - continuous-integration + - devetools-for-k8s + - repeatable-builds-every-time + - octopus-deploy + + +pants-python-monorepo: + - monorepo-tools + - pants-build + - monorepo-with-bazel + - build-monorepo-with-turporepo + - nx-monorepos-guide + - understanding-monorepos + - setup-typescript-monorepo + - javascript-monorepo-with-lerna + - bazel-and-automated-tests + - build-and-deploy-PyApp-with-bazel + + +devtool-fm: + - business-of-open-source-podcast + - tech-and-main-interview + - jeff-bullas-interview + - coffee-and-opensource + - effective-developer-podcast + - misaligned-incentives + - open-source-startup-podcast + - software-engineering-daily + - new-fundings-at-earthly + - shutting-down-earthly-ci + + +golang-chi: + - golang-gin-framework + - build-GraphQL-APIs-Go + - golang-http + - aws-lambda-api-proxy + - software-design-go-interfaces + - image-upload-api-cloudinary-golang + - aws-lambda-golang + - tui-app-with-go + - using-gorm-go + - mail-server-API-goroutines-gmail + + +go-modules: + - go-workspaces + - software-design-go-interfaces + - golang-monorepo + - golang-makefile + - concurrency-in-Go + - golang-zip-files + - using-gorm-go + - golang-gin-framework + - build-golang-bazel-gazelle + - golang-chi + + +github-actions-reusable-workflows: + - composite-actions-github + - github-actions-and-docker + - github-action-artifacts + - concurrency-in-github-actions + - github-actions-environment-variables-and-secrets + - github-action-triggers + - aws-ecr-github-actions + - achieving-repeatability + - terraform-with-github-actions + - continuous-testing-in-devops + + +kafka-vs-rabbitmq: + - python-microservices-rabbitmq-docker + - dockercompose-vs-k8s + - datastreaming-kafka-asyncio + - openshift-vs-kubernetes + - docker-vs-vm + - nomad-vs-kubernetes + - data-pipelines-with-airflow + - docker-vagrant + - kubernetes-docker + - lxc-vs-docker + + +incremental-rust-builds: + - cargo-chef + - rust-sccache + - konfig + - rust-monorepo + - cargo-workspace-crates + - docker-init-rust + - docker-build-cloud + - build-buildkit-cache + - earthly-v0-8 + - future-is-rusty + + +nerdctl: + - containerd-docker + - namespaces-and-cgroups-docker + - namespaces-and-containers-in-depth + - docker-init-nodejs + - docker-init-in-go + - docker-build-cloud + - docker-init-in-python + - docker-init-rust + - docker-init-quickly + - docker-buildx + + +docker-scout: + - docker-sbom + - docker-build-cloud + - arm-containers-github-actions + - docker-init-nodejs + - docker-init-in-python + - namespaces-and-cgroups-docker + - docker-init-in-go + - buildkit-secrets + - containerd-docker + - docker-buildx + + +docker-sbom: + - generating-sbom + - docker-build-cloud + - docker-scout + - docker-init-in-go + - docker-buildx + - docker-init-nodejs + - docker-init-in-python + - docker-init-rust + - buildkit-secrets + - konfig + + +containerd-docker: + - nerdctl + - docker-build-cloud + - docker-init-quickly + - docker-buildx + - namespaces-and-cgroups-docker + - docker-init-nodejs + - docker-init-in-python + - docker-init-in-go + - namespaces-and-containers-in-depth + - docker-scout + + +docker-init-in-go: + - docker-init-in-python + - docker-init-nodejs + - docker-init-rust + - docker-init-quickly + - docker-build-cloud + - docker-buildx + - konfig + - cargo-chef + - docker-sbom + - containerd-docker + + +docker-init-quickly: + - docker-init-in-python + - docker-init-nodejs + - docker-init-in-go + - docker-init-rust + - docker-build-cloud + - containerd-docker + - docker-buildx + - arm-containers-github-actions + - docker-scout + - build-buildkit-cache + + +docker-buildx: + - docker-build-cloud + - docker-init-in-go + - docker-init-in-python + - build-buildkit-cache + - docker-init-nodejs + - arm-containers-github-actions + - buildkit-secrets + - containerd-docker + - docker-init-rust + - docker-sbom + + +docker-init-in-python: + - docker-init-in-go + - docker-init-nodejs + - docker-init-quickly + - docker-init-rust + - docker-build-cloud + - docker-buildx + - konfig + - python-monorepo + - containerd-docker + - buildkit-secrets + + +docker-init-nodejs: + - docker-init-in-python + - docker-init-in-go + - docker-init-rust + - docker-init-quickly + - docker-build-cloud + - docker-buildx + - containerd-docker + - docker-scout + - namespaces-and-cgroups-docker + - build-buildkit-cache + + +buildkit-secrets: + - build-buildkit-cache + - docker-buildx + - docker-build-cloud + - docker-init-in-python + - docker-init-in-go + - docker-scout + - docker-sbom + - docker-init-nodejs + - docker-init-quickly + - arm-containers-github-actions + + +rust-monorepo: + - cargo-workspace-crates + - python-monorepo + - gradle-monorepo + - docker-init-rust + - cargo-chef + - incremental-rust-builds + - yarn-vite-monorepo + - konfig + - rust-sccache + - docker-init-in-go + + +konfig: + - docker-init-in-go + - docker-build-cloud + - cargo-chef + - incremental-rust-builds + - on-star-history + - docker-init-rust + - docker-init-in-python + - python-monorepo + - earthly-v0-8 + - rust-monorepo + + +build-buildkit-cache: + - docker-build-cloud + - docker-buildx + - buildkit-secrets + - cargo-chef + - docker-init-nodejs + - docker-init-in-go + - docker-init-in-python + - docker-init-quickly + - docker-init-rust + - rust-sccache + + +python-monorepo: + - rust-monorepo + - gradle-monorepo + - cargo-workspace-crates + - docker-init-in-python + - konfig + - yarn-vite-monorepo + - docker-init-in-go + - docker-init-rust + - cargo-chef + - docker-build-cloud + + +cargo-chef: + - incremental-rust-builds + - docker-init-rust + - docker-build-cloud + - rust-sccache + - konfig + - rust-monorepo + - cargo-workspace-crates + - docker-init-in-go + - build-buildkit-cache + - docker-buildx + + +namespaces-and-cgroups-docker: + - namespaces-and-containers-in-depth + - nerdctl + - containerd-docker + - docker-init-nodejs + - docker-scout + - docker-init-in-python + - docker-build-cloud + - docker-init-quickly + - docker-init-in-go + - docker-buildx + + +namespaces-and-containers-in-depth: + - namespaces-and-cgroups-docker + - nerdctl + - containerd-docker + - docker-init-nodejs + - docker-init-in-python + - docker-init-in-go + - docker-init-quickly + - docker-buildx + - docker-build-cloud + - docker-scout + + +docker-build-cloud: + - docker-buildx + - docker-init-in-go + - cargo-chef + - build-buildkit-cache + - docker-init-in-python + - docker-init-nodejs + - docker-init-rust + - konfig + - docker-sbom + - containerd-docker + + +arm-containers-github-actions: + - docker-buildx + - docker-scout + - docker-build-cloud + - docker-init-in-python + - docker-init-quickly + - docker-init-nodejs + - docker-init-in-go + - buildkit-secrets + - docker-init-rust + - containerd-docker + + +checklist: + - write-for-us + - write-for-us-anniversary + - terraform-init-plan-apply + - markdown-lint + - automate-tasks-shell-scripts + - github-actions-and-docker + - github-action-artifacts + - understanding-bash + - github-actions-reusable-workflows + - repeatable-builds-every-time + + +understanding-monorepos: + - build-monorepo-with-turporepo + - nx-monorepos-guide + - setup-typescript-monorepo + - monorepo-with-bazel + - monorepo-vs-polyrepo + - monorepo-tools + - npm-workspaces-monorepo + - building-js-monorepo + - javascript-monorepo-with-lerna + - pants-python-monorepo diff --git a/blog/_includes/archive-single.html b/blog/_includes/archive-single.html index d883adbf2..a1c866334 100644 --- a/blog/_includes/archive-single.html +++ b/blog/_includes/archive-single.html @@ -1,6 +1,7 @@ {% comment %} Default teaser image to teaser.jpg {% endcomment %} +{% assign post = include.post %} {% assign teaser1 = "assets/images/" | append: post.slug | append: "/teaser.jpg" %} {% capture teaser_default %}{% file_exists {{ teaser1 }} %}{% endcapture %} @@ -19,11 +20,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 %}
@@ -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 000000000..e1b85b5ce Binary files /dev/null and b/blog/assets/images/header.jpg differ diff --git a/blog/assets/images/wes-mckinney/tim-mossholder-8FBTtjCZ9oM-unsplash.jpg b/blog/assets/images/wes-mckinney/header.jpg similarity index 100% rename from blog/assets/images/wes-mckinney/tim-mossholder-8FBTtjCZ9oM-unsplash.jpg rename to blog/assets/images/wes-mckinney/header.jpg diff --git a/poetry.lock b/poetry.lock index 13382183b..998ee8516 100644 --- a/poetry.lock +++ b/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" @@ -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