From f4bc591999e2ef1e30184715284748c0740a63b2 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 2 Dec 2024 15:58:31 +0100 Subject: [PATCH 01/37] (wip) first draft --- README.md | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 127 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c53de3bc6..b727c831f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,109 @@ +# ComputeHorde (Subnet 12 of Bittensor) + +ComputeHorde is a specialized subnet within the Bittensor network that provides the compute power of networkless GPU-equipped servers. +Unlike other subnets in Bittensor, ComputeHorde focuses on delivering reliable, decentralized access to computing resources for validation tasks. + +The primary purpose of ComputeHorde is to decentralize and democratize the hardware required by validators of other subnets. +By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. + +--- + +## Key Features + +- **Decentralized Compute for Validators** + ComputeHorde aims to become the go-to decentralized source for hardware needed to validate other subnets. + This is crucial for avoiding dependency on centralized services, which contradicts Bittensor's ethos. + +- **Fair and Verified Work** + ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work: + - Validate tasks from all validators equally, regardless of their stake. + - Handle both **organic** (external) and **synthetic** (validation-only) tasks. + - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are actually used for tasks requiring them). + - Prevent malicious behaviors like "weight-copying" through innovative validation mechanisms. + +- **Scalable Mining with Executors** + Each miner in ComputeHorde can spawn multiple **executors**, virtual machines performing individual compute tasks. + This removes the 256 miner (UID) limit and significantly scales the available computing power. + +- **Hardware Classes** + ComputeHorde introduces hardware classes to create a free market for GPU resources, balancing cost-effectiveness with performance. Currently, the supported classes are: + - **A6000** (available now) + - **A100** (coming soon) + The goal is to support all GPU types required by validators across Bittensor subnets. + +- **Facilitating Organic Jobs** + Facilitators connect external requests from validators of other subnets to ComputeHorde, encouraging miners to execute organic tasks alongside synthetic ones. + +--- + +## Components + +### **Facilitator** +- Acts as a gateway for organic requests (from other subnets’ validators) to enter ComputeHorde. +- Sends tasks to validators, who then distribute them to miners. + +### **Validator** +- Receives organic requests via the Facilitator or generates synthetic tasks for validation. +- Distributes tasks to miners and evaluates the results: + - Organic results are returned to external requesters. + - Synthetic results adjust miners' scores. + +### **Miner** +- Accepts job requests from validators. +- Manages **executors** to perform tasks and sends results back to validators. + +### **Executor** +- A virtual machine spawned by a miner to perform a single dockerized task. +- Operates in a restricted environment, with limited network access necessary for: + - Communicating with miners. + - Downloading docker images. + - Handling job data. +- Executors form a **horde** under a miner and are assigned hardware classes. + +--- + +## Innovations to Highlight + +### Discouraging Weight-Copying +- **Commit-Reveal Scheme**: Validators post hidden weights and reveal them in the next epoch, minimizing the impact of weight-copying. +- **Executor Dancing**: Miners randomly move GPUs across multiple UIDs, further reducing the effectiveness of copying old weights. + +### Encouraging Actual Mining +- Synthetic tasks are designed to run only on specific hardware (e.g., A6000 GPUs), ensuring miners deliver the advertised compute power. +- Incentives for completing organic tasks. + +### Democratizing Mining +- Miners can scale their operations by spawning multiple executors, breaking traditional limits and enabling cost-effective participation. + +--- + +## Goals + +1. **Expand Hardware Support** + Add support for all GPU classes required by other Bittensor subnets. + +2. **Introduce Paid Organic Jobs** + Allow the free market to regulate demand and prioritize cost-effective hardware. + +3. **Support Long-Running Jobs** + Implement accounting mechanisms for miners to be rewarded proportionally, even for incomplete long-running tasks. + +4. **Fair Resource Sharing** + Allocate resources based on validators' stakes while allowing low-stake validators access when demand is low. + +5. **Strengthen Security** + Introduce safeguards to prevent exploitation and ensure a fair environment for all participants. + +--- + +## Repository Overview + +This repository contains the reference implementations of key ComputeHorde components: + +- **Validator**: A reference implementation requiring a Trusted Miner for cross-checking synthetic tasks. +- **Miner**: Default miner setup with a single executor. +- **Executor**: Base implementation for executing dockerized jobs. Users can create custom executor managers to scale and optimize mining efficiency. + # What is this This repository contains reference implementations of @@ -15,20 +121,24 @@ of the ComputeHorde BitTensor SubNet. Running etc. is explained in each componen Data flow looks like this: 1. **Facilitator** is an internet facing app charging users for accepting jobs from them, which are then passed on to validators. -1. **Validator** has the same meaning as in other Bittensor subnets. It receives organic requests (requests from end users) or generates synthetic ones itself, sends them to miners and reads the results. Results for organic traffic are then passed back to end users, while synthetic traffic is used to adjust miners' scores. -[See validator's README for more details](validator/README.md) +1. **Validator** has the same meaning as in other Bittensor subnets. + It receives organic requests (requests from end users) or generates synthetic ones itself, sends them to miners and reads the results. + Results for organic traffic are then passed back to end users, while synthetic traffic is used to adjust miners' scores. [See validator's README for more details](validator/README.md) 1. **Miner** has the same meaning as in other Bittensor subnets. It receives job requests from validators, spawns executors to do the actual work and sends the results back to validators. -[See miner's README for more details](miner/README.md) -1. **Executor** is a virtual machine managed by a single miner, spawned to perform a single dockerized job, and is scrapped afterwards. Its access to the network is limited to necessary bits needed to execute a job, i.e. communicate with a miner, download the docker image that runs the job, download the docker image containing executor app, and mount the job data volume. Executors have hardware classes assigned and together form the horde of a miner. -[See executor's README for more details](executor/README.md) + [See miner's README for more details](miner/README.md) +1. **Executor** is a virtual machine managed by a single miner, spawned to perform a single dockerized job, and is scrapped afterwards. + Its access to the network is limited to necessary bits needed to execute a job, + i.e. communicate with a miner, download the docker image that runs the job, download the docker image containing executor app, and mount the job data volume. + Executors have hardware classes assigned and together form the horde of a miner. + [See executor's README for more details](executor/README.md) -# Scoring +# Scoring -- outdated Currently miners are rewarded for providing the time of networkless GPU-equipped servers, proportionally to their efficiency. Each miner can (for now) provide only their fastest Executor. In February 2024 this will change - subnet will define more resource types andValidators will reward miners more for providing resources that are in higher demand. The system will quickly fill to capacity with organic traffic. -# Incoming changes +# Incoming changes -- outdated * Introduce hardware classes to create a free market that delivers the most cost-effective hardware, rather than solely focusing on the strongest hardware. * Organic jobs should not be free to allow the free market to regulate demand on hardware classes effectively. * Support long-running jobs by accounting for miners' work in 10-minute intervals, ensuring they can be paid for unfinished long-running jobs. @@ -56,6 +166,16 @@ for miner in miners: # Running +This repository contains reference implementations of + +1. Validator +2. Miner +3. Executor + +of the ComputeHorde BitTensor SubNet. +In the following sections you can find instructions on running [Validator](#Validator) and [Miner](#Miner). +There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. + ## Validator ComputeHorde validator is built out of three components From 19166f948523777cf744d3c765891b999e13a196 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 2 Dec 2024 16:02:47 +0100 Subject: [PATCH 02/37] (wip) first section --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b727c831f..3e51f6ffc 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,10 @@ # ComputeHorde (Subnet 12 of Bittensor) -ComputeHorde is a specialized subnet within the Bittensor network that provides the compute power of networkless GPU-equipped servers. -Unlike other subnets in Bittensor, ComputeHorde focuses on delivering reliable, decentralized access to computing resources for validation tasks. +ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the compute power of networkless GPU-equipped servers. -The primary purpose of ComputeHorde is to decentralize and democratize the hardware required by validators of other subnets. +The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. ---- - ## Key Features - **Decentralized Compute for Validators** From 01af528fbb32460920e00f00bdee8406b8bbeb15 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 3 Dec 2024 15:50:56 +0100 Subject: [PATCH 03/37] (wip) first draft reviewed --- ComputeHorde.png | Bin 377318 -> 80998 bytes README.md | 158 +++++++++++++++++------------------------------ 2 files changed, 57 insertions(+), 101 deletions(-) diff --git a/ComputeHorde.png b/ComputeHorde.png index 9a36b732a7e3b4e5839450cb73f42ee206f6e887..dca29ab124fece8bd77d76c241325332d491fc81 100644 GIT binary patch literal 80998 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 literal 377318 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 QOi)FS+)mW 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 tonz|uacDL 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%0A9~W*L871u>9V#@%ebDlMp$f4TATEX+TL}60 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%0AHMF=y{zs`XpRNPkvG=W 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 diff --git a/README.md b/README.md index 3e51f6ffc..6e07ef422 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # ComputeHorde (Subnet 12 of Bittensor) +![ComputeHorde.png](ComputeHorde.png) + ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the compute power of networkless GPU-equipped servers. The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. @@ -7,29 +9,25 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi ## Key Features -- **Decentralized Compute for Validators** - ComputeHorde aims to become the go-to decentralized source for hardware needed to validate other subnets. - This is crucial for avoiding dependency on centralized services, which contradicts Bittensor's ethos. +- **Decentralized Compute for Bittensor Validators** + ComputeHorde aims to become the go-to decentralized source for hardware needed to validate other subnets. + The mission is to decrease Bittensor ecosystem's dependency on centralized services. - **Fair and Verified Work** - ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work: - - Validate tasks from all validators equally, regardless of their stake. + ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work authentically and fairly verified by the validators: + - Execute tasks from all validators equally, regardless of their stake (above a rather low threshold). - Handle both **organic** (external) and **synthetic** (validation-only) tasks. - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are actually used for tasks requiring them). - Prevent malicious behaviors like "weight-copying" through innovative validation mechanisms. - **Scalable Mining with Executors** - Each miner in ComputeHorde can spawn multiple **executors**, virtual machines performing individual compute tasks. - This removes the 256 miner (UID) limit and significantly scales the available computing power. + Each miner in ComputeHorde can spawn multiple **executors**, performing individual compute tasks. + This removes the 256 miner (UID) limit and significantly scales the potentially available computing power. - **Hardware Classes** - ComputeHorde introduces hardware classes to create a free market for GPU resources, balancing cost-effectiveness with performance. Currently, the supported classes are: - - **A6000** (available now) - - **A100** (coming soon) - The goal is to support all GPU types required by validators across Bittensor subnets. - -- **Facilitating Organic Jobs** - Facilitators connect external requests from validators of other subnets to ComputeHorde, encouraging miners to execute organic tasks alongside synthetic ones. + ComputeHorde introduces hardware classes to create a free market for GPU resources, balancing cost-effectiveness with performance. + Currently, **A6000** is the supported class, with **A100** coming next. + The end-goal is to support all GPU types / configurations required by validators across Bittensor subnets. --- @@ -44,33 +42,34 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi - Distributes tasks to miners and evaluates the results: - Organic results are returned to external requesters. - Synthetic results adjust miners' scores. +- [See validator's README for more details](validator/README.md) ### **Miner** - Accepts job requests from validators. - Manages **executors** to perform tasks and sends results back to validators. +- [See miner's README for more details](miner/README.md) ### **Executor** - A virtual machine spawned by a miner to perform a single dockerized task. - Operates in a restricted environment, with limited network access necessary for: - - Communicating with miners. - - Downloading docker images. - - Handling job data. -- Executors form a **horde** under a miner and are assigned hardware classes. + - communicating with miners, + - downloading docker images, + - handling job data. +- Executors form a **horde** of a miner and are assigned hardware classes. +- [See executor's README for more details](executor/README.md) --- ## Innovations to Highlight ### Discouraging Weight-Copying -- **Commit-Reveal Scheme**: Validators post hidden weights and reveal them in the next epoch, minimizing the impact of weight-copying. +- **Commit-Reveal**: Validators post hidden weights and reveal them in the next epoch, making the copying of _current_ weights impossible. - **Executor Dancing**: Miners randomly move GPUs across multiple UIDs, further reducing the effectiveness of copying old weights. ### Encouraging Actual Mining - Synthetic tasks are designed to run only on specific hardware (e.g., A6000 GPUs), ensuring miners deliver the advertised compute power. -- Incentives for completing organic tasks. - -### Democratizing Mining -- Miners can scale their operations by spawning multiple executors, breaking traditional limits and enabling cost-effective participation. +- Scoring system incentivising for completing organic tasks. +- Mechanisms for penalizing miners serving only a subset of validators --- @@ -79,100 +78,33 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi 1. **Expand Hardware Support** Add support for all GPU classes required by other Bittensor subnets. -2. **Introduce Paid Organic Jobs** - Allow the free market to regulate demand and prioritize cost-effective hardware. +1. **Bring organic jobs from other subnets' validators** + Allow the free market to regulate demand and prioritize cost-effective hardware, rather than solely focusing on the strongest hardware. -3. **Support Long-Running Jobs** - Implement accounting mechanisms for miners to be rewarded proportionally, even for incomplete long-running tasks. +1. **Support Long-Running Jobs** + Implement accounting mechanisms for miners to be rewarded proportionally to the time spent, even for incomplete long-running tasks. -4. **Fair Resource Sharing** +1. **Fair Resource Sharing** Allocate resources based on validators' stakes while allowing low-stake validators access when demand is low. -5. **Strengthen Security** - Introduce safeguards to prevent exploitation and ensure a fair environment for all participants. +1. **Strengthen Security** + Introduce rules and safeguards to prevent malicious actors from exploiting the network, ensuring a fair and secure environment for all participants. + --- -## Repository Overview +# Running ComputeHorde components -This repository contains the reference implementations of key ComputeHorde components: +This repository contains the reference implementations of: - **Validator**: A reference implementation requiring a Trusted Miner for cross-checking synthetic tasks. - **Miner**: Default miner setup with a single executor. - **Executor**: Base implementation for executing dockerized jobs. Users can create custom executor managers to scale and optimize mining efficiency. -# What is this - -This repository contains reference implementations of - -1. Validator -2. Miner -3. Executor - -of the ComputeHorde BitTensor SubNet. Running etc. is explained in each component's README. - -# ComputeHorde - -![ComputeHorde.png](ComputeHorde.png) - -Data flow looks like this: - -1. **Facilitator** is an internet facing app charging users for accepting jobs from them, which are then passed on to validators. -1. **Validator** has the same meaning as in other Bittensor subnets. - It receives organic requests (requests from end users) or generates synthetic ones itself, sends them to miners and reads the results. - Results for organic traffic are then passed back to end users, while synthetic traffic is used to adjust miners' scores. [See validator's README for more details](validator/README.md) -1. **Miner** has the same meaning as in other Bittensor subnets. It receives job requests from validators, spawns executors to do the actual work and sends the results back to validators. - [See miner's README for more details](miner/README.md) -1. **Executor** is a virtual machine managed by a single miner, spawned to perform a single dockerized job, and is scrapped afterwards. - Its access to the network is limited to necessary bits needed to execute a job, - i.e. communicate with a miner, download the docker image that runs the job, download the docker image containing executor app, and mount the job data volume. - Executors have hardware classes assigned and together form the horde of a miner. - [See executor's README for more details](executor/README.md) - -# Scoring -- outdated - -Currently miners are rewarded for providing the time of networkless GPU-equipped servers, proportionally to their efficiency. Each miner can (for now) provide only their fastest Executor. - -In February 2024 this will change - subnet will define more resource types andValidators will reward miners more for providing resources that are in higher demand. The system will quickly fill to capacity with organic traffic. - -# Incoming changes -- outdated -* Introduce hardware classes to create a free market that delivers the most cost-effective hardware, rather than solely focusing on the strongest hardware. -* Organic jobs should not be free to allow the free market to regulate demand on hardware classes effectively. -* Support long-running jobs by accounting for miners' work in 10-minute intervals, ensuring they can be paid for unfinished long-running jobs. -* Implement rules and safeguards to prevent malicious actors from exploiting the network, ensuring a fair and secure environment for all participants. -* Develop a resource-sharing system that allocates resources proportionally to each user's stake. However, also allow low-stake users to utilize network resources freely when there is no competing demand from other users. -* Implement a mechanism for miner servers to reject jobs for a given hardware class if accepting the job would result in a financial loss for the miner. -* Ensure that benchmark jobs are paid in the same manner as organic jobs: job duration multiplied by the hardware class multiplier and the benchmark value. -* When a new miner is registered, require all validators to benchmark the miner's hardware classes with extended timeouts to accurately assess their capabilities. -* When a new validator registers, they must benchmark every other miner in the network to maintain an up-to-date and comprehensive understanding of available resources. Until a miner is benchmarked by the validator, the validator defaults to 1 as the locally_measured_efficiency_factor for that miner. -* Miners will have the ability to modify their hardware class availability manifest at a frequency of once every 2 hours. In the event that a miner has available executors, they are obligated to accept assigned jobs and cannot reject them. Should a miner reject a job under such circumstances, the validator will impose a penalty by lowering the hardware class local multiplier for all tasks associated with that miner. - - -```python -points = {} -for miner in miners: - for hardware_class in miner.executors: - executor = miner.executors[hardware_class] - hardware_class_relative_value = hardware_classes[hardware_class].relative_value - points[miner.hotkey] = ( - hardware_class_relative_value - * executor.locally_measured_efficiency_factor - * executor.total_worked_seconds - ) -``` - -# Running - -This repository contains reference implementations of - -1. Validator -2. Miner -3. Executor - -of the ComputeHorde BitTensor SubNet. In the following sections you can find instructions on running [Validator](#Validator) and [Miner](#Miner). There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. + ## Validator ComputeHorde validator is built out of three components @@ -323,3 +255,27 @@ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi If the output indicates a problem (especially immediately after installation), a [restart of the services](#how-to-restart-the-services) may help. + +--- +# Pieces of the previous readme to take care of / remove altogether: +--- + +# Incoming changes -- outdated +* When a new miner is registered, require all validators to benchmark the miner's hardware classes with extended timeouts to accurately assess their capabilities. +* When a new validator registers, they must benchmark every other miner in the network to maintain an up-to-date and comprehensive understanding of available resources. Until a miner is benchmarked by the validator, the validator defaults to 1 as the locally_measured_efficiency_factor for that miner. +* Miners will have the ability to modify their hardware class availability manifest at a frequency of once every 2 hours. In the event that a miner has available executors, they are obligated to accept assigned jobs and cannot reject them. Should a miner reject a job under such circumstances, the validator will impose a penalty by lowering the hardware class local multiplier for all tasks associated with that miner. + + +```python +points = {} +for miner in miners: + for hardware_class in miner.executors: + executor = miner.executors[hardware_class] + hardware_class_relative_value = hardware_classes[hardware_class].relative_value + points[miner.hotkey] = ( + hardware_class_relative_value + * executor.locally_measured_efficiency_factor + * executor.total_worked_seconds + ) +``` + From 105b760845a394141fbfc7e51c05de3b255a303c Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 3 Dec 2024 15:54:34 +0100 Subject: [PATCH 04/37] removed --- --- README.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/README.md b/README.md index 6e07ef422..f38803e76 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,6 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi Currently, **A6000** is the supported class, with **A100** coming next. The end-goal is to support all GPU types / configurations required by validators across Bittensor subnets. ---- - ## Components ### **Facilitator** @@ -58,8 +56,6 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi - Executors form a **horde** of a miner and are assigned hardware classes. - [See executor's README for more details](executor/README.md) ---- - ## Innovations to Highlight ### Discouraging Weight-Copying @@ -71,8 +67,6 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi - Scoring system incentivising for completing organic tasks. - Mechanisms for penalizing miners serving only a subset of validators ---- - ## Goals 1. **Expand Hardware Support** @@ -90,9 +84,6 @@ By removing reliance on centralized cloud providers, ComputeHorde ensures the Bi 1. **Strengthen Security** Introduce rules and safeguards to prevent malicious actors from exploiting the network, ensuring a fair and secure environment for all participants. - ---- - # Running ComputeHorde components This repository contains the reference implementations of: From 40c55584e5ca27b569b59bd77c65bed0d45494d1 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 09:21:02 +0100 Subject: [PATCH 05/37] bittensor context --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index f38803e76..48e23cd51 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,19 @@ ComputeHorde is a specialized subnet within the [Bittensor network](https://bitt The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. +## Bittensor context + +Bittensor is a decentralized network designed to ensure that the most critical technology of our era, AI, remains accessible to everyone, free from the control of centralized entities. +Each subnet in Bittensor specializes in a _digital commodity_, ranging from storage and large language models to general computing. + +This is achieved by distributing $TAO tokens to incentivize: +- Subnet owners to define the most useful and reliable commodities (by designing the incentive mechanism), +- Miners to deliver high-quality and efficient services in an innovative way, +- Validators to reward miners with the best performance. + +Bittensor end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. +ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. + ## Key Features - **Decentralized Compute for Bittensor Validators** From c7c3afd8fc1b7194d26511ed8bf7824897dc1017 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 10:06:20 +0100 Subject: [PATCH 06/37] mpar"s suggestions --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 48e23cd51..55b878a41 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![ComputeHorde.png](ComputeHorde.png) -ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the compute power of networkless GPU-equipped servers. +ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the compute power of GPU-equipped servers. The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. @@ -25,11 +25,12 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - **Decentralized Compute for Bittensor Validators** ComputeHorde aims to become the go-to decentralized source for hardware needed to validate other subnets. The mission is to decrease Bittensor ecosystem's dependency on centralized services. + The assurance of the miners work quality is essential for the Bittensor overall reliability. - **Fair and Verified Work** ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work authentically and fairly verified by the validators: - Execute tasks from all validators equally, regardless of their stake (above a rather low threshold). - - Handle both **organic** (external) and **synthetic** (validation-only) tasks. + - Handle both **organic** (external, from other subnets) and **synthetic** (ComputeHorde miners validation) tasks. - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are actually used for tasks requiring them). - Prevent malicious behaviors like "weight-copying" through innovative validation mechanisms. @@ -80,23 +81,23 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - Scoring system incentivising for completing organic tasks. - Mechanisms for penalizing miners serving only a subset of validators -## Goals - -1. **Expand Hardware Support** - Add support for all GPU classes required by other Bittensor subnets. +## Development goals 1. **Bring organic jobs from other subnets' validators** Allow the free market to regulate demand and prioritize cost-effective hardware, rather than solely focusing on the strongest hardware. +1. **Strengthen Security** + Introduce rules and safeguards to prevent malicious actors from exploiting the network, ensuring a fair and secure environment for all participants. + 1. **Support Long-Running Jobs** Implement accounting mechanisms for miners to be rewarded proportionally to the time spent, even for incomplete long-running tasks. +1. **Expand Hardware Support** + Add support for all GPU classes required by other Bittensor subnets. + 1. **Fair Resource Sharing** Allocate resources based on validators' stakes while allowing low-stake validators access when demand is low. -1. **Strengthen Security** - Introduce rules and safeguards to prevent malicious actors from exploiting the network, ensuring a fair and secure environment for all participants. - # Running ComputeHorde components This repository contains the reference implementations of: From 1598b3db8284fae1e9fa60e890b2d1ab8e44fa2f Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 10:19:51 +0100 Subject: [PATCH 07/37] grammarly --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 55b878a41..4ef1704c9 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,20 @@ ![ComputeHorde.png](ComputeHorde.png) -ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the compute power of GPU-equipped servers. +ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the computing power of GPU-equipped servers. The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. ## Bittensor context -Bittensor is a decentralized network designed to ensure that the most critical technology of our era, AI, remains accessible to everyone, free from the control of centralized entities. -Each subnet in Bittensor specializes in a _digital commodity_, ranging from storage and large language models to general computing. +Bittensor is a decentralized network designed to ensure that AI, the most critical technology of our era, remains accessible to everyone and free from the control of centralized entities. +Each Bittensor subnet specializes in a _digital commodity_, ranging from storage and large language models to general computing. This is achieved by distributing $TAO tokens to incentivize: - Subnet owners to define the most useful and reliable commodities (by designing the incentive mechanism), -- Miners to deliver high-quality and efficient services in an innovative way, -- Validators to reward miners with the best performance. +- Miners to deliver high-quality and efficient services innovatively, +- Validators to reward miners for the best performance. Bittensor end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. @@ -24,14 +24,14 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - **Decentralized Compute for Bittensor Validators** ComputeHorde aims to become the go-to decentralized source for hardware needed to validate other subnets. - The mission is to decrease Bittensor ecosystem's dependency on centralized services. - The assurance of the miners work quality is essential for the Bittensor overall reliability. + The mission is to decrease the Bittensor ecosystem's dependency on centralized services. + The assurance of the miners' work quality is essential for the Bittensor's overall reliability. - **Fair and Verified Work** ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work authentically and fairly verified by the validators: - Execute tasks from all validators equally, regardless of their stake (above a rather low threshold). - Handle both **organic** (external, from other subnets) and **synthetic** (ComputeHorde miners validation) tasks. - - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are actually used for tasks requiring them). + - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are used for tasks requiring them). - Prevent malicious behaviors like "weight-copying" through innovative validation mechanisms. - **Scalable Mining with Executors** @@ -41,7 +41,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - **Hardware Classes** ComputeHorde introduces hardware classes to create a free market for GPU resources, balancing cost-effectiveness with performance. Currently, **A6000** is the supported class, with **A100** coming next. - The end-goal is to support all GPU types / configurations required by validators across Bittensor subnets. + The end goal is to support all GPU types/configurations required by validators across Bittensor subnets. ## Components @@ -78,7 +78,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ### Encouraging Actual Mining - Synthetic tasks are designed to run only on specific hardware (e.g., A6000 GPUs), ensuring miners deliver the advertised compute power. -- Scoring system incentivising for completing organic tasks. +- Scoring system incentivizing for completing organic tasks. - Mechanisms for penalizing miners serving only a subset of validators ## Development goals @@ -106,7 +106,7 @@ This repository contains the reference implementations of: - **Miner**: Default miner setup with a single executor. - **Executor**: Base implementation for executing dockerized jobs. Users can create custom executor managers to scale and optimize mining efficiency. -In the following sections you can find instructions on running [Validator](#Validator) and [Miner](#Miner). +In the following sections, you can find instructions on running [Validator](#Validator) and [Miner](#Miner). There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. From 4d3d57b48a081392ec4f6f00816d79783a5343a9 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 10:30:21 +0100 Subject: [PATCH 08/37] tweaks --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4ef1704c9..b72d5be5e 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ Each Bittensor subnet specializes in a _digital commodity_, ranging from storage This is achieved by distributing $TAO tokens to incentivize: - Subnet owners to define the most useful and reliable commodities (by designing the incentive mechanism), - Miners to deliver high-quality and efficient services innovatively, -- Validators to reward miners for the best performance. +- Validators to reward miners based on their performance. -Bittensor end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. +Bittensor's end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. ## Key Features @@ -28,7 +28,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet The assurance of the miners' work quality is essential for the Bittensor's overall reliability. - **Fair and Verified Work** - ComputeHorde employs mechanisms to ensure miners provide authentic and fair compute work authentically and fairly verified by the validators: + ComputeHorde employs mechanisms to ensure miners provide authentic compute work, fairly verified by the validators: - Execute tasks from all validators equally, regardless of their stake (above a rather low threshold). - Handle both **organic** (external, from other subnets) and **synthetic** (ComputeHorde miners validation) tasks. - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are used for tasks requiring them). @@ -58,7 +58,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ### **Miner** - Accepts job requests from validators. -- Manages **executors** to perform tasks and sends results back to validators. +- Manages executors to perform tasks and sends results back to validators. - [See miner's README for more details](miner/README.md) ### **Executor** @@ -73,8 +73,8 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ## Innovations to Highlight ### Discouraging Weight-Copying -- **Commit-Reveal**: Validators post hidden weights and reveal them in the next epoch, making the copying of _current_ weights impossible. -- **Executor Dancing**: Miners randomly move GPUs across multiple UIDs, further reducing the effectiveness of copying old weights. +- Commit-Reveal: Validators post hidden weights and reveal them in the next epoch, making the copying of _current_ weights impossible. +- Executor Dancing: Miners randomly move GPUs across multiple UIDs, further reducing the effectiveness of copying old weights. ### Encouraging Actual Mining - Synthetic tasks are designed to run only on specific hardware (e.g., A6000 GPUs), ensuring miners deliver the advertised compute power. From 9b76d20657b5865b51432ba04b28b477d6a3cfc5 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 14:26:45 +0100 Subject: [PATCH 09/37] better quality pic, removed unncecesary stuff --- ComputeHorde.svg | 7 +++++++ README.md | 27 +-------------------------- 2 files changed, 8 insertions(+), 26 deletions(-) create mode 100644 ComputeHorde.svg diff --git a/ComputeHorde.svg b/ComputeHorde.svg new file mode 100644 index 000000000..e627a05b7 --- /dev/null +++ b/ComputeHorde.svg @@ -0,0 +1,7 @@ + + +FacilitatorFacilitatorValidatorValidatorValidatorMiner 1Miner 2Miner 3Miner 4Miner 5Miner 3's Horde (set of executors)Executors \ No newline at end of file diff --git a/README.md b/README.md index b72d5be5e..df785ef60 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ComputeHorde (Subnet 12 of Bittensor) -![ComputeHorde.png](ComputeHorde.png) +![ComputeHorde.svg](ComputeHorde.svg) ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the computing power of GPU-equipped servers. @@ -259,28 +259,3 @@ docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi ``` If the output indicates a problem (especially immediately after installation), a [restart of the services](#how-to-restart-the-services) may help. - - ---- -# Pieces of the previous readme to take care of / remove altogether: ---- - -# Incoming changes -- outdated -* When a new miner is registered, require all validators to benchmark the miner's hardware classes with extended timeouts to accurately assess their capabilities. -* When a new validator registers, they must benchmark every other miner in the network to maintain an up-to-date and comprehensive understanding of available resources. Until a miner is benchmarked by the validator, the validator defaults to 1 as the locally_measured_efficiency_factor for that miner. -* Miners will have the ability to modify their hardware class availability manifest at a frequency of once every 2 hours. In the event that a miner has available executors, they are obligated to accept assigned jobs and cannot reject them. Should a miner reject a job under such circumstances, the validator will impose a penalty by lowering the hardware class local multiplier for all tasks associated with that miner. - - -```python -points = {} -for miner in miners: - for hardware_class in miner.executors: - executor = miner.executors[hardware_class] - hardware_class_relative_value = hardware_classes[hardware_class].relative_value - points[miner.hotkey] = ( - hardware_class_relative_value - * executor.locally_measured_efficiency_factor - * executor.total_worked_seconds - ) -``` - From 5f7b8fba77474c6809ea073508c95d32e823217d Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 14:31:51 +0100 Subject: [PATCH 10/37] remove old pic --- ComputeHorde.png | Bin 80998 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ComputeHorde.png diff --git a/ComputeHorde.png b/ComputeHorde.png deleted file mode 100644 index dca29ab124fece8bd77d76c241325332d491fc81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80998 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 From 4a7afb3355bcf05667cb92810f8555c03d7bc78c Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 14:39:16 +0100 Subject: [PATCH 11/37] executor is an instance and facilitator sends tasks to _chosen_ validators --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index df785ef60..e29ae181b 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ### **Facilitator** - Acts as a gateway for organic requests (from other subnets’ validators) to enter ComputeHorde. -- Sends tasks to validators, who then distribute them to miners. +- Sends tasks to chosen validators, who then distribute them to miners. ### **Validator** - Receives organic requests via the Facilitator or generates synthetic tasks for validation. @@ -62,7 +62,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - [See miner's README for more details](miner/README.md) ### **Executor** -- A virtual machine spawned by a miner to perform a single dockerized task. +- An instance spawned by a miner to perform a single dockerized task. - Operates in a restricted environment, with limited network access necessary for: - communicating with miners, - downloading docker images, From 1227d4b3f40779a4f43e35eb752ec38a6bb7c43e Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 4 Dec 2024 14:42:39 +0100 Subject: [PATCH 12/37] bittensor context a section later --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e29ae181b..b930336cc 100644 --- a/README.md +++ b/README.md @@ -7,19 +7,6 @@ ComputeHorde is a specialized subnet within the [Bittensor network](https://bitt The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. -## Bittensor context - -Bittensor is a decentralized network designed to ensure that AI, the most critical technology of our era, remains accessible to everyone and free from the control of centralized entities. -Each Bittensor subnet specializes in a _digital commodity_, ranging from storage and large language models to general computing. - -This is achieved by distributing $TAO tokens to incentivize: -- Subnet owners to define the most useful and reliable commodities (by designing the incentive mechanism), -- Miners to deliver high-quality and efficient services innovatively, -- Validators to reward miners based on their performance. - -Bittensor's end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. -ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. - ## Key Features - **Decentralized Compute for Bittensor Validators** @@ -43,6 +30,19 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet Currently, **A6000** is the supported class, with **A100** coming next. The end goal is to support all GPU types/configurations required by validators across Bittensor subnets. +## Bittensor context + +Bittensor is a decentralized network designed to ensure that AI, the most critical technology of our era, remains accessible to everyone and free from the control of centralized entities. +Each Bittensor subnet specializes in a _digital commodity_, ranging from storage and large language models to general computing. + +This is achieved by distributing $TAO tokens to incentivize: +- Subnet owners to define the most useful and reliable commodities (by designing the incentive mechanism), +- Miners to deliver high-quality and efficient services innovatively, +- Validators to reward miners based on their performance. + +Bittensor's end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. +ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. + ## Components ### **Facilitator** From 7896b8669325e3584b0178a8addec2e3af1799ac Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 9 Dec 2024 09:05:59 +0100 Subject: [PATCH 13/37] modifications not recommended --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b930336cc..ecc5e9908 100644 --- a/README.md +++ b/README.md @@ -100,15 +100,18 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet # Running ComputeHorde components -This repository contains the reference implementations of: +This repository contains the implementations of: -- **Validator**: A reference implementation requiring a Trusted Miner for cross-checking synthetic tasks. +- **Validator**: Requres a Trusted Miner for cross-checking synthetic tasks. - **Miner**: Default miner setup with a single executor. -- **Executor**: Base implementation for executing dockerized jobs. Users can create custom executor managers to scale and optimize mining efficiency. +- **Executor**: Base implementation for executing dockerized jobs. + Users can create [custom executor managers](miner#custom-executor-manager) to scale and optimize mining efficiency. In the following sections, you can find instructions on running [Validator](#Validator) and [Miner](#Miner). There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. +Modifications to ComputeHorde components are generally not recommended, with the exception of the [ExecutorManager class](miner#custom-executor-manager). +Customizing this class allows you to implement dedicated logic for handling executors, such as running multiple executors per miner. ## Validator From b4ea747a79593c872c0dd03ec46d8cd314e20d72 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 9 Dec 2024 15:14:33 +0100 Subject: [PATCH 14/37] aws instructions --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cf3de6635..ffcbef613 100644 --- a/README.md +++ b/README.md @@ -266,7 +266,8 @@ If the output indicates a problem (especially immediately after installation), a ## How to list the contents of S3 buckets To verify that the S3 buckets are configured correctly, -you can list their contents by running the following command on a machine with the AWS CLI installed (e.g., the validator or miner). +you can list their contents by running the following command on a machine with the AWS CLI installed +(check out the [Amazon instructions](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)). Replace the placeholders with the appropriate values: ``` From 024b8c30efdb2138da5d180b8f55a6f5ce76931c Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 9 Dec 2024 15:22:43 +0100 Subject: [PATCH 15/37] supercharge bittensor --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ffcbef613..3461ce5b6 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,12 @@ ![ComputeHorde.svg](ComputeHorde.svg) -ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) that provides the computing power of GPU-equipped servers. +ComputeHorde is a specialized subnet within the [Bittensor network](https://bittensor.com) +designed to **supercharge Bittensor with scalable and trusted GPU computing power**. -The primary purpose of ComputeHorde is to **provide access to decentralized computing resources required by validators of other subnets**. -By removing reliance on centralized cloud providers, ComputeHorde ensures the Bittensor network remains true to its goal of decentralized resilience. +By transforming untrusted GPUs provided by miners into trusted compute resources, +ComputeHorde enables **validators of other subnets** to access large amounts of decentralized computing power efficiently and cost-effectively, +paving the way for Bittensor to scale beyond its current limitations to potentially support over 1,000 subnets. ## Key Features From d88b28f32dc7e678c89ebe99ad4da7d66e85a21e Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Mon, 9 Dec 2024 15:27:05 +0100 Subject: [PATCH 16/37] grammarly --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3461ce5b6..ff3d740d4 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ ComputeHorde is a specialized subnet within the [Bittensor network](https://bitt designed to **supercharge Bittensor with scalable and trusted GPU computing power**. By transforming untrusted GPUs provided by miners into trusted compute resources, -ComputeHorde enables **validators of other subnets** to access large amounts of decentralized computing power efficiently and cost-effectively, -paving the way for Bittensor to scale beyond its current limitations to potentially support over 1,000 subnets. +ComputeHorde enables **validators of other subnets** to access large amounts of decentralized computing power cost-effectively, +paving the way for Bittensor to scale beyond its current limitations to support potentially over 1,000 subnets. ## Key Features From ee9412cccf29e0c9dfc578601dd954ff784f9b1a Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 10 Dec 2024 15:40:34 +0100 Subject: [PATCH 17/37] reworked the modification discouragement tone --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ff3d740d4..5026352b2 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,10 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - Distributes tasks to miners and evaluates the results: - Organic results are returned to external requesters. - Synthetic results adjust miners' scores. +- Uses a separate GPU, called a **Trusted Miner**, to pre-run part of the validation tasks and establish expected results. + The Trusted Miner shares the same code as a regular miner but is configured differently: + - It is not registered in the metagraph. + - It only accepts tasks from the associated validator. - [See validator's README for more details](validator/README.md) ### **Miner** @@ -104,10 +108,11 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet This repository contains the implementations of: -- **Validator**: Requres a Trusted Miner for cross-checking synthetic tasks. -- **Miner**: Default miner setup with a single executor. -- **Executor**: Base implementation for executing dockerized jobs. +- **Validator**: Requires a [Trusted Miner](#validator) for cross-checking synthetic tasks. +- **Miner**: Modifying the miner code on subnet 12 is discouraged, as the stock implementation manages only communications between components. + The competitive edge lies in optimizing executor provisioning. Users can create [custom executor managers](miner#custom-executor-manager) to scale and optimize mining efficiency. + The default implementation runs a single executor and is not intended for mainnet use. In the following sections, you can find instructions on running [Validator](#Validator) and [Miner](#Miner). There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. From 77c3ea78ce80f1f1f05697bc3220b8cd17836574 Mon Sep 17 00:00:00 2001 From: mateuszsrebrny-reef Date: Tue, 10 Dec 2024 15:59:57 +0100 Subject: [PATCH 18/37] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Nowacki --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5026352b2..2f76ce7ce 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ This repository contains the implementations of: - **Miner**: Modifying the miner code on subnet 12 is discouraged, as the stock implementation manages only communications between components. The competitive edge lies in optimizing executor provisioning. Users can create [custom executor managers](miner#custom-executor-manager) to scale and optimize mining efficiency. - The default implementation runs a single executor and is not intended for mainnet use. + The default executor manager runs a single executor and is not intended for mainnet use. In the following sections, you can find instructions on running [Validator](#Validator) and [Miner](#Miner). There are more details in each component's README and in the [Troubleshooting](#Troubleshooting) section below. From 9bca1819ae050fe9ce4f8cd4d10afacadad05c98 Mon Sep 17 00:00:00 2001 From: mateuszsrebrny-reef Date: Mon, 16 Dec 2024 07:48:59 +0100 Subject: [PATCH 19/37] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Paweł Polewicz --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f76ce7ce..1e94eb16c 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ paving the way for Bittensor to scale beyond its current limitations to support - **Fair and Verified Work** ComputeHorde employs mechanisms to ensure miners provide authentic compute work, fairly verified by the validators: - - Execute tasks from all validators equally, regardless of their stake (above a rather low threshold). + - Execute tasks from validators stake-proportionally - Handle both **organic** (external, from other subnets) and **synthetic** (ComputeHorde miners validation) tasks. - Match jobs to the advertised hardware (e.g., ensuring A6000 GPUs are used for tasks requiring them). - Prevent malicious behaviors like "weight-copying" through innovative validation mechanisms. @@ -30,7 +30,7 @@ paving the way for Bittensor to scale beyond its current limitations to support - **Hardware Classes** ComputeHorde introduces hardware classes to create a free market for GPU resources, balancing cost-effectiveness with performance. Currently, **A6000** is the supported class, with **A100** coming next. - The end goal is to support all GPU types/configurations required by validators across Bittensor subnets. + The end goal is to eventually support all GPU types/configurations required by validators across Bittensor subnets. ## Bittensor context @@ -57,7 +57,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet - Organic results are returned to external requesters. - Synthetic results adjust miners' scores. - Uses a separate GPU, called a **Trusted Miner**, to pre-run part of the validation tasks and establish expected results. - The Trusted Miner shares the same code as a regular miner but is configured differently: + The Trusted Miner shares the same code as a regular miner, but is configured differently: - It is not registered in the metagraph. - It only accepts tasks from the associated validator. - [See validator's README for more details](validator/README.md) @@ -85,7 +85,6 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ### Encouraging Actual Mining - Synthetic tasks are designed to run only on specific hardware (e.g., A6000 GPUs), ensuring miners deliver the advertised compute power. - Scoring system incentivizing for completing organic tasks. -- Mechanisms for penalizing miners serving only a subset of validators ## Development goals From b434c9195cc23520be0ab8fc325506ebe3351c7b Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 17 Dec 2024 09:37:59 +0100 Subject: [PATCH 20/37] review fixes --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 6846812f7..0727391f0 100644 --- a/README.md +++ b/README.md @@ -53,9 +53,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ### **Validator** - Receives organic requests via the Facilitator or generates synthetic tasks for validation. -- Distributes tasks to miners and evaluates the results: - - Organic results are returned to external requesters. - - Synthetic results adjust miners' scores. +- Distributes both kinds of tasks to miners and evaluates the results: - Uses a separate GPU, called a **Trusted Miner**, to pre-run part of the validation tasks and establish expected results. The Trusted Miner shares the same code as a regular miner, but is configured differently: - It is not registered in the metagraph. From 5fed348737fe85253f9c1396af27bf4ab90bc316 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 17 Dec 2024 10:10:08 +0100 Subject: [PATCH 21/37] scoring formula description --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index 0727391f0..549dcc06c 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,41 @@ This is achieved by distributing $TAO tokens to incentivize: Bittensor's end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. +## Scoring Mechanism (in the making now, to be released soon) + +The **scoring mechanism** in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. + +The formula (calculated per validator) is as follows: + +- **1 point** for each successfully completed synthetic job. +- **1 point** for each successfully completed organic job. +- **1 point** for each **properly rejected** synthetic job. + +The goal is to stop penalizing miners from rejecting synthetic jobs, which makes them reject organic jobs + +### Proper Rejection + +A synthetic job is considered properly rejected when the miner provides a receipt proving +they are currently occupied with an **organic job** from a validator with the minimum stake +(configurable via a dynamic parameter). + +## Scoring Mechanism (in the making now, to be released soon) + +The **scoring mechanism** in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. + +The formula (calculated per validator) is as follows: + +- **1 point** for each successfully completed synthetic job. +- **1 point** for each successfully completed organic job. +- **1 point** for each **properly rejected** synthetic job. + +The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. + +### Proper Rejection + +A synthetic job is considered properly rejected when the miner provides a receipt proving they are currently +occupied with an **organic job** from a validator with the minimum stake (configurable via a dynamic parameter). + ## Components ### **Facilitator** From e2c0f29a68e2212ad163a5c62951f3b6dc1f4bda Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Tue, 17 Dec 2024 10:12:24 +0100 Subject: [PATCH 22/37] removed one copy of the section --- README.md | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/README.md b/README.md index 549dcc06c..a60bc94f4 100644 --- a/README.md +++ b/README.md @@ -55,24 +55,6 @@ The formula (calculated per validator) is as follows: - **1 point** for each successfully completed organic job. - **1 point** for each **properly rejected** synthetic job. -The goal is to stop penalizing miners from rejecting synthetic jobs, which makes them reject organic jobs - -### Proper Rejection - -A synthetic job is considered properly rejected when the miner provides a receipt proving -they are currently occupied with an **organic job** from a validator with the minimum stake -(configurable via a dynamic parameter). - -## Scoring Mechanism (in the making now, to be released soon) - -The **scoring mechanism** in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. - -The formula (calculated per validator) is as follows: - -- **1 point** for each successfully completed synthetic job. -- **1 point** for each successfully completed organic job. -- **1 point** for each **properly rejected** synthetic job. - The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. ### Proper Rejection From ea7561893c0cabfc66b8974c2b547654b7664bfe Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 11:09:08 +0100 Subject: [PATCH 23/37] dancing bonus within scoring --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 030bfce0a..de0640cf9 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,11 @@ The goal is to eliminate the current disincentive where miners avoid organic job A synthetic job is considered properly rejected when the miner provides a receipt proving they are currently occupied with an **organic job** from a validator with the minimum stake (configurable via a dynamic parameter). +### Dancing Bonus + +To encourage variance, which is essential for preventing [weight-copying](#discouraging-weight-copying), miners who implement +**dancing**—moving their executors between different UIDs—receive a **15% bonus** to their scores. + ## Components ### **Facilitator** From e1cbd1cba758aa9fa78c2703686a3e1b91cf3d84 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 13:43:40 +0100 Subject: [PATCH 24/37] hardware class weights --- README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de0640cf9..ef205d9d7 100644 --- a/README.md +++ b/README.md @@ -55,17 +55,26 @@ The formula (calculated per validator) is as follows: - **1 point** for each successfully completed organic job. - **1 point** for each **properly rejected** synthetic job. +A **successfully completed job** is one that finishes within a specified timeout. + The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. ### Proper Rejection A synthetic job is considered properly rejected when the miner provides a receipt proving they are currently -occupied with an **organic job** from a validator with the minimum stake (configurable via a dynamic parameter). +occupied with an **organic job** from a validator with the minimum stake. ### Dancing Bonus To encourage variance, which is essential for preventing [weight-copying](#discouraging-weight-copying), miners who implement -**dancing**—moving their executors between different UIDs—receive a **15% bonus** to their scores. +**dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. + +### Hardware Classes and Configurable Weights + +Each **hardware class** supported by ComputeHorde has a configurable weight parameter. +These weights determine the relative contribution of a miner's work to their ultimate score. +This allows the network to prioritize specific hardware classes based on their utility and demand, +ensuring a flexible and fair reward structure. ## Components From 591dc0996a323334371e48f5b06bdd419250c5cd Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 13:46:43 +0100 Subject: [PATCH 25/37] less bold --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ef205d9d7..f54856216 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ## Scoring Mechanism (in the making now, to be released soon) -The **scoring mechanism** in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. +The scoring mechanism in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. The formula (calculated per validator) is as follows: @@ -71,10 +71,10 @@ To encourage variance, which is essential for preventing [weight-copying](#disco ### Hardware Classes and Configurable Weights -Each **hardware class** supported by ComputeHorde has a configurable weight parameter. +Each hardware class supported by ComputeHorde has a configurable weight parameter. These weights determine the relative contribution of a miner's work to their ultimate score. This allows the network to prioritize specific hardware classes based on their utility and demand, -ensuring a flexible and fair reward structure. +creating a flexible and fair reward structure. ## Components From 2278de897c86ba47c62144db652981fad0213411 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 13:50:42 +0100 Subject: [PATCH 26/37] currently the only mplemented --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f54856216..3c228377e 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ The scoring mechanism in ComputeHorde incentivizes miners to perform organic job The formula (calculated per validator) is as follows: -- **1 point** for each successfully completed synthetic job. +- **1 point** for each successfully completed synthetic job (currently the only implemented scoring metric). - **1 point** for each successfully completed organic job. - **1 point** for each **properly rejected** synthetic job. From 0a32d37501eed0bdb991f51c2dbe1629f85a8d29 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 13:52:13 +0100 Subject: [PATCH 27/37] grammarly --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c228377e..637e35888 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ To encourage variance, which is essential for preventing [weight-copying](#disco Each hardware class supported by ComputeHorde has a configurable weight parameter. These weights determine the relative contribution of a miner's work to their ultimate score. -This allows the network to prioritize specific hardware classes based on their utility and demand, +This allows the network to prioritize specific hardware classes based on utility and demand, creating a flexible and fair reward structure. ## Components From 7f0f0c85f69ab5fe8475d9461ae087a9522e719c Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 14:21:37 +0100 Subject: [PATCH 28/37] mpars suggestions --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 637e35888..7a5b217dc 100644 --- a/README.md +++ b/README.md @@ -45,29 +45,26 @@ This is achieved by distributing $TAO tokens to incentivize: Bittensor's end goal is to create an unstoppable, self-sustaining ecosystem free from single-point control, enabling innovation and resilience for the entire network. ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnets operate effectively without relying on centralized cloud services. -## Scoring Mechanism (in the making now, to be released soon) +## Scoring Mechanism (being reworked currently) -The scoring mechanism in ComputeHorde incentivizes miners to perform organic jobs while maintaining accountability and fairness in the network. +The scoring mechanism in ComputeHorde is meant to incentivize miners to perform organic jobs while maintaining accountability and fairness in the network. +The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. -The formula (calculated per validator) is as follows: +The formula (calculated per validator): - **1 point** for each successfully completed synthetic job (currently the only implemented scoring metric). -- **1 point** for each successfully completed organic job. -- **1 point** for each **properly rejected** synthetic job. +- (in development) **1 point** for each successfully completed organic job. +- (in development) **1 point** for each **properly rejected** synthetic job. A **successfully completed job** is one that finishes within a specified timeout. -The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. - -### Proper Rejection - -A synthetic job is considered properly rejected when the miner provides a receipt proving they are currently +A synthetic job is considered **properly rejected** when the miner provides a receipt proving they are currently occupied with an **organic job** from a validator with the minimum stake. ### Dancing Bonus -To encourage variance, which is essential for preventing [weight-copying](#discouraging-weight-copying), miners who implement -**dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. +The miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. +This is encouraging variance, which is essential for preventing [weight-copying](#discouraging-weight-copying). ### Hardware Classes and Configurable Weights From 78d2a87632bf5ab784395d5b52491ba0dee2a483 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 14:40:41 +0100 Subject: [PATCH 29/37] fixes --- README.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7a5b217dc..0d39eedcb 100644 --- a/README.md +++ b/README.md @@ -47,24 +47,24 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ## Scoring Mechanism (being reworked currently) -The scoring mechanism in ComputeHorde is meant to incentivize miners to perform organic jobs while maintaining accountability and fairness in the network. -The goal is to eliminate the current disincentive where miners avoid organic jobs to avoid penalties for rejecting synthetic jobs. +The scoring mechanism in ComputeHorde is designed to incentivize miners to perform organic jobs while maintaining accountability and fairness in the network. +The goal is to eliminate the current disincentive where miners avoid organic jobs to prevent penalties for rejecting synthetic jobs. -The formula (calculated per validator): +### Formula (calculated per validator): -- **1 point** for each successfully completed synthetic job (currently the only implemented scoring metric). +- **1 point** for each successfully completed synthetic job (currently the only implemented scoring metric). - (in development) **1 point** for each successfully completed organic job. - (in development) **1 point** for each **properly rejected** synthetic job. -A **successfully completed job** is one that finishes within a specified timeout. +A **successfully completed job** is one that finishes within a specified timeout. A synthetic job is considered **properly rejected** when the miner provides a receipt proving they are currently occupied with an **organic job** from a validator with the minimum stake. ### Dancing Bonus -The miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. -This is encouraging variance, which is essential for preventing [weight-copying](#discouraging-weight-copying). +Miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. +This encourages variance, which is essential for preventing [weight-copying](#discouraging-weight-copying). ### Hardware Classes and Configurable Weights @@ -73,6 +73,11 @@ These weights determine the relative contribution of a miner's work to their ult This allows the network to prioritize specific hardware classes based on utility and demand, creating a flexible and fair reward structure. +Each hardware class supported by ComputeHorde has a configurable weight parameter. +These weights determine the relative contribution of a miner's work to their ultimate score. +This system allows the network to prioritize specific hardware classes based on utility and demand, +creating a flexible and fair reward structure. + ## Components ### **Facilitator** From 6c61956c4ea1da57a144770ec51a61adacff0f66 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 14:43:48 +0100 Subject: [PATCH 30/37] better bold, removed duplication --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0d39eedcb..ca7c361fb 100644 --- a/README.md +++ b/README.md @@ -47,12 +47,13 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet ## Scoring Mechanism (being reworked currently) -The scoring mechanism in ComputeHorde is designed to incentivize miners to perform organic jobs while maintaining accountability and fairness in the network. +The scoring mechanism in ComputeHorde is designed to **incentivize miners to perform organic jobs** while +maintaining accountability and fairness in the network. The goal is to eliminate the current disincentive where miners avoid organic jobs to prevent penalties for rejecting synthetic jobs. ### Formula (calculated per validator): -- **1 point** for each successfully completed synthetic job (currently the only implemented scoring metric). +- **1 point** for each successfully completed synthetic job. - (in development) **1 point** for each successfully completed organic job. - (in development) **1 point** for each **properly rejected** synthetic job. @@ -68,11 +69,6 @@ This encourages variance, which is essential for preventing [weight-copying](#di ### Hardware Classes and Configurable Weights -Each hardware class supported by ComputeHorde has a configurable weight parameter. -These weights determine the relative contribution of a miner's work to their ultimate score. -This allows the network to prioritize specific hardware classes based on utility and demand, -creating a flexible and fair reward structure. - Each hardware class supported by ComputeHorde has a configurable weight parameter. These weights determine the relative contribution of a miner's work to their ultimate score. This system allows the network to prioritize specific hardware classes based on utility and demand, From c7d389757b23c84ff8adf681e4010ba58119e430 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 14:45:37 +0100 Subject: [PATCH 31/37] whitespaces --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ca7c361fb..5cbb99320 100644 --- a/README.md +++ b/README.md @@ -64,13 +64,13 @@ occupied with an **organic job** from a validator with the minimum stake. ### Dancing Bonus -Miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. +Miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. This encourages variance, which is essential for preventing [weight-copying](#discouraging-weight-copying). ### Hardware Classes and Configurable Weights -Each hardware class supported by ComputeHorde has a configurable weight parameter. -These weights determine the relative contribution of a miner's work to their ultimate score. +Each hardware class supported by ComputeHorde has a configurable weight parameter. +These weights determine the relative contribution of a miner's work to their ultimate score. This system allows the network to prioritize specific hardware classes based on utility and demand, creating a flexible and fair reward structure. From 15c20f3bad796efdd795abad85f6891e56a1c7b0 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Wed, 18 Dec 2024 14:48:31 +0100 Subject: [PATCH 32/37] paragraphs --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 5cbb99320..022548cfc 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ ComputeHorde adds GPU-powered validation to this ecosystem, helping other subnet The scoring mechanism in ComputeHorde is designed to **incentivize miners to perform organic jobs** while maintaining accountability and fairness in the network. + The goal is to eliminate the current disincentive where miners avoid organic jobs to prevent penalties for rejecting synthetic jobs. ### Formula (calculated per validator): @@ -65,12 +66,14 @@ occupied with an **organic job** from a validator with the minimum stake. ### Dancing Bonus Miners who implement **dancing**—moving their executors between different UIDs—receive a **30% bonus** (as of December 2024) to their scores. + This encourages variance, which is essential for preventing [weight-copying](#discouraging-weight-copying). ### Hardware Classes and Configurable Weights Each hardware class supported by ComputeHorde has a configurable weight parameter. These weights determine the relative contribution of a miner's work to their ultimate score. + This system allows the network to prioritize specific hardware classes based on utility and demand, creating a flexible and fair reward structure. From 5d5576393056cdabf59849e82099f5b39866d8c6 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Thu, 19 Dec 2024 12:27:16 +0100 Subject: [PATCH 33/37] remove the mention of the minimum stake --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 022548cfc..345956915 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ The goal is to eliminate the current disincentive where miners avoid organic job A **successfully completed job** is one that finishes within a specified timeout. A synthetic job is considered **properly rejected** when the miner provides a receipt proving they are currently -occupied with an **organic job** from a validator with the minimum stake. +occupied with an **organic job** from another validator. ### Dancing Bonus From 396da30734307977c459571a1c5357d265809259 Mon Sep 17 00:00:00 2001 From: Mateusz Srebrny Date: Thu, 19 Dec 2024 12:49:08 +0100 Subject: [PATCH 34/37] 50k min mentioned --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 345956915..14f31e7a2 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ The goal is to eliminate the current disincentive where miners avoid organic job A **successfully completed job** is one that finishes within a specified timeout. A synthetic job is considered **properly rejected** when the miner provides a receipt proving they are currently -occupied with an **organic job** from another validator. +occupied with an **organic job** from another validator (with a minimum of 50k stake). ### Dancing Bonus From 966e13c8935c95b87140a9422679d84ef2311cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20G=C3=B3rawski?= Date: Thu, 19 Dec 2024 12:04:10 +0100 Subject: [PATCH 35/37] Add block number cache --- .../compute_horde/blockchain/__init__.py | 0 .../compute_horde/blockchain/apps.py | 17 + .../compute_horde/blockchain/block_cache.py | 29 + .../compute_horde/blockchain/tasks.py | 13 + compute_horde/compute_horde/settings.py | 7 +- compute_horde/noxfile.py | 1 + compute_horde/pdm.lock | 1760 +++-------------- compute_horde/pyproject.toml | 1 + compute_horde/tests/settings.py | 7 + compute_horde/tests/test_blockchain.py | 60 + compute_horde/uv.lock | 123 ++ executor/uv.lock | 2 + miner/uv.lock | 2 + uv.lock | 2 + validator/uv.lock | 2 + 15 files changed, 506 insertions(+), 1520 deletions(-) create mode 100644 compute_horde/compute_horde/blockchain/__init__.py create mode 100644 compute_horde/compute_horde/blockchain/apps.py create mode 100644 compute_horde/compute_horde/blockchain/block_cache.py create mode 100644 compute_horde/compute_horde/blockchain/tasks.py create mode 100644 compute_horde/tests/settings.py create mode 100644 compute_horde/tests/test_blockchain.py diff --git a/compute_horde/compute_horde/blockchain/__init__.py b/compute_horde/compute_horde/blockchain/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/compute_horde/compute_horde/blockchain/apps.py b/compute_horde/compute_horde/blockchain/apps.py new file mode 100644 index 000000000..6f7c359c0 --- /dev/null +++ b/compute_horde/compute_horde/blockchain/apps.py @@ -0,0 +1,17 @@ +from django.apps import AppConfig + + +class ComputeHordeBlockchainConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "compute_horde.blockchain" + verbose_name = "Blockchain" + + def ready(self): + from django.conf import settings + + # Check if a required setting is defined + if not hasattr(settings, "BITTENSOR_NETWORK"): + raise ValueError( + "The setting 'BITTENSOR_NETWORK' is required in your settings.py " + "for 'compute_horde.blockchain' to function properly. Please define it." + ) diff --git a/compute_horde/compute_horde/blockchain/block_cache.py b/compute_horde/compute_horde/blockchain/block_cache.py new file mode 100644 index 000000000..6ce11e9dc --- /dev/null +++ b/compute_horde/compute_horde/blockchain/block_cache.py @@ -0,0 +1,29 @@ +import bittensor +from django.conf import settings +from django.core.cache import cache + +_BLOCK_CACHE_KEY = getattr( + settings, "COMPUTE_HORDE_BLOCK_CACHE_KEY", "compute_horde.blockchain.block_cache.current_block" +) +_BLOCK_CACHE_TIMEOUT = getattr(settings, "COMPUTE_HORDE_BLOCK_CACHE_TIMEOUT", 2) + + +def get_subtensor(network): + return bittensor.subtensor(network) + + +def get_current_block() -> int: + current_block: int = cache.get(_BLOCK_CACHE_KEY) + if current_block is not None: + return current_block + + return cache_current_block() + + +def cache_current_block() -> int: + subtensor = get_subtensor(network=settings.BITTENSOR_NETWORK) + current_block: int = subtensor.get_current_block() + + cache.set(_BLOCK_CACHE_KEY, current_block, _BLOCK_CACHE_TIMEOUT) + + return current_block diff --git a/compute_horde/compute_horde/blockchain/tasks.py b/compute_horde/compute_horde/blockchain/tasks.py new file mode 100644 index 000000000..327784139 --- /dev/null +++ b/compute_horde/compute_horde/blockchain/tasks.py @@ -0,0 +1,13 @@ +import logging + +from celery import shared_task + +from .block_cache import cache_current_block + +logger = logging.getLogger(__name__) + + +@shared_task() +def update_block_cache(): + logger.info("Updating block cache") + cache_current_block() diff --git a/compute_horde/compute_horde/settings.py b/compute_horde/compute_horde/settings.py index dc0ee5bb6..0864d1941 100644 --- a/compute_horde/compute_horde/settings.py +++ b/compute_horde/compute_horde/settings.py @@ -1 +1,6 @@ -INSTALLED_APPS = ["compute_horde.receipts"] +INSTALLED_APPS = [ + "compute_horde.blockchain", + "compute_horde.receipts", +] + +BITTENSOR_NETWORK = "local" diff --git a/compute_horde/noxfile.py b/compute_horde/noxfile.py index 070b206b5..3d2294de8 100644 --- a/compute_horde/noxfile.py +++ b/compute_horde/noxfile.py @@ -73,6 +73,7 @@ def test(session): "-vv", "tests", *session.posargs, + env={"DJANGO_SETTINGS_MODULE": "tests.settings"}, ) diff --git a/compute_horde/pdm.lock b/compute_horde/pdm.lock index 14a91fd72..b91b17349 100644 --- a/compute_horde/pdm.lock +++ b/compute_horde/pdm.lock @@ -2,71 +2,26 @@ # It is not intended for manual editing. [metadata] -groups = ["default", "format", "lint", "release", "test", "type_check"] +groups = ["default"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:18875fe281aaf6ce3f19116dff18e4a268bc1cdfafc4c08c54f68c62ad0864b9" +content_hash = "sha256:7b1389bb0928ed6c99ea504c9803ad3742d292aa090986b64fc666c0791cc80d" [[metadata.targets]] requires_python = "==3.11.*" [[package]] -name = "aiohappyeyeballs" -version = "2.4.3" -requires_python = ">=3.8" -summary = "Happy Eyeballs for asyncio" -groups = ["default"] -files = [ - {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, - {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, -] - -[[package]] -name = "aiohttp" -version = "3.10.10" -requires_python = ">=3.8" -summary = "Async http client/server framework (asyncio)" -groups = ["default"] -dependencies = [ - "aiohappyeyeballs>=2.3.0", - "aiosignal>=1.1.2", - "async-timeout<5.0,>=4.0; python_version < \"3.11\"", - "attrs>=17.3.0", - "frozenlist>=1.1.1", - "multidict<7.0,>=4.5", - "yarl<2.0,>=1.12.0", -] -files = [ - {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f"}, - {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb"}, - {file = "aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871"}, - {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c"}, - {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38"}, - {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb"}, - {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7"}, - {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911"}, - {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092"}, - {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142"}, - {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9"}, - {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1"}, - {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a"}, - {file = "aiohttp-3.10.10-cp311-cp311-win32.whl", hash = "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94"}, - {file = "aiohttp-3.10.10-cp311-cp311-win_amd64.whl", hash = "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959"}, - {file = "aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a"}, -] - -[[package]] -name = "aiosignal" -version = "1.3.1" -requires_python = ">=3.7" -summary = "aiosignal: a list of registered asynchronous callbacks" +name = "amqp" +version = "5.3.1" +requires_python = ">=3.6" +summary = "Low-level AMQP client for Python (fork of amqplib)." groups = ["default"] dependencies = [ - "frozenlist>=1.1.0", + "vine<6.0.0,>=5.0.0", ] files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, + {file = "amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2"}, + {file = "amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432"}, ] [[package]] @@ -83,75 +38,12 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[[package]] -name = "ansible" -version = "8.5.0" -requires_python = ">=3.9" -summary = "Radically simple IT automation" -groups = ["default"] -dependencies = [ - "ansible-core~=2.15.5", -] -files = [ - {file = "ansible-8.5.0-py3-none-any.whl", hash = "sha256:2749032e26b0dbc9a694528b85fd89e7f950b8c7b53606f17dd997f23ac7cc88"}, - {file = "ansible-8.5.0.tar.gz", hash = "sha256:327c509bdaf5cdb2489d85c09d2c107e9432f9874c8bb5c0702a731160915f2d"}, -] - -[[package]] -name = "ansible-core" -version = "2.15.12" -requires_python = ">=3.9" -summary = "Radically simple IT automation" -groups = ["default"] -dependencies = [ - "PyYAML>=5.1", - "cryptography", - "importlib-resources<5.1,>=5.0; python_version < \"3.10\"", - "jinja2>=3.0.0", - "packaging", - "resolvelib<1.1.0,>=0.5.3", -] -files = [ - {file = "ansible_core-2.15.12-py3-none-any.whl", hash = "sha256:390edd603420122f7cb1c470d8d1f8bdbbd795a1844dd03c1917db21935aecb9"}, - {file = "ansible_core-2.15.12.tar.gz", hash = "sha256:5fde82cd3928d9857ad880782c644f27d3168b0f25321d5a8d6befa524aa1818"}, -] - -[[package]] -name = "ansible-vault" -version = "2.1.0" -summary = "R/W an ansible-vault yaml file" -groups = ["default"] -dependencies = [ - "ansible", - "setuptools", -] -files = [ - {file = "ansible-vault-2.1.0.tar.gz", hash = "sha256:5ce8fdb5470f1449b76bf07ae2abc56480dad48356ae405c85b686efb64dbd5e"}, -] - -[[package]] -name = "anyio" -version = "4.6.2.post1" -requires_python = ">=3.9" -summary = "High level compatibility layer for multiple asynchronous event loop implementations" -groups = ["default"] -dependencies = [ - "exceptiongroup>=1.0.2; python_version < \"3.11\"", - "idna>=2.8", - "sniffio>=1.1", - "typing-extensions>=4.1; python_version < \"3.11\"", -] -files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, -] - [[package]] name = "asgiref" version = "3.8.1" requires_python = ">=3.8" summary = "ASGI specs, helper code, and adapters" -groups = ["default", "type_check"] +groups = ["default"] dependencies = [ "typing-extensions>=4; python_version < \"3.11\"", ] @@ -161,98 +53,60 @@ files = [ ] [[package]] -name = "attrs" -version = "24.2.0" +name = "billiard" +version = "4.2.1" requires_python = ">=3.7" -summary = "Classes Without Boilerplate" -groups = ["default"] -dependencies = [ - "importlib-metadata; python_version < \"3.8\"", -] -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[[package]] -name = "backoff" -version = "2.2.1" -requires_python = ">=3.7,<4.0" -summary = "Function decoration for backoff and retry" +summary = "Python multiprocessing fork with improvements and bugfixes" groups = ["default"] files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, + {file = "billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb"}, + {file = "billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f"}, ] [[package]] -name = "base58" -version = "2.1.1" -requires_python = ">=3.5" -summary = "Base58 and Base58Check implementation." +name = "bittensor" +version = "8.5.1" +requires_python = ">=3.9" +summary = "" groups = ["default"] files = [ - {file = "base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2"}, - {file = "base58-2.1.1.tar.gz", hash = "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c"}, + {file = "bittensor-8.5.1-py3-none-any.whl", hash = "sha256:8dbf9c389d10fd043dab5da163377a43ec2ae1b1715e819a3602e07d36304f94"}, + {file = "bittensor-8.5.1.tar.gz", hash = "sha256:f1bb033ba1e2641881d37f9d8cfebdcb7145ae20975861863710bdd17941cce4"}, ] [[package]] -name = "bittensor" -version = "7.4.0" -requires_python = ">=3.9" -summary = "bittensor" +name = "celery" +version = "5.4.0" +requires_python = ">=3.8" +summary = "Distributed Task Queue." groups = ["default"] dependencies = [ - "PyNaCl~=1.3", - "aiohttp~=3.9", - "ansible-vault~=2.1", - "ansible~=8.5.0", - "backoff", - "certifi~=2024.7.4", - "colorama~=0.4.6", - "cryptography~=42.0.5", - "ddt~=1.6.0", - "eth-utils<2.3.0", - "fastapi~=0.110.1", - "fuzzywuzzy>=0.18.0", - "msgpack-numpy-opentensor~=0.5.0", - "munch~=2.5.0", - "nest-asyncio", - "netaddr", - "numpy~=1.26", - "packaging", - "password-strength", - "pycryptodome<4.0.0,>=3.18.0", - "pydantic<3,>=2.3", - "python-Levenshtein", - "python-statemachine~=2.1", - "pyyaml", - "requests", - "retry", - "rich", - "scalecodec==1.2.11", - "setuptools~=70.0.0", - "shtab~=1.6.5", - "substrate-interface~=1.7.9", - "termcolor", - "tqdm", - "uvicorn", - "wheel", + "backports-zoneinfo>=0.2.1; python_version < \"3.9\"", + "billiard<5.0,>=4.2.0", + "click-didyoumean>=0.3.0", + "click-plugins>=1.1.1", + "click-repl>=0.2.0", + "click<9.0,>=8.1.2", + "importlib-metadata>=3.6; python_version < \"3.8\"", + "kombu<6.0,>=5.3.4", + "python-dateutil>=2.8.2", + "tzdata>=2022.7", + "vine<6.0,>=5.1.0", ] files = [ - {file = "bittensor-7.4.0-py3-none-any.whl", hash = "sha256:fefa7336f2a7f0dc1edea53a5b1296f95503d9e1cc01cb00a445e6c7afc10d1c"}, - {file = "bittensor-7.4.0.tar.gz", hash = "sha256:235b3f5bb3d93f098a41a4f63d7676bd548debb0bb58f02a104704c0beb20ea2"}, + {file = "celery-5.4.0-py3-none-any.whl", hash = "sha256:369631eb580cf8c51a82721ec538684994f8277637edde2dfc0dacd73ed97f64"}, + {file = "celery-5.4.0.tar.gz", hash = "sha256:504a19140e8d3029d5acad88330c541d4c3f64c789d85f94756762d8bca7e706"}, ] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.12.14" requires_python = ">=3.6" summary = "Python package for providing Mozilla's CA Bundle." -groups = ["default", "test", "type_check"] +groups = ["default"] files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] @@ -261,6 +115,7 @@ version = "1.17.1" requires_python = ">=3.8" summary = "Foreign Function Interface for Python calling C code." groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" dependencies = [ "pycparser", ] @@ -285,7 +140,7 @@ name = "charset-normalizer" version = "3.4.0" requires_python = ">=3.7.0" summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -groups = ["default", "test", "type_check"] +groups = ["default"] files = [ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, @@ -311,7 +166,7 @@ name = "click" version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" -groups = ["default", "release"] +groups = ["default"] dependencies = [ "colorama; platform_system == \"Windows\"", "importlib-metadata; python_version < \"3.8\"", @@ -322,137 +177,98 @@ files = [ ] [[package]] -name = "codespell" -version = "2.3.0" -requires_python = ">=3.8" -summary = "Codespell" -groups = ["lint"] -files = [ - {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, - {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, -] - -[[package]] -name = "codespell" -version = "2.3.0" -extras = ["toml"] -requires_python = ">=3.8" -summary = "Codespell" -groups = ["lint"] +name = "click-didyoumean" +version = "0.3.1" +requires_python = ">=3.6.2" +summary = "Enables git-like *did-you-mean* feature in click" +groups = ["default"] dependencies = [ - "codespell==2.3.0", - "tomli; python_version < \"3.11\"", + "click>=7", ] files = [ - {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, - {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -summary = "Cross-platform colored terminal text." -groups = ["default", "release", "test"] -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, + {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, + {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, ] [[package]] -name = "cryptography" -version = "42.0.8" -requires_python = ">=3.7" -summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +name = "click-plugins" +version = "1.1.1" +summary = "An extension module for click to enable registering CLI commands via setuptools entry-points." groups = ["default"] dependencies = [ - "cffi>=1.12; platform_python_implementation != \"PyPy\"", + "click>=4.0", ] files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, + {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, ] [[package]] -name = "cytoolz" -version = "1.0.0" -requires_python = ">=3.8" -summary = "Cython implementation of Toolz: High performance functional utilities" +name = "click-repl" +version = "0.3.0" +requires_python = ">=3.6" +summary = "REPL plugin for Click" groups = ["default"] -marker = "implementation_name == \"cpython\"" dependencies = [ - "toolz>=0.8.0", + "click>=7.0", + "prompt-toolkit>=3.0.36", ] files = [ - {file = "cytoolz-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dffc22fd2c91be64dbdbc462d0786f8e8ac9a275cfa1869a1084d1867d4f67e0"}, - {file = "cytoolz-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a99e7e29274e293f4ffe20e07f76c2ac753a78f1b40c1828dfc54b2981b2f6c4"}, - {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c507a3e0a45c41d66b43f96797290d75d1e7a8549aa03a4a6b8854fdf3f7b8d8"}, - {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:643a593ec272ef7429099e1182a22f64ec2696c00d295d2a5be390db1b7ff176"}, - {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ce38e2e42cbae30446190c59b92a8a9029e1806fd79eaf88f48b0fe33003893"}, - {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810a6a168b8c5ecb412fbae3dd6f7ed6c6253a63caf4174ee9794ebd29b2224f"}, - {file = "cytoolz-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ce8a2a85c0741c1b19b16e6782c4a5abc54c3caecda66793447112ab2fa9884"}, - {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ea4ac72e6b830861035c4c7999af8e55813f57c6d1913a3d93cc4a6babc27bf7"}, - {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a09cdfb21dfb38aa04df43e7546a41f673377eb5485da88ceb784e327ec7603b"}, - {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:658dd85deb375ff7af990a674e5c9058cef1c9d1f5dc89bc87b77be499348144"}, - {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9715d1ff5576919d10b68f17241375f6a1eec8961c25b78a83e6ef1487053f39"}, - {file = "cytoolz-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f370a1f1f1afc5c1c8cc5edc1cfe0ba444263a0772af7ce094be8e734f41769d"}, - {file = "cytoolz-1.0.0-cp311-cp311-win32.whl", hash = "sha256:dbb2ec1177dca700f3db2127e572da20de280c214fc587b2a11c717fc421af56"}, - {file = "cytoolz-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:0983eee73df86e54bb4a79fcc4996aa8b8368fdbf43897f02f9c3bf39c4dc4fb"}, - {file = "cytoolz-1.0.0.tar.gz", hash = "sha256:eb453b30182152f9917a5189b7d99046b6ce90cdf8aeb0feff4b2683e600defd"}, + {file = "click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9"}, + {file = "click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812"}, ] [[package]] -name = "ddt" -version = "1.6.0" -summary = "Data-Driven/Decorated Tests" +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." groups = ["default"] -dependencies = [ - "enum34; python_version < \"3\"", -] +marker = "platform_system == \"Windows\"" files = [ - {file = "ddt-1.6.0-py2.py3-none-any.whl", hash = "sha256:e3c93b961a108b4f4d5a6c7f2263513d928baf3bb5b32af8e1c804bfb041141d"}, - {file = "ddt-1.6.0.tar.gz", hash = "sha256:f71b348731b8c78c3100bffbd951a769fbd439088d1fdbb3841eee019af80acd"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] -name = "decorator" -version = "5.1.1" -requires_python = ">=3.5" -summary = "Decorators for Humans" +name = "cryptography" +version = "44.0.0" +requires_python = "!=3.9.0,!=3.9.1,>=3.7" +summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." groups = ["default"] +dependencies = [ + "cffi>=1.12; platform_python_implementation != \"PyPy\"", +] files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {file = "cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, + {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, + {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, + {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, + {file = "cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd"}, + {file = "cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, + {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, + {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, + {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, + {file = "cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede"}, + {file = "cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02"}, ] [[package]] name = "django" -version = "4.2.16" +version = "4.2.17" requires_python = ">=3.8" summary = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." -groups = ["default", "type_check"] +groups = ["default"] dependencies = [ "asgiref<4,>=3.6.0", "backports-zoneinfo; python_version < \"3.9\"", @@ -460,1271 +276,245 @@ dependencies = [ "tzdata; sys_platform == \"win32\"", ] files = [ - {file = "Django-4.2.16-py3-none-any.whl", hash = "sha256:1ddc333a16fc139fd253035a1606bb24261951bbc3a6ca256717fa06cc41a898"}, - {file = "Django-4.2.16.tar.gz", hash = "sha256:6f1616c2786c408ce86ab7e10f792b8f15742f7b7b7460243929cb371e7f1dad"}, -] - -[[package]] -name = "django-stubs" -version = "5.1.0" -requires_python = ">=3.8" -summary = "Mypy stubs for Django" -groups = ["type_check"] -dependencies = [ - "asgiref", - "django", - "django-stubs-ext>=5.1.0", - "tomli; python_version < \"3.11\"", - "types-PyYAML", - "typing-extensions>=4.11.0", -] -files = [ - {file = "django_stubs-5.1.0-py3-none-any.whl", hash = "sha256:b98d49a80aa4adf1433a97407102d068de26c739c405431d93faad96dd282c40"}, - {file = "django_stubs-5.1.0.tar.gz", hash = "sha256:86128c228b65e6c9a85e5dc56eb1c6f41125917dae0e21e6cfecdf1b27e630c5"}, + {file = "Django-4.2.17-py3-none-any.whl", hash = "sha256:3a93350214ba25f178d4045c0786c61573e7dbfa3c509b3551374f1e11ba8de0"}, + {file = "Django-4.2.17.tar.gz", hash = "sha256:6b56d834cc94c8b21a8f4e775064896be3b4a4ca387f2612d4406a5927cd2fdc"}, ] [[package]] -name = "django-stubs-ext" -version = "5.1.0" -requires_python = ">=3.8" -summary = "Monkey-patching and extensions for django-stubs" -groups = ["type_check"] -dependencies = [ - "django", - "typing-extensions", -] +name = "idna" +version = "3.10" +requires_python = ">=3.6" +summary = "Internationalized Domain Names in Applications (IDNA)" +groups = ["default"] files = [ - {file = "django_stubs_ext-5.1.0-py3-none-any.whl", hash = "sha256:a455fc222c90b30b29ad8c53319559f5b54a99b4197205ddbb385aede03b395d"}, - {file = "django_stubs_ext-5.1.0.tar.gz", hash = "sha256:ed7d51c0b731651879fc75f331fb0806d98b67bfab464e96e2724db6b46ef926"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [[package]] -name = "django-stubs" -version = "5.1.0" -extras = ["compatible-mypy"] +name = "kombu" +version = "5.4.2" requires_python = ">=3.8" -summary = "Mypy stubs for Django" -groups = ["type_check"] +summary = "Messaging library for Python." +groups = ["default"] dependencies = [ - "django-stubs==5.1.0", - "mypy~=1.11.0", + "amqp<6.0.0,>=5.1.1", + "backports-zoneinfo[tzdata]>=0.2.1; python_version < \"3.9\"", + "typing-extensions==4.12.2; python_version < \"3.10\"", + "tzdata; python_version >= \"3.9\"", + "vine==5.1.0", ] files = [ - {file = "django_stubs-5.1.0-py3-none-any.whl", hash = "sha256:b98d49a80aa4adf1433a97407102d068de26c739c405431d93faad96dd282c40"}, - {file = "django_stubs-5.1.0.tar.gz", hash = "sha256:86128c228b65e6c9a85e5dc56eb1c6f41125917dae0e21e6cfecdf1b27e630c5"}, + {file = "kombu-5.4.2-py3-none-any.whl", hash = "sha256:14212f5ccf022fc0a70453bb025a1dcc32782a588c49ea866884047d66e14763"}, + {file = "kombu-5.4.2.tar.gz", hash = "sha256:eef572dd2fd9fc614b37580e3caeafdd5af46c1eff31e7fba89138cdb406f2cf"}, ] [[package]] -name = "djangorestframework-stubs" -version = "3.15.1" +name = "more-itertools" +version = "10.5.0" requires_python = ">=3.8" -summary = "PEP-484 stubs for django-rest-framework" -groups = ["type_check"] -dependencies = [ - "django-stubs>=5.0.4", - "requests>=2.0.0", - "types-PyYAML>=5.4.3", - "types-requests>=0.1.12", - "typing-extensions>=3.10.0", -] +summary = "More routines for operating on iterables, beyond itertools" +groups = ["default"] files = [ - {file = "djangorestframework_stubs-3.15.1-py3-none-any.whl", hash = "sha256:79dc9018f5d5fa420f9981eec9f1e820ecbd04719791f144419cdc6c5b8e29bd"}, - {file = "djangorestframework_stubs-3.15.1.tar.gz", hash = "sha256:34539871895d66d382b6ae3655d9f95c1de7733cf50bc29097638d367ed3117d"}, + {file = "more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6"}, + {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, ] [[package]] -name = "djangorestframework-stubs" -version = "3.15.1" -extras = ["compatible-mypy"] -requires_python = ">=3.8" -summary = "PEP-484 stubs for django-rest-framework" -groups = ["type_check"] -dependencies = [ - "django-stubs[compatible-mypy]", - "djangorestframework-stubs==3.15.1", - "mypy~=1.11.0", -] +name = "phx-class-registry" +version = "5.1.1" +requires_python = "<4.0,>=3.11" +summary = "Factory+Registry pattern for Python classes" +groups = ["default"] files = [ - {file = "djangorestframework_stubs-3.15.1-py3-none-any.whl", hash = "sha256:79dc9018f5d5fa420f9981eec9f1e820ecbd04719791f144419cdc6c5b8e29bd"}, - {file = "djangorestframework_stubs-3.15.1.tar.gz", hash = "sha256:34539871895d66d382b6ae3655d9f95c1de7733cf50bc29097638d367ed3117d"}, + {file = "phx_class_registry-5.1.1-py3-none-any.whl", hash = "sha256:b093ecc1dad34c5dc6eda2530046d956f2303a5cfaa543bf7fba35ce3c7b1672"}, + {file = "phx_class_registry-5.1.1.tar.gz", hash = "sha256:06c9af198b846a7530406314f63f8d83441daf42d29ee25d8c0b19a9dbc37939"}, ] [[package]] -name = "ecdsa" -version = "0.19.0" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.6" -summary = "ECDSA cryptographic signature library (pure python)" +name = "prompt-toolkit" +version = "3.0.48" +requires_python = ">=3.7.0" +summary = "Library for building powerful interactive command lines in Python" groups = ["default"] dependencies = [ - "six>=1.9.0", + "wcwidth", ] files = [ - {file = "ecdsa-0.19.0-py2.py3-none-any.whl", hash = "sha256:2cea9b88407fdac7bbeca0833b189e4c9c53f2ef1e1eaa29f6224dbc809b707a"}, - {file = "ecdsa-0.19.0.tar.gz", hash = "sha256:60eaad1199659900dd0af521ed462b793bbdf867432b3948e87416ae4caf6bf8"}, + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, ] [[package]] -name = "eth-hash" -version = "0.7.0" -requires_python = ">=3.8, <4" -summary = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" +name = "pycparser" +version = "2.22" +requires_python = ">=3.8" +summary = "C parser in Python" groups = ["default"] +marker = "platform_python_implementation != \"PyPy\"" files = [ - {file = "eth-hash-0.7.0.tar.gz", hash = "sha256:bacdc705bfd85dadd055ecd35fd1b4f846b671add101427e089a4ca2e8db310a"}, - {file = "eth_hash-0.7.0-py3-none-any.whl", hash = "sha256:b8d5a230a2b251f4a291e3164a23a14057c4a6de4b0aa4a16fa4dc9161b57e2f"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] -name = "eth-keys" -version = "0.6.0" -requires_python = "<4,>=3.8" -summary = "eth-keys: Common API for Ethereum key operations" +name = "pydantic" +version = "2.10.4" +requires_python = ">=3.8" +summary = "Data validation using Python type hints" groups = ["default"] dependencies = [ - "eth-typing>=3", - "eth-utils>=2", + "annotated-types>=0.6.0", + "pydantic-core==2.27.2", + "typing-extensions>=4.12.2", ] files = [ - {file = "eth_keys-0.6.0-py3-none-any.whl", hash = "sha256:b396fdfe048a5bba3ef3990739aec64901eb99901c03921caa774be668b1db6e"}, - {file = "eth_keys-0.6.0.tar.gz", hash = "sha256:ba33230f851d02c894e83989185b21d76152c49b37e35b61b1d8a6d9f1d20430"}, + {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"}, + {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"}, ] [[package]] -name = "eth-typing" -version = "5.0.1" -requires_python = "<4,>=3.8" -summary = "eth-typing: Common type annotations for ethereum python packages" +name = "pydantic-core" +version = "2.27.2" +requires_python = ">=3.8" +summary = "Core functionality for Pydantic validation and serialization" groups = ["default"] dependencies = [ - "typing-extensions>=4.5.0", + "typing-extensions!=4.7.0,>=4.6.0", ] files = [ - {file = "eth_typing-5.0.1-py3-none-any.whl", hash = "sha256:f30d1af16aac598f216748a952eeb64fbcb6e73efa691d2de31148138afe96de"}, - {file = "eth_typing-5.0.1.tar.gz", hash = "sha256:83debf88c9df286db43bb7374974681ebcc9f048fac81be2548dbc549a3203c0"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [[package]] -name = "eth-utils" -version = "2.2.2" -requires_python = ">=3.7,<4" -summary = "eth-utils: Common utility functions for python code that interacts with Ethereum" +name = "python-dateutil" +version = "2.9.0.post0" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +summary = "Extensions to the standard Python datetime module" groups = ["default"] dependencies = [ - "cached-property<2,>=1.5.2; python_version < \"3.8\"", - "cytoolz>=0.10.1; implementation_name == \"cpython\"", - "eth-hash>=0.3.1", - "eth-typing>=3.0.0", - "toolz>0.8.2; implementation_name == \"pypy\"", + "six>=1.5", ] files = [ - {file = "eth-utils-2.2.2.tar.gz", hash = "sha256:5ca6265177ce544d9d43cdf2272ae2227e5d6d9529c270bbb707d17339087101"}, - {file = "eth_utils-2.2.2-py3-none-any.whl", hash = "sha256:2580a8065273f62ca1ec4c175228c52e626a5f1007e965d2117e5eca1a93cae8"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [[package]] -name = "fastapi" -version = "0.110.3" +name = "requests" +version = "2.32.3" requires_python = ">=3.8" -summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +summary = "Python HTTP for Humans." groups = ["default"] dependencies = [ - "pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4", - "starlette<0.38.0,>=0.37.2", - "typing-extensions>=4.8.0", + "certifi>=2017.4.17", + "charset-normalizer<4,>=2", + "idna<4,>=2.5", + "urllib3<3,>=1.21.1", ] files = [ - {file = "fastapi-0.110.3-py3-none-any.whl", hash = "sha256:fd7600612f755e4050beb74001310b5a7e1796d149c2ee363124abdfa0289d32"}, - {file = "fastapi-0.110.3.tar.gz", hash = "sha256:555700b0159379e94fdbfc6bb66a0f1c43f4cf7060f25239af3d84b63a656626"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [[package]] -name = "freezegun" -version = "1.5.1" -requires_python = ">=3.7" -summary = "Let your Python tests travel through time" -groups = ["test"] -dependencies = [ - "python-dateutil>=2.7", -] +name = "six" +version = "1.17.0" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +summary = "Python 2 and 3 compatibility utilities" +groups = ["default"] files = [ - {file = "freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1"}, - {file = "freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] -name = "frozenlist" -version = "1.5.0" +name = "sqlparse" +version = "0.5.3" requires_python = ">=3.8" -summary = "A list-like structure which implements collections.abc.MutableSequence" +summary = "A non-validating SQL parser." groups = ["default"] files = [ - {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, - {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, - {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, - {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, - {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, - {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, - {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, + {file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"}, + {file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272"}, ] [[package]] -name = "fuzzywuzzy" -version = "0.18.0" -summary = "Fuzzy string matching in python" +name = "typing-extensions" +version = "4.12.2" +requires_python = ">=3.8" +summary = "Backported and Experimental Type Hints for Python 3.8+" groups = ["default"] files = [ - {file = "fuzzywuzzy-0.18.0-py2.py3-none-any.whl", hash = "sha256:928244b28db720d1e0ee7587acf660ea49d7e4c632569cad4f1cd7e68a5f0993"}, - {file = "fuzzywuzzy-0.18.0.tar.gz", hash = "sha256:45016e92264780e58972dca1b3d939ac864b78437422beecebb3095f8efd00e8"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] -name = "h11" -version = "0.14.0" -requires_python = ">=3.7" -summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +name = "tzdata" +version = "2024.2" +requires_python = ">=2" +summary = "Provider of IANA time zone data" groups = ["default"] -dependencies = [ - "typing-extensions; python_version < \"3.8\"", -] -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "idna" -version = "3.10" -requires_python = ">=3.6" -summary = "Internationalized Domain Names in Applications (IDNA)" -groups = ["default", "test", "type_check"] files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] -name = "incremental" -version = "24.7.2" +name = "urllib3" +version = "2.2.3" requires_python = ">=3.8" -summary = "A small library that versions your Python projects." -groups = ["release"] -dependencies = [ - "setuptools>=61.0", - "tomli; python_version < \"3.11\"", -] -files = [ - {file = "incremental-24.7.2-py3-none-any.whl", hash = "sha256:8cb2c3431530bec48ad70513931a760f446ad6c25e8333ca5d95e24b0ed7b8fe"}, - {file = "incremental-24.7.2.tar.gz", hash = "sha256:fb4f1d47ee60efe87d4f6f0ebb5f70b9760db2b2574c59c8e8912be4ebd464c9"}, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -requires_python = ">=3.7" -summary = "brain-dead simple config-ini parsing" -groups = ["test"] -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "jinja2" -version = "3.1.4" -requires_python = ">=3.7" -summary = "A very fast and expressive template engine." -groups = ["default", "release"] -dependencies = [ - "MarkupSafe>=2.0", -] +summary = "HTTP library with thread-safe connection pooling, file post, and more." +groups = ["default"] files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [[package]] -name = "levenshtein" -version = "0.26.0" -requires_python = ">=3.9" -summary = "Python extension for computing string edit distances and similarities." +name = "vine" +version = "5.1.0" +requires_python = ">=3.6" +summary = "Python promises." groups = ["default"] -dependencies = [ - "rapidfuzz<4.0.0,>=3.9.0", -] files = [ - {file = "levenshtein-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7aabafb951b96ca6e0f981b1edb3ec81b41c010b7437758e275393768fa84453"}, - {file = "levenshtein-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cefa552c5190e912f0fe39b62a5b08597d1256f330ed2c459ba724947458282"}, - {file = "levenshtein-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a0ed02c8aaef0903b72fe0da88d9d24d7964b07dbc123997e549ac165efad8d"}, - {file = "levenshtein-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5d21d3b08ceb7e544fae04897e211e43fb3500c9b3a8e74d08468b015c7270d"}, - {file = "levenshtein-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77422c5da5cfd8455a8835329d965e24250b0f0c1398e0a6362879f00d18f27c"}, - {file = "levenshtein-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4931c8263e06edbece310b1f8e03bfcb74f211863a85058b46cdf8460a4136af"}, - {file = "levenshtein-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e265812db8b04e6ae159751c7a82d6e0e5025223bd330fc9104a8a5beeeb7cf"}, - {file = "levenshtein-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8c58cb6c9f90f9b11d6b478e2da6ac1f0bcb5ea9608a5611088d30f782ee5920"}, - {file = "levenshtein-0.26.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:754669e9b82795cfc3ca0d70f2e715b58ff4d0f7e7f4e77fc6539543439ae22c"}, - {file = "levenshtein-0.26.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:830b1993e3e945b213a6b73ceca8b555147a6ecd7323e4959b80dee35abfc7fc"}, - {file = "levenshtein-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2b3aa9a0b844ddaeb6f5317eb4e85b5748901cf40c9a9b0d3a8bf76ef9d3cccc"}, - {file = "levenshtein-0.26.0-cp311-cp311-win32.whl", hash = "sha256:07ffd78569ca80adfd55172156faac35eb12ccd375d6d51ba4512b0346337cbf"}, - {file = "levenshtein-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:1bf886afed2304e0022c33ed644afb719411cce4d4af11ba5bb040f05d9f00c1"}, - {file = "levenshtein-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:c68b6e6c74ce9056370559196177b9e514ba20611a1ce9545dcd366d8a97cc60"}, - {file = "levenshtein-0.26.0.tar.gz", hash = "sha256:960b020d96bbd348400d6ff5c16290adee49f0ae2d42707a550a3b4f7d092abe"}, + {file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc"}, + {file = "vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0"}, ] [[package]] -name = "markdown-it-py" -version = "3.0.0" -requires_python = ">=3.8" -summary = "Python port of markdown-it. Markdown parsing, done right!" +name = "wcwidth" +version = "0.2.13" +summary = "Measures the displayed width of unicode strings in a terminal" groups = ["default"] dependencies = [ - "mdurl~=0.1", -] -files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, -] - -[[package]] -name = "markupsafe" -version = "3.0.2" -requires_python = ">=3.9" -summary = "Safely add untrusted strings to HTML/XML markup." -groups = ["default", "release"] -files = [ - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, + "backports-functools-lru-cache>=1.2.1; python_version < \"3.2\"", ] - -[[package]] -name = "mdurl" -version = "0.1.2" -requires_python = ">=3.7" -summary = "Markdown URL utilities" -groups = ["default"] files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] -name = "more-itertools" -version = "10.5.0" +name = "websockets" +version = "13.1" requires_python = ">=3.8" -summary = "More routines for operating on iterables, beyond itertools" -groups = ["default"] -files = [ - {file = "more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6"}, - {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, -] - -[[package]] -name = "msgpack" -version = "1.1.0" -requires_python = ">=3.8" -summary = "MessagePack serializer" -groups = ["default"] -files = [ - {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7"}, - {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa"}, - {file = "msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701"}, - {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6"}, - {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59"}, - {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0"}, - {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e"}, - {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6"}, - {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5"}, - {file = "msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88"}, - {file = "msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788"}, - {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, -] - -[[package]] -name = "msgpack-numpy-opentensor" -version = "0.5.0" -summary = "Numpy data serialization using msgpack" -groups = ["default"] -dependencies = [ - "msgpack>=0.5.2", - "numpy>=1.9.0", -] -files = [ - {file = "msgpack-numpy-opentensor-0.5.0.tar.gz", hash = "sha256:213232c20e2efd528ec8a9882b605e8ad87cfc35b57dfcfefe05d33aaaabe574"}, - {file = "msgpack_numpy_opentensor-0.5.0-py2.py3-none-any.whl", hash = "sha256:8a61c597a976425a87094d8e89846aa9528eb1f037e97ff1428fe3cd61a238e7"}, -] - -[[package]] -name = "multidict" -version = "6.1.0" -requires_python = ">=3.8" -summary = "multidict implementation" -groups = ["default"] -dependencies = [ - "typing-extensions>=4.1.0; python_version < \"3.11\"", -] -files = [ - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, - {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, - {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, - {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, - {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, -] - -[[package]] -name = "munch" -version = "2.5.0" -summary = "A dot-accessible dictionary (a la JavaScript objects)" -groups = ["default"] -dependencies = [ - "six", -] -files = [ - {file = "munch-2.5.0-py2.py3-none-any.whl", hash = "sha256:6f44af89a2ce4ed04ff8de41f70b226b984db10a91dcc7b9ac2efc1c77022fdd"}, - {file = "munch-2.5.0.tar.gz", hash = "sha256:2d735f6f24d4dba3417fa448cae40c6e896ec1fdab6cdb5e6510999758a4dbd2"}, -] - -[[package]] -name = "mypy" -version = "1.11.2" -requires_python = ">=3.8" -summary = "Optional static typing for Python" -groups = ["type_check"] -dependencies = [ - "mypy-extensions>=1.0.0", - "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.6.0", -] -files = [ - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -requires_python = ">=3.5" -summary = "Type system extensions for programs checked with the mypy type checker." -groups = ["type_check"] -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "nest-asyncio" -version = "1.6.0" -requires_python = ">=3.5" -summary = "Patch asyncio to allow nested event loops" -groups = ["default"] -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - -[[package]] -name = "netaddr" -version = "1.3.0" -requires_python = ">=3.7" -summary = "A network address manipulation library for Python" -groups = ["default"] -files = [ - {file = "netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe"}, - {file = "netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a"}, -] - -[[package]] -name = "numpy" -version = "1.26.4" -requires_python = ">=3.9" -summary = "Fundamental package for array computing in Python" -groups = ["default"] -files = [ - {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.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, -] - -[[package]] -name = "packaging" -version = "24.1" -requires_python = ">=3.8" -summary = "Core utilities for Python packages" -groups = ["default", "test"] -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "password-strength" -version = "0.0.3.post2" -summary = "Password strength and validation " -groups = ["default"] -dependencies = [ - "six", -] -files = [ - {file = "password_strength-0.0.3.post2-py2.py3-none-any.whl", hash = "sha256:6739357c2863d707b7c7f247ff7c6882a70904a18d12c9aaf98f8b95da176fb9"}, - {file = "password_strength-0.0.3.post2.tar.gz", hash = "sha256:bf4df10a58fcd3abfa182367307b4fd7b1cec518121dd83bf80c1c42ba796762"}, -] - -[[package]] -name = "phx-class-registry" -version = "5.1.1" -requires_python = "<4.0,>=3.11" -summary = "Factory+Registry pattern for Python classes" -groups = ["default"] -files = [ - {file = "phx_class_registry-5.1.1-py3-none-any.whl", hash = "sha256:b093ecc1dad34c5dc6eda2530046d956f2303a5cfaa543bf7fba35ce3c7b1672"}, - {file = "phx_class_registry-5.1.1.tar.gz", hash = "sha256:06c9af198b846a7530406314f63f8d83441daf42d29ee25d8c0b19a9dbc37939"}, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -requires_python = ">=3.8" -summary = "plugin and hook calling mechanisms for python" -groups = ["test"] -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[[package]] -name = "propcache" -version = "0.2.0" -requires_python = ">=3.8" -summary = "Accelerated property cache" -groups = ["default"] -files = [ - {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354"}, - {file = "propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de"}, - {file = "propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87"}, - {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016"}, - {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb"}, - {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2"}, - {file = "propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4"}, - {file = "propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b"}, - {file = "propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b"}, - {file = "propcache-0.2.0-cp311-cp311-win32.whl", hash = "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1"}, - {file = "propcache-0.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71"}, - {file = "propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036"}, - {file = "propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70"}, -] - -[[package]] -name = "py" -version = "1.11.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -summary = "library with cross-python path, ini-parsing, io, code, log facilities" -groups = ["default"] -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - -[[package]] -name = "py-bip39-bindings" -version = "0.1.11" -summary = "Python bindings for tiny-bip39 RUST crate" -groups = ["default"] -files = [ - {file = "py_bip39_bindings-0.1.11-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:27cce22727e28705a660464689ade6d2cdad4e622bead5bde2ffa53c4f605ee5"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:cdf35d031587296dcbdb22dbc67f2eaf5b5df9d5036b77fbeb93affbb9eec8d3"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2fd5b926686207752d5f2e2ff164a9489b3613239d0967362f10c2fbd64eb018"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba84c38962bffdaea0e499245731d669cc21d1280f81ace8ff60ed3550024570"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9024ec3c4a3db005b355f9a00602cede290dec5e9c7cf7dd06a26f620b0cf99"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:ce028c8aef51dec2a85f298461b2988cca28740bf3cc23472c3469d3f853714e"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:51882cd0fa7529173b3543c089c24c775f1876ddf48f10e60f2ed07ad2af5cae"}, - {file = "py_bip39_bindings-0.1.11-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4ee776f3b33b2d71fee48679951f117e3d1f052449ec2fcb184f3c64a4c77e4f"}, - {file = "py_bip39_bindings-0.1.11-cp311-none-win32.whl", hash = "sha256:d8b722e49562810f94eb61c9efa172f327537c74c37da3e86b161f7f444c51bf"}, - {file = "py_bip39_bindings-0.1.11-cp311-none-win_amd64.whl", hash = "sha256:be934052497f07605768e2c7184e4f4269b3e2e77930131dfc9bdbb791e6fdf4"}, - {file = "py_bip39_bindings-0.1.11.tar.gz", hash = "sha256:ebc128ccf3a0750d758557e094802f0975c3760a939f8a8b76392d7dbe6b52a1"}, -] - -[[package]] -name = "py-ed25519-zebra-bindings" -version = "1.0.1" -summary = "Python bindings for the ed25519-zebra RUST crate" -groups = ["default"] -files = [ - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e249b0d57187077859652a1119b315dec49e4d458c9795a7aeb2381799ce34e6"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:50d383684b650d92f93e1482891ce0c1c2011d2ca3b0821b5b049d6bb35dca3e"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d32d2c4d50789e6d3e081ab9a6d4e6f82bcf414e6b1c41a8f64a04065f6db340"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:363599e810ccc1f09092803a14a386ee8bce44d7057a3e36a14b1bf31de7e0b5"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa59836fac97352def00c2c7c6fed33ba351258b24d3f7cbced646271aa94de6"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3d16da4fd6da771fd2323a90d779076066a02bb2a2c62b15ecf51ca2706f451b"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2e715341b4927f6735ed7113644c0a5362310df4ddad1f938b5040c85884db15"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-none-win32.whl", hash = "sha256:21498379d5e85d97a9633b7cf6362b4d187c7575ab8633c3ba6c99b1dcb83358"}, - {file = "py_ed25519_zebra_bindings-1.0.1-cp311-none-win_amd64.whl", hash = "sha256:58e7d56a6f565fc044d313ec429b782150366a39ada973051dde60f1363abd9b"}, - {file = "py_ed25519_zebra_bindings-1.0.1.tar.gz", hash = "sha256:0062f189e1c8672ba94676cedb346fae4c33a0cabaf12e75a1aedcf9db47403b"}, -] - -[[package]] -name = "py-sr25519-bindings" -version = "0.2.0" -summary = "Python bindings for sr25519 library" -groups = ["default"] -files = [ - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:54e8c41081a4c23eca4b19f52de2514c48ddec6f49844dff7ad4cfac0bc11712"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:6c73bd1a87849db9cd0e664b2d2e14208183dd8d11ac083d70e688fc28283a71"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47d21382ea24f7f25e72cdddaca2f013ce46cc7983bcfebc611c795cea177eff"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c1448cf55bbf6f52d2e24766a8a84ba6d77100a991897e8519711ccd7409830"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:392b8b9875c89c9302930ad3d59567b62176f33adeee96a55ff61ba17fb7aac2"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7b56b5cbbfb36b41ddfa462989a03386590ac036f3a755ef64fffeb2fed88654"}, - {file = "py_sr25519_bindings-0.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8f06ea3237e06666e3a4ff4719b4fba415472943831b229428753c37d5ecd1b4"}, - {file = "py_sr25519_bindings-0.2.0-cp311-none-win_amd64.whl", hash = "sha256:d62af30b2022f5fa787e46c06823c35a21abe791bf55012f498f9ba8e4baabc8"}, - {file = "py_sr25519_bindings-0.2.0.tar.gz", hash = "sha256:0c2fe92b7cdcebf6c5611a90054f8ba6ea90b68b8832896d2dc565537bc40b0c"}, -] - -[[package]] -name = "pycparser" -version = "2.22" -requires_python = ">=3.8" -summary = "C parser in Python" -groups = ["default"] -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pycryptodome" -version = "3.21.0" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -summary = "Cryptographic library for Python" -groups = ["default"] -files = [ - {file = "pycryptodome-3.21.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2480ec2c72438430da9f601ebc12c518c093c13111a5c1644c82cdfc2e50b1e4"}, - {file = "pycryptodome-3.21.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:de18954104667f565e2fbb4783b56667f30fb49c4d79b346f52a29cb198d5b6b"}, - {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de4b7263a33947ff440412339cb72b28a5a4c769b5c1ca19e33dd6cd1dcec6e"}, - {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0714206d467fc911042d01ea3a1847c847bc10884cf674c82e12915cfe1649f8"}, - {file = "pycryptodome-3.21.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d85c1b613121ed3dbaa5a97369b3b757909531a959d229406a75b912dd51dd1"}, - {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8898a66425a57bcf15e25fc19c12490b87bd939800f39a03ea2de2aea5e3611a"}, - {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_2_i686.whl", hash = "sha256:932c905b71a56474bff8a9c014030bc3c882cee696b448af920399f730a650c2"}, - {file = "pycryptodome-3.21.0-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:18caa8cfbc676eaaf28613637a89980ad2fd96e00c564135bf90bc3f0b34dd93"}, - {file = "pycryptodome-3.21.0-cp36-abi3-win32.whl", hash = "sha256:280b67d20e33bb63171d55b1067f61fbd932e0b1ad976b3a184303a3dad22764"}, - {file = "pycryptodome-3.21.0-cp36-abi3-win_amd64.whl", hash = "sha256:b7aa25fc0baa5b1d95b7633af4f5f1838467f1815442b22487426f94e0d66c53"}, - {file = "pycryptodome-3.21.0.tar.gz", hash = "sha256:f7787e0d469bdae763b876174cf2e6c0f7be79808af26b1da96f1a64bcf47297"}, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -requires_python = ">=3.8" -summary = "Data validation using Python type hints" -groups = ["default"] -dependencies = [ - "annotated-types>=0.6.0", - "pydantic-core==2.23.4", - "typing-extensions>=4.12.2; python_version >= \"3.13\"", - "typing-extensions>=4.6.1; python_version < \"3.13\"", -] -files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, -] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -requires_python = ">=3.8" -summary = "Core functionality for Pydantic validation and serialization" -groups = ["default"] -dependencies = [ - "typing-extensions!=4.7.0,>=4.6.0", -] -files = [ - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, -] - -[[package]] -name = "pygments" -version = "2.18.0" -requires_python = ">=3.8" -summary = "Pygments is a syntax highlighting package written in Python." -groups = ["default"] -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[[package]] -name = "pynacl" -version = "1.5.0" -requires_python = ">=3.6" -summary = "Python binding to the Networking and Cryptography (NaCl) library" -groups = ["default"] -dependencies = [ - "cffi>=1.4.1", -] -files = [ - {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, - {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, -] - -[[package]] -name = "pytest" -version = "8.3.3" -requires_python = ">=3.8" -summary = "pytest: simple powerful testing with Python" -groups = ["test"] -dependencies = [ - "colorama; sys_platform == \"win32\"", - "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", - "iniconfig", - "packaging", - "pluggy<2,>=1.5", - "tomli>=1; python_version < \"3.11\"", -] -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, -] - -[[package]] -name = "pytest-asyncio" -version = "0.24.0" -requires_python = ">=3.8" -summary = "Pytest support for asyncio" -groups = ["test"] -dependencies = [ - "pytest<9,>=8.2", -] -files = [ - {file = "pytest_asyncio-0.24.0-py3-none-any.whl", hash = "sha256:a811296ed596b69bf0b6f3dc40f83bcaf341b155a269052d82efa2b25ac7037b"}, - {file = "pytest_asyncio-0.24.0.tar.gz", hash = "sha256:d081d828e576d85f875399194281e92bf8a68d60d72d1a2faf2feddb6c46b276"}, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -summary = "Extensions to the standard Python datetime module" -groups = ["test"] -dependencies = [ - "six>=1.5", -] -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[[package]] -name = "python-levenshtein" -version = "0.26.0" -requires_python = ">=3.9" -summary = "Python extension for computing string edit distances and similarities." -groups = ["default"] -dependencies = [ - "Levenshtein==0.26.0", -] -files = [ - {file = "python_Levenshtein-0.26.0-py3-none-any.whl", hash = "sha256:1d808ba2f9df04aaea5eceba6e73734f2ffeba99d98d2a91078f32276cd041f4"}, - {file = "python_levenshtein-0.26.0.tar.gz", hash = "sha256:b454dd13708546649f1cba2a0f450dd98e7c1679a92e2d6f0a8b8c013c276e55"}, -] - -[[package]] -name = "python-statemachine" -version = "2.3.6" -requires_python = ">=3.7" -summary = "Python Finite State Machines made easy." -groups = ["default"] -files = [ - {file = "python_statemachine-2.3.6-py3-none-any.whl", hash = "sha256:0001b02cbe2f5b2420c423b5b3e3a33915447ac6d9735219c929e2378d454f5f"}, - {file = "python_statemachine-2.3.6.tar.gz", hash = "sha256:9cb4040ca7f2158d3cd46f36a77b420b6ef95a90223928a7f3cab232a70bd560"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -requires_python = ">=3.8" -summary = "YAML parser and emitter for Python" -groups = ["default", "test"] -files = [ - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "rapidfuzz" -version = "3.10.0" -requires_python = ">=3.9" -summary = "rapid fuzzy string matching" -groups = ["default"] -files = [ - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win32.whl", hash = "sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab"}, - {file = "rapidfuzz-3.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893"}, - {file = "rapidfuzz-3.10.0.tar.gz", hash = "sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -requires_python = ">=3.8" -summary = "Python HTTP for Humans." -groups = ["default", "test", "type_check"] -dependencies = [ - "certifi>=2017.4.17", - "charset-normalizer<4,>=2", - "idna<4,>=2.5", - "urllib3<3,>=1.21.1", -] -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[[package]] -name = "resolvelib" -version = "1.0.1" -summary = "Resolve abstract dependencies into concrete ones" -groups = ["default"] -files = [ - {file = "resolvelib-1.0.1-py2.py3-none-any.whl", hash = "sha256:d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf"}, - {file = "resolvelib-1.0.1.tar.gz", hash = "sha256:04ce76cbd63fded2078ce224785da6ecd42b9564b1390793f64ddecbe997b309"}, -] - -[[package]] -name = "responses" -version = "0.25.3" -requires_python = ">=3.8" -summary = "A utility library for mocking out the `requests` Python library." -groups = ["test"] -dependencies = [ - "pyyaml", - "requests<3.0,>=2.30.0", - "urllib3<3.0,>=1.25.10", -] -files = [ - {file = "responses-0.25.3-py3-none-any.whl", hash = "sha256:521efcbc82081ab8daa588e08f7e8a64ce79b91c39f6e62199b19159bea7dbcb"}, - {file = "responses-0.25.3.tar.gz", hash = "sha256:617b9247abd9ae28313d57a75880422d55ec63c29d33d629697590a034358dba"}, -] - -[[package]] -name = "retry" -version = "0.9.2" -summary = "Easy to use retry decorator." -groups = ["default"] -dependencies = [ - "decorator>=3.4.2", - "py<2.0.0,>=1.4.26", -] -files = [ - {file = "retry-0.9.2-py2.py3-none-any.whl", hash = "sha256:ccddf89761fa2c726ab29391837d4327f819ea14d244c232a1d24c67a2f98606"}, - {file = "retry-0.9.2.tar.gz", hash = "sha256:f8bfa8b99b69c4506d6f5bd3b0aabf77f98cdb17f3c9fc3f5ca820033336fba4"}, -] - -[[package]] -name = "rich" -version = "13.9.3" -requires_python = ">=3.8.0" -summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -groups = ["default"] -dependencies = [ - "markdown-it-py>=2.2.0", - "pygments<3.0.0,>=2.13.0", - "typing-extensions<5.0,>=4.0.0; python_version < \"3.11\"", -] -files = [ - {file = "rich-13.9.3-py3-none-any.whl", hash = "sha256:9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283"}, - {file = "rich-13.9.3.tar.gz", hash = "sha256:bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e"}, -] - -[[package]] -name = "ruff" -version = "0.7.0" -requires_python = ">=3.7" -summary = "An extremely fast Python linter and code formatter, written in Rust." -groups = ["format", "lint"] -files = [ - {file = "ruff-0.7.0-py3-none-linux_armv6l.whl", hash = "sha256:0cdf20c2b6ff98e37df47b2b0bd3a34aaa155f59a11182c1303cce79be715628"}, - {file = "ruff-0.7.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:496494d350c7fdeb36ca4ef1c9f21d80d182423718782222c29b3e72b3512737"}, - {file = "ruff-0.7.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:214b88498684e20b6b2b8852c01d50f0651f3cc6118dfa113b4def9f14faaf06"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630fce3fefe9844e91ea5bbf7ceadab4f9981f42b704fae011bb8efcaf5d84be"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:211d877674e9373d4bb0f1c80f97a0201c61bcd1e9d045b6e9726adc42c156aa"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:194d6c46c98c73949a106425ed40a576f52291c12bc21399eb8f13a0f7073495"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:82c2579b82b9973a110fab281860403b397c08c403de92de19568f32f7178598"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9af971fe85dcd5eaed8f585ddbc6bdbe8c217fb8fcf510ea6bca5bdfff56040e"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b641c7f16939b7d24b7bfc0be4102c56562a18281f84f635604e8a6989948914"}, - {file = "ruff-0.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d71672336e46b34e0c90a790afeac8a31954fd42872c1f6adaea1dff76fd44f9"}, - {file = "ruff-0.7.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ab7d98c7eed355166f367597e513a6c82408df4181a937628dbec79abb2a1fe4"}, - {file = "ruff-0.7.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1eb54986f770f49edb14f71d33312d79e00e629a57387382200b1ef12d6a4ef9"}, - {file = "ruff-0.7.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:dc452ba6f2bb9cf8726a84aa877061a2462afe9ae0ea1d411c53d226661c601d"}, - {file = "ruff-0.7.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4b406c2dce5be9bad59f2de26139a86017a517e6bcd2688da515481c05a2cb11"}, - {file = "ruff-0.7.0-py3-none-win32.whl", hash = "sha256:f6c968509f767776f524a8430426539587d5ec5c662f6addb6aa25bc2e8195ec"}, - {file = "ruff-0.7.0-py3-none-win_amd64.whl", hash = "sha256:ff4aabfbaaba880e85d394603b9e75d32b0693152e16fa659a3064a85df7fce2"}, - {file = "ruff-0.7.0-py3-none-win_arm64.whl", hash = "sha256:10842f69c245e78d6adec7e1db0a7d9ddc2fff0621d730e61657b64fa36f207e"}, - {file = "ruff-0.7.0.tar.gz", hash = "sha256:47a86360cf62d9cd53ebfb0b5eb0e882193fc191c6d717e8bef4462bc3b9ea2b"}, -] - -[[package]] -name = "scalecodec" -version = "1.2.11" -requires_python = "<4,>=3.6" -summary = "Python SCALE Codec Library" -groups = ["default"] -dependencies = [ - "base58>=2.0.1", - "more-itertools", - "requests>=2.24.0", -] -files = [ - {file = "scalecodec-1.2.11-py3-none-any.whl", hash = "sha256:d15c94965f617caa25096f83a45f5f73031d05e6ee08d6039969f0a64fc35de1"}, - {file = "scalecodec-1.2.11.tar.gz", hash = "sha256:99a2cdbfccdcaf22bd86b86da55a730a2855514ad2309faef4a4a93ac6cbeb8d"}, -] - -[[package]] -name = "setuptools" -version = "70.0.0" -requires_python = ">=3.8" -summary = "Easily download, build, install, upgrade, and uninstall Python packages" -groups = ["default", "release"] -files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, -] - -[[package]] -name = "shtab" -version = "1.6.5" -requires_python = ">=3.7" -summary = "Automagic shell tab completion for Python CLI applications" -groups = ["default"] -files = [ - {file = "shtab-1.6.5-py3-none-any.whl", hash = "sha256:3c7be25ab65a324ed41e9c2964f2146236a5da6e6a247355cfea56f65050f220"}, - {file = "shtab-1.6.5.tar.gz", hash = "sha256:cf4ab120183e84cce041abeb6f620f9560739741dfc31dd466315550c08be9ec"}, -] - -[[package]] -name = "six" -version = "1.16.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -summary = "Python 2 and 3 compatibility utilities" -groups = ["default", "test"] -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -requires_python = ">=3.7" -summary = "Sniff out which async library your code is running under" -groups = ["default"] -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "sqlparse" -version = "0.5.1" -requires_python = ">=3.8" -summary = "A non-validating SQL parser." -groups = ["default", "type_check"] -files = [ - {file = "sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4"}, - {file = "sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e"}, -] - -[[package]] -name = "starlette" -version = "0.37.2" -requires_python = ">=3.8" -summary = "The little ASGI library that shines." -groups = ["default"] -dependencies = [ - "anyio<5,>=3.4.0", - "typing-extensions>=3.10.0; python_version < \"3.10\"", -] -files = [ - {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, - {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, -] - -[[package]] -name = "substrate-interface" -version = "1.7.11" -requires_python = "<4,>=3.7" -summary = "Library for interfacing with a Substrate node" -groups = ["default"] -dependencies = [ - "PyNaCl<2,>=1.0.1", - "base58<3,>=1.0.3", - "certifi>=2019.3.9", - "ecdsa<1,>=0.17.0", - "eth-keys<1,>=0.2.1", - "eth-utils<6,>=1.3.0", - "idna<4,>=2.1.0", - "py-bip39-bindings<1,>=0.1.9", - "py-ed25519-zebra-bindings<2,>=1.0", - "py-sr25519-bindings<1,>=0.2.0", - "pycryptodome<4,>=3.11.0", - "requests<3,>=2.21.0", - "scalecodec<1.3,>=1.2.10", - "websocket-client<2,>=0.57.0", - "xxhash<4,>=1.3.0", -] -files = [ - {file = "substrate-interface-1.7.11.tar.gz", hash = "sha256:4caa5eacb9996edbe76ad12249521b3542bbd8d9d69b96734087201db1fef8f6"}, - {file = "substrate_interface-1.7.11-py3-none-any.whl", hash = "sha256:ce19bc97481769238ed23c752db985a3058637918693f2db6aeed2fab3756075"}, -] - -[[package]] -name = "termcolor" -version = "2.5.0" -requires_python = ">=3.9" -summary = "ANSI color formatting for output in terminal" -groups = ["default"] -files = [ - {file = "termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8"}, - {file = "termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f"}, -] - -[[package]] -name = "toolz" -version = "1.0.0" -requires_python = ">=3.8" -summary = "List processing tools and functional utilities" -groups = ["default"] -marker = "implementation_name == \"pypy\" or implementation_name == \"cpython\"" -files = [ - {file = "toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236"}, - {file = "toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02"}, -] - -[[package]] -name = "towncrier" -version = "23.11.0" -requires_python = ">=3.8" -summary = "Building newsfiles for your project." -groups = ["release"] -dependencies = [ - "click", - "importlib-resources>=5; python_version < \"3.10\"", - "incremental", - "jinja2", - "tomli; python_version < \"3.11\"", -] -files = [ - {file = "towncrier-23.11.0-py3-none-any.whl", hash = "sha256:2e519ca619426d189e3c98c99558fe8be50c9ced13ea1fc20a4a353a95d2ded7"}, - {file = "towncrier-23.11.0.tar.gz", hash = "sha256:13937c247e3f8ae20ac44d895cf5f96a60ad46cfdcc1671759530d7837d9ee5d"}, -] - -[[package]] -name = "tqdm" -version = "4.66.5" -requires_python = ">=3.7" -summary = "Fast, Extensible Progress Meter" -groups = ["default"] -dependencies = [ - "colorama; platform_system == \"Windows\"", -] -files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, -] - -[[package]] -name = "types-freezegun" -version = "1.1.10" -summary = "Typing stubs for freezegun" -groups = ["type_check"] -files = [ - {file = "types-freezegun-1.1.10.tar.gz", hash = "sha256:cb3a2d2eee950eacbaac0673ab50499823365ceb8c655babb1544a41446409ec"}, - {file = "types_freezegun-1.1.10-py3-none-any.whl", hash = "sha256:fadebe72213e0674036153366205038e1f95c8ca96deb4ef9b71ddc15413543e"}, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20241003" -requires_python = ">=3.8" -summary = "Typing stubs for python-dateutil" -groups = ["type_check"] -files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, -] - -[[package]] -name = "types-pyyaml" -version = "6.0.12.20240917" -requires_python = ">=3.8" -summary = "Typing stubs for PyYAML" -groups = ["type_check"] -files = [ - {file = "types-PyYAML-6.0.12.20240917.tar.gz", hash = "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587"}, - {file = "types_PyYAML-6.0.12.20240917-py3-none-any.whl", hash = "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570"}, -] - -[[package]] -name = "types-requests" -version = "2.32.0.20241016" -requires_python = ">=3.8" -summary = "Typing stubs for requests" -groups = ["type_check"] -dependencies = [ - "urllib3>=2", -] -files = [ - {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, - {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -requires_python = ">=3.8" -summary = "Backported and Experimental Type Hints for Python 3.8+" -groups = ["default", "type_check"] -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "tzdata" -version = "2024.2" -requires_python = ">=2" -summary = "Provider of IANA time zone data" -groups = ["default", "type_check"] -marker = "sys_platform == \"win32\"" -files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, -] - -[[package]] -name = "urllib3" -version = "2.2.3" -requires_python = ">=3.8" -summary = "HTTP library with thread-safe connection pooling, file post, and more." -groups = ["default", "test", "type_check"] -files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, -] - -[[package]] -name = "uvicorn" -version = "0.32.0" -requires_python = ">=3.8" -summary = "The lightning-fast ASGI server." -groups = ["default"] -dependencies = [ - "click>=7.0", - "h11>=0.8", - "typing-extensions>=4.0; python_version < \"3.11\"", -] -files = [ - {file = "uvicorn-0.32.0-py3-none-any.whl", hash = "sha256:60b8f3a5ac027dcd31448f411ced12b5ef452c646f76f02f8cc3f25d8d26fd82"}, - {file = "uvicorn-0.32.0.tar.gz", hash = "sha256:f78b36b143c16f54ccdb8190d0a26b5f1901fe5a3c777e1ab29f26391af8551e"}, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -requires_python = ">=3.8" -summary = "WebSocket client for Python with low level API options" -groups = ["default"] -files = [ - {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, - {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, -] - -[[package]] -name = "websockets" -version = "13.1" -requires_python = ">=3.8" -summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" groups = ["default"] files = [ {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"}, @@ -1741,71 +531,3 @@ files = [ {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"}, {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"}, ] - -[[package]] -name = "wheel" -version = "0.44.0" -requires_python = ">=3.8" -summary = "A built-package format for Python" -groups = ["default"] -files = [ - {file = "wheel-0.44.0-py3-none-any.whl", hash = "sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f"}, - {file = "wheel-0.44.0.tar.gz", hash = "sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49"}, -] - -[[package]] -name = "xxhash" -version = "3.5.0" -requires_python = ">=3.7" -summary = "Python binding for xxHash" -groups = ["default"] -files = [ - {file = "xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1"}, - {file = "xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28b2fdcee797e1c1961cd3bcd3d545cab22ad202c846235197935e1df2f8ef7"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:924361811732ddad75ff23e90efd9ccfda4f664132feecb90895bade6a1b4623"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89997aa1c4b6a5b1e5b588979d1da048a3c6f15e55c11d117a56b75c84531f5a"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:685c4f4e8c59837de103344eb1c8a3851f670309eb5c361f746805c5471b8c88"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbd2ecfbfee70bc1a4acb7461fa6af7748ec2ab08ac0fa298f281c51518f982c"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25b5a51dc3dfb20a10833c8eee25903fd2e14059e9afcd329c9da20609a307b2"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a8fb786fb754ef6ff8c120cb96629fb518f8eb5a61a16aac3a979a9dbd40a084"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a905ad00ad1e1c34fe4e9d7c1d949ab09c6fa90c919860c1534ff479f40fd12d"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:963be41bcd49f53af6d795f65c0da9b4cc518c0dd9c47145c98f61cb464f4839"}, - {file = "xxhash-3.5.0-cp311-cp311-win32.whl", hash = "sha256:109b436096d0a2dd039c355fa3414160ec4d843dfecc64a14077332a00aeb7da"}, - {file = "xxhash-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:b702f806693201ad6c0a05ddbbe4c8f359626d0b3305f766077d51388a6bac58"}, - {file = "xxhash-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:c4dcb4120d0cc3cc448624147dba64e9021b278c63e34a38789b688fd0da9bf3"}, - {file = "xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f"}, -] - -[[package]] -name = "yarl" -version = "1.16.0" -requires_python = ">=3.9" -summary = "Yet another URL library" -groups = ["default"] -dependencies = [ - "idna>=2.0", - "multidict>=4.0", - "propcache>=0.2.0", -] -files = [ - {file = "yarl-1.16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d8643975a0080f361639787415a038bfc32d29208a4bf6b783ab3075a20b1ef3"}, - {file = "yarl-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:676d96bafc8c2d0039cea0cd3fd44cee7aa88b8185551a2bb93354668e8315c2"}, - {file = "yarl-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9525f03269e64310416dbe6c68d3b23e5d34aaa8f47193a1c45ac568cecbc49"}, - {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b37d5ec034e668b22cf0ce1074d6c21fd2a08b90d11b1b73139b750a8b0dd97"}, - {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f32c4cb7386b41936894685f6e093c8dfaf0960124d91fe0ec29fe439e201d0"}, - {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b8e265a0545637492a7e12fd7038370d66c9375a61d88c5567d0e044ded9202"}, - {file = "yarl-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:789a3423f28a5fff46fbd04e339863c169ece97c827b44de16e1a7a42bc915d2"}, - {file = "yarl-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1d1f45e3e8d37c804dca99ab3cf4ab3ed2e7a62cd82542924b14c0a4f46d243"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:621280719c4c5dad4c1391160a9b88925bb8b0ff6a7d5af3224643024871675f"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ed097b26f18a1f5ff05f661dc36528c5f6735ba4ce8c9645e83b064665131349"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2f1fe2b2e3ee418862f5ebc0c0083c97f6f6625781382f828f6d4e9b614eba9b"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:87dd10bc0618991c66cee0cc65fa74a45f4ecb13bceec3c62d78ad2e42b27a16"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4199db024b58a8abb2cfcedac7b1292c3ad421684571aeb622a02f242280e8d6"}, - {file = "yarl-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:99a9dcd4b71dd5f5f949737ab3f356cfc058c709b4f49833aeffedc2652dac56"}, - {file = "yarl-1.16.0-cp311-cp311-win32.whl", hash = "sha256:a9394c65ae0ed95679717d391c862dece9afacd8fa311683fc8b4362ce8a410c"}, - {file = "yarl-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:5b9101f528ae0f8f65ac9d64dda2bb0627de8a50344b2f582779f32fda747c1d"}, - {file = "yarl-1.16.0-py3-none-any.whl", hash = "sha256:e6980a558d8461230c457218bd6c92dfc1d10205548215c2c21d79dc8d0a96f3"}, - {file = "yarl-1.16.0.tar.gz", hash = "sha256:b6f687ced5510a9a2474bbae96a4352e5ace5fa34dc44a217b0537fec1db00b4"}, -] diff --git a/compute_horde/pyproject.toml b/compute_horde/pyproject.toml index db8c070a8..611d79d5a 100644 --- a/compute_horde/pyproject.toml +++ b/compute_horde/pyproject.toml @@ -14,6 +14,7 @@ dependencies = [ "requests>=2.32.2", "Django~=4.2.4", "cryptography>=42.0.8", + "celery>=5.3.0", ] [build-system] diff --git a/compute_horde/tests/settings.py b/compute_horde/tests/settings.py new file mode 100644 index 000000000..73ed0e065 --- /dev/null +++ b/compute_horde/tests/settings.py @@ -0,0 +1,7 @@ +from compute_horde.settings import * + +BITTENSOR_NETWORK = "local" + +CELERY_TASK_ALWAYS_EAGER = True + +COMPUTE_HORDE_BLOCK_CACHE_KEY = "test-block-cache-key" diff --git a/compute_horde/tests/test_blockchain.py b/compute_horde/tests/test_blockchain.py new file mode 100644 index 000000000..78895c366 --- /dev/null +++ b/compute_horde/tests/test_blockchain.py @@ -0,0 +1,60 @@ +from unittest.mock import MagicMock, patch + +import pytest +from celery import Celery +from django.conf import settings +from django.core.cache import cache + +from compute_horde.blockchain.block_cache import get_current_block +from compute_horde.blockchain.tasks import update_block_cache + + +@pytest.fixture(autouse=True) +def clear_cache(): + cache.clear() + yield + + +@pytest.fixture +def celery(): + app = Celery("test") + app.config_from_object("django.conf:settings", namespace="CELERY") + yield app + app.close() + + +def test_block_cache_get_current_block_in_cache(): + cache.set(settings.COMPUTE_HORDE_BLOCK_CACHE_KEY, 123) + + mock_subtensor = MagicMock() + with patch("bittensor.subtensor", return_value=mock_subtensor): + mock_subtensor.get_current_block.return_value = 123 + + current_block = get_current_block() + + assert current_block == 123 + mock_subtensor.get_current_block.assert_not_called() + + +def test_block_cache_get_current_block_not_in_cache(): + mock_subtensor = MagicMock() + with patch("bittensor.subtensor", return_value=mock_subtensor): + mock_subtensor.get_current_block.return_value = 123 + + current_block = get_current_block() + + assert current_block == 123 + + +def test_tasks_update_block_cache(celery): + mock_subtensor = MagicMock() + with patch("bittensor.subtensor", return_value=mock_subtensor): + mock_subtensor.get_current_block.return_value = 123 + + update_block_cache.delay() + + current_block = get_current_block() + + assert current_block == 123 + + mock_subtensor.get_current_block.assert_called_once() diff --git a/compute_horde/uv.lock b/compute_horde/uv.lock index 3552e3237..7273e89cb 100644 --- a/compute_horde/uv.lock +++ b/compute_horde/uv.lock @@ -56,6 +56,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/ac/a7305707cb852b7e16ff80eaf5692309bde30e2b1100a1fcacdc8f731d97/aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17", size = 7617 }, ] +[[package]] +name = "amqp" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944 }, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -161,6 +173,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4a/45/ec96b29162a402fc4c1c5512d114d7b3787b9d1c2ec241d9568b4816ee23/base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2", size = 5621 }, ] +[[package]] +name = "billiard" +version = "4.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/58/1546c970afcd2a2428b1bfafecf2371d8951cc34b46701bea73f4280989e/billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f", size = 155031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/da/43b15f28fe5f9e027b41c539abc5469052e9d48fd75f8ff094ba2a0ae767/billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb", size = 86766 }, +] + [[package]] name = "bittensor" version = "8.3.1" @@ -281,6 +302,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/01/27/2b6460f1fa1772d23acaac3d4d5b4e311fb5fd7fc034064ddc1b4b374c5d/bt_decode-0.2.0a0-cp311-none-win_amd64.whl", hash = "sha256:bc0229921b993948fc1aacc2c83cae8c343f39d71ab8befa77d94b12ab7183b7", size = 322955 }, ] +[[package]] +name = "celery" +version = "5.5.0rc3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "billiard" }, + { name = "click" }, + { name = "click-didyoumean" }, + { name = "click-plugins" }, + { name = "click-repl" }, + { name = "kombu" }, + { name = "python-dateutil" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/d6/886225ddfc9a0853cecddbb54aa3dd5e36b797774da0c8a11d2f0ec478b1/celery-5.5.0rc3.tar.gz", hash = "sha256:d88850444ac078f561983b1398e8b441814f6c81ab3d150ffbc6da6ba5f561d5", size = 1647499 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/82/5ea73643f5c561d5c2d36c07c49e96c260befe83a7e934e2550ac8b1848a/celery-5.5.0rc3-py3-none-any.whl", hash = "sha256:cfac731332959a20a0e2ddc088dc4cb7f38837c1cea5f50a3417d8bccb95ca14", size = 436111 }, +] + [[package]] name = "certifi" version = "2024.8.30" @@ -349,6 +389,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, ] +[[package]] +name = "click-didyoumean" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631 }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, +] + +[[package]] +name = "click-repl" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9", size = 10449 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289 }, +] + [[package]] name = "codespell" version = "2.3.0" @@ -373,6 +450,7 @@ version = "0.0.18" source = { editable = "." } dependencies = [ { name = "bittensor" }, + { name = "celery" }, { name = "cryptography" }, { name = "django" }, { name = "more-itertools" }, @@ -411,6 +489,7 @@ type-check = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, + { name = "celery", specifier = ">=5.3.0" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, @@ -770,6 +849,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, ] +[[package]] +name = "kombu" +version = "5.5.0rc2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amqp" }, + { name = "tzdata" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/64/cc39be8782edd463a7c6c7c2505fd67d15452d5f1a310981da5c6bdf2275/kombu-5.5.0rc2.tar.gz", hash = "sha256:f581f3b2945a46d5de540a8fde920e87725308cfed6bdeed6983fa4124879cd0", size = 458112 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/9b/8384970b77ec1cd9f106be81a5a2f34da2674df3266c35746720127039fc/kombu-5.5.0rc2-py3-none-any.whl", hash = "sha256:213dc124de2a9dada467aa3387c638d8594e91a9dff2dcf6206cd9c6bcf84a5d", size = 208778 }, +] + [[package]] name = "levenshtein" version = "0.26.1" @@ -1014,6 +1107,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, ] +[[package]] +name = "prompt-toolkit" +version = "3.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/4f/feb5e137aff82f7c7f3248267b97451da3644f6cdc218edfe549fb354127/prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90", size = 424684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/6a/fd08d94654f7e67c52ca30523a178b3f8ccc4237fce4be90d39c938a831a/prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e", size = 386595 }, +] + [[package]] name = "propcache" version = "0.2.0" @@ -1635,6 +1740,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/c1/2d27b0a15826c2b71dcf6e2f5402181ef85acf439617bb2f1453125ce1f3/uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e", size = 63828 }, ] +[[package]] +name = "vine" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + [[package]] name = "websocket-client" version = "1.8.0" diff --git a/executor/uv.lock b/executor/uv.lock index 2805ad499..022c68d14 100644 --- a/executor/uv.lock +++ b/executor/uv.lock @@ -565,6 +565,7 @@ version = "0.0.18" source = { editable = "../compute_horde" } dependencies = [ { name = "bittensor", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "more-itertools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -577,6 +578,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, + { name = "celery", specifier = ">=5.3.0" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/miner/uv.lock b/miner/uv.lock index 10087e5fc..83b368ef6 100644 --- a/miner/uv.lock +++ b/miner/uv.lock @@ -592,6 +592,7 @@ version = "0.0.18" source = { editable = "../compute_horde" } dependencies = [ { name = "bittensor", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "more-itertools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -604,6 +605,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, + { name = "celery", specifier = ">=5.3.0" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/uv.lock b/uv.lock index b706cb206..472409472 100644 --- a/uv.lock +++ b/uv.lock @@ -596,6 +596,7 @@ version = "0.0.18" source = { editable = "compute_horde" } dependencies = [ { name = "bittensor", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "more-itertools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -608,6 +609,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, + { name = "celery", specifier = ">=5.3.0" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/validator/uv.lock b/validator/uv.lock index d2cf49026..d3699b1eb 100644 --- a/validator/uv.lock +++ b/validator/uv.lock @@ -632,6 +632,7 @@ version = "0.0.18" source = { editable = "../compute_horde" } dependencies = [ { name = "bittensor", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "celery", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "cryptography", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "django", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "more-itertools", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -644,6 +645,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, + { name = "celery", specifier = ">=5.3.0" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, From ff1fe08052568ac98524ceec6912177280edb37c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20G=C3=B3rawski?= Date: Mon, 30 Dec 2024 12:35:07 +0100 Subject: [PATCH 36/37] Apply code review feedback --- .../compute_horde/blockchain/block_cache.py | 38 +++++++++++--- compute_horde/pyproject.toml | 2 +- compute_horde/tests/test_blockchain.py | 51 ++++++++++++++----- compute_horde/uv.lock | 16 +++--- executor/uv.lock | 2 +- miner/uv.lock | 2 +- uv.lock | 2 +- validator/uv.lock | 2 +- 8 files changed, 80 insertions(+), 35 deletions(-) diff --git a/compute_horde/compute_horde/blockchain/block_cache.py b/compute_horde/compute_horde/blockchain/block_cache.py index 6ce11e9dc..814e9279e 100644 --- a/compute_horde/compute_horde/blockchain/block_cache.py +++ b/compute_horde/compute_horde/blockchain/block_cache.py @@ -1,4 +1,8 @@ +import asyncio +import functools + import bittensor +from asgiref.sync import async_to_sync from django.conf import settings from django.core.cache import cache @@ -8,22 +12,40 @@ _BLOCK_CACHE_TIMEOUT = getattr(settings, "COMPUTE_HORDE_BLOCK_CACHE_TIMEOUT", 2) -def get_subtensor(network): +class BlockNotInCacheError(KeyError): + pass + + +@functools.cache +def _get_subtensor(network): return bittensor.subtensor(network) -def get_current_block() -> int: +async def aget_current_block(timeout: float = 1.0) -> int: + """ + Gets the current block number from cache. Waits for ``timeout`` seconds if it's not there. + + :param timeout: Number of seconds to wait for the block. Pass 0 to return or raise an exception immediately instead. + :raise BlockNotInCacheError: If block was not found in cache. + """ + # Note: cache.get here is not async. current_block: int = cache.get(_BLOCK_CACHE_KEY) if current_block is not None: return current_block - return cache_current_block() + if timeout <= 0: + raise BlockNotInCacheError(_BLOCK_CACHE_KEY) + await asyncio.sleep(timeout) -def cache_current_block() -> int: - subtensor = get_subtensor(network=settings.BITTENSOR_NETWORK) - current_block: int = subtensor.get_current_block() + return await aget_current_block(timeout=0) - cache.set(_BLOCK_CACHE_KEY, current_block, _BLOCK_CACHE_TIMEOUT) - return current_block +get_current_block = async_to_sync(aget_current_block) + + +def cache_current_block() -> None: + subtensor = _get_subtensor(network=settings.BITTENSOR_NETWORK) + current_block = subtensor.get_current_block() + + cache.set(_BLOCK_CACHE_KEY, current_block, _BLOCK_CACHE_TIMEOUT) diff --git a/compute_horde/pyproject.toml b/compute_horde/pyproject.toml index 611d79d5a..6efaf641c 100644 --- a/compute_horde/pyproject.toml +++ b/compute_horde/pyproject.toml @@ -14,7 +14,7 @@ dependencies = [ "requests>=2.32.2", "Django~=4.2.4", "cryptography>=42.0.8", - "celery>=5.3.0", + "celery<6,>=5.3.0", ] [build-system] diff --git a/compute_horde/tests/test_blockchain.py b/compute_horde/tests/test_blockchain.py index 78895c366..40a75da56 100644 --- a/compute_horde/tests/test_blockchain.py +++ b/compute_horde/tests/test_blockchain.py @@ -1,3 +1,4 @@ +import asyncio from unittest.mock import MagicMock, patch import pytest @@ -5,7 +6,11 @@ from django.conf import settings from django.core.cache import cache -from compute_horde.blockchain.block_cache import get_current_block +from compute_horde.blockchain.block_cache import ( + BlockNotInCacheError, + aget_current_block, + get_current_block, +) from compute_horde.blockchain.tasks import update_block_cache @@ -23,27 +28,45 @@ def celery(): app.close() -def test_block_cache_get_current_block_in_cache(): +@pytest.mark.asyncio +async def test_block_cache_aget_current_block_in_cache(): cache.set(settings.COMPUTE_HORDE_BLOCK_CACHE_KEY, 123) - mock_subtensor = MagicMock() - with patch("bittensor.subtensor", return_value=mock_subtensor): - mock_subtensor.get_current_block.return_value = 123 + current_block = await aget_current_block() - current_block = get_current_block() + assert current_block == 123 - assert current_block == 123 - mock_subtensor.get_current_block.assert_not_called() +@pytest.mark.asyncio +async def test_block_cache_aget_current_block_wait(): + async def populate_after_delay(): + await asyncio.sleep(0.1) + cache.set(settings.COMPUTE_HORDE_BLOCK_CACHE_KEY, 123) -def test_block_cache_get_current_block_not_in_cache(): - mock_subtensor = MagicMock() - with patch("bittensor.subtensor", return_value=mock_subtensor): - mock_subtensor.get_current_block.return_value = 123 + asyncio.create_task(populate_after_delay()) - current_block = get_current_block() + current_block = await aget_current_block() - assert current_block == 123 + assert current_block == 123 + + +@pytest.mark.asyncio +async def test_block_cache_aget_current_block_timeout(): + with pytest.raises(BlockNotInCacheError): + await aget_current_block(timeout=0.01) + + +def test_block_cache_get_current_block_in_cache(): + cache.set(settings.COMPUTE_HORDE_BLOCK_CACHE_KEY, 123) + + current_block = get_current_block() + + assert current_block == 123 + + +def test_block_cache_get_current_block_timeout(): + with pytest.raises(BlockNotInCacheError): + get_current_block() def test_tasks_update_block_cache(celery): diff --git a/compute_horde/uv.lock b/compute_horde/uv.lock index 7273e89cb..4031e2a46 100644 --- a/compute_horde/uv.lock +++ b/compute_horde/uv.lock @@ -304,7 +304,7 @@ wheels = [ [[package]] name = "celery" -version = "5.5.0rc3" +version = "5.3.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "billiard" }, @@ -314,11 +314,12 @@ dependencies = [ { name = "click-repl" }, { name = "kombu" }, { name = "python-dateutil" }, + { name = "tzdata" }, { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/d6/886225ddfc9a0853cecddbb54aa3dd5e36b797774da0c8a11d2f0ec478b1/celery-5.5.0rc3.tar.gz", hash = "sha256:d88850444ac078f561983b1398e8b441814f6c81ab3d150ffbc6da6ba5f561d5", size = 1647499 } +sdist = { url = "https://files.pythonhosted.org/packages/99/72/45a2d2f9b45ccc6e80e2168ce169d17bf06a98711c192d7b53d5a8accf77/celery-5.3.6.tar.gz", hash = "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9", size = 1544498 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/82/5ea73643f5c561d5c2d36c07c49e96c260befe83a7e934e2550ac8b1848a/celery-5.5.0rc3-py3-none-any.whl", hash = "sha256:cfac731332959a20a0e2ddc088dc4cb7f38837c1cea5f50a3417d8bccb95ca14", size = 436111 }, + { url = "https://files.pythonhosted.org/packages/37/c2/4c8a67a4d98a6fcd55dbdd79b641f945d7f59637c3e885c4abbda3c431f6/celery-5.3.6-py3-none-any.whl", hash = "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af", size = 422035 }, ] [[package]] @@ -489,7 +490,7 @@ type-check = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, - { name = "celery", specifier = ">=5.3.0" }, + { name = "celery", specifier = ">=5.3.0,<6" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, @@ -851,16 +852,15 @@ wheels = [ [[package]] name = "kombu" -version = "5.5.0rc2" +version = "5.3.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "amqp" }, - { name = "tzdata" }, { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/64/cc39be8782edd463a7c6c7c2505fd67d15452d5f1a310981da5c6bdf2275/kombu-5.5.0rc2.tar.gz", hash = "sha256:f581f3b2945a46d5de540a8fde920e87725308cfed6bdeed6983fa4124879cd0", size = 458112 } +sdist = { url = "https://files.pythonhosted.org/packages/99/3a/2fb09708fef243e35c286414f2bf78543dc311ae7d3de5d343bd8437e38d/kombu-5.3.7.tar.gz", hash = "sha256:011c4cd9a355c14a1de8d35d257314a1d2456d52b7140388561acac3cf1a97bf", size = 439344 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/9b/8384970b77ec1cd9f106be81a5a2f34da2674df3266c35746720127039fc/kombu-5.5.0rc2-py3-none-any.whl", hash = "sha256:213dc124de2a9dada467aa3387c638d8594e91a9dff2dcf6206cd9c6bcf84a5d", size = 208778 }, + { url = "https://files.pythonhosted.org/packages/b4/9a/1951f2261271d6994f0df5a55b3e9cdad42ed1fc3020a0dc7f6de80a4566/kombu-5.3.7-py3-none-any.whl", hash = "sha256:5634c511926309c7f9789f1433e9ed402616b56836ef9878f01bd59267b4c7a9", size = 200190 }, ] [[package]] diff --git a/executor/uv.lock b/executor/uv.lock index 022c68d14..24a35d4f9 100644 --- a/executor/uv.lock +++ b/executor/uv.lock @@ -578,7 +578,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, - { name = "celery", specifier = ">=5.3.0" }, + { name = "celery", specifier = ">=5.3.0,<6" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/miner/uv.lock b/miner/uv.lock index 83b368ef6..f6c6e27f6 100644 --- a/miner/uv.lock +++ b/miner/uv.lock @@ -605,7 +605,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, - { name = "celery", specifier = ">=5.3.0" }, + { name = "celery", specifier = ">=5.3.0,<6" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/uv.lock b/uv.lock index 472409472..9d0ee211d 100644 --- a/uv.lock +++ b/uv.lock @@ -609,7 +609,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, - { name = "celery", specifier = ">=5.3.0" }, + { name = "celery", specifier = ">=5.3.0,<6" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, diff --git a/validator/uv.lock b/validator/uv.lock index d3699b1eb..725680a98 100644 --- a/validator/uv.lock +++ b/validator/uv.lock @@ -645,7 +645,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "bittensor", specifier = ">=8.3.1,<9.0.0" }, - { name = "celery", specifier = ">=5.3.0" }, + { name = "celery", specifier = ">=5.3.0,<6" }, { name = "cryptography", specifier = ">=42.0.8" }, { name = "django", specifier = "~=4.2.4" }, { name = "more-itertools", specifier = ">=10.2.0" }, From 07112355eb014604cc013d1f09f94dc369448fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20G=C3=B3rawski?= Date: Thu, 2 Jan 2025 11:06:13 +0100 Subject: [PATCH 37/37] Add documentation to README --- compute_horde/README.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/compute_horde/README.md b/compute_horde/README.md index 03a98c51c..4305becf1 100644 --- a/compute_horde/README.md +++ b/compute_horde/README.md @@ -1,6 +1,9 @@ # compute-horde -## Common django models +## Receipts + +### Common django models + This library contains common Django models for the receipts. To use them, update your `INSTALLED_APPS`: ```python @@ -11,8 +14,31 @@ INSTALLED_APPS = [ ] ``` -## Migrations +### Migrations + To make new migrations after doing some changes in the model files, run: ```shell DJANGO_SETTINGS_MODULE=compute_horde.settings uv run django-admin makemigrations ``` + +## Blockchain + +This library contains common logic for interacting with the blockchain (subtensor). + +To use it, update your `INSTALLED_APPS`: +```python +INSTALLED_APPS = [ + ..., + 'compute_horde.blockchain', + ..., +] +``` + +### Block cache + +This is a cheap-to-query store that stores the current block number. + +Usage: + +* Add `compute_horde.blockchain.tasks.update_block_cache` as a Celery Beat task with some reasonable frequency (like 1 or 2 s) +* To get the current block number from cache, use `aget_current_block` (or `get_current_block`).