mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2026-08-24 02:24:23 -05:00
[LABS-244] Remove python 3.9 support (#20099)
* initial changes * poetry fix * Address ruff * Install scripts issues * Experiment a little bit * Okay now try for rocky linux and use 3.12 instead * Remove the now unused thing * Use dnf for consistency * Simplify installations * Still need git * relock poetry with 2.2.0 * relock poetry with 2.2.0 * try `git checkout main poetry.lock && .penv/bin/poetry lock` on altendky's system --------- Co-authored-by: Kyle Altendorf <sda@fstab.net>
This commit is contained in:
co-authored by
Kyle Altendorf
parent
f6d4b7615e
commit
e947dd14c7
@@ -43,7 +43,7 @@ jobs:
|
||||
matrix: arm
|
||||
- name: Intel
|
||||
matrix: intel
|
||||
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
||||
python-version: ["3.10", "3.11", "3.12"]
|
||||
exclude:
|
||||
- os:
|
||||
matrix: windows
|
||||
|
||||
@@ -41,7 +41,6 @@ jobs:
|
||||
- name: Intel
|
||||
matrix: intel
|
||||
python:
|
||||
- major_dot_minor: "3.9"
|
||||
- major_dot_minor: "3.10"
|
||||
- major_dot_minor: "3.11"
|
||||
- major_dot_minor: "3.12"
|
||||
|
||||
@@ -214,7 +214,9 @@ jobs:
|
||||
- name: Prepare Amazon Linux
|
||||
if: ${{ matrix.distribution.type == 'amazon' }}
|
||||
run: |
|
||||
yum install --assumeyes git
|
||||
dnf update -y
|
||||
dnf search python3.12
|
||||
dnf install git python3.12 -y
|
||||
|
||||
- name: Prepare Arch
|
||||
if: ${{ matrix.distribution.type == 'arch' }}
|
||||
@@ -242,7 +244,9 @@ jobs:
|
||||
- name: Prepare Rocky
|
||||
if: ${{ matrix.distribution.type == 'rocky' }}
|
||||
run: |
|
||||
yum install --assumeyes git python39
|
||||
dnf update -y
|
||||
dnf search python3.12
|
||||
dnf install git python3.12 -y
|
||||
|
||||
- name: Prepare Ubuntu
|
||||
if: ${{ matrix.distribution.type == 'ubuntu' }}
|
||||
@@ -251,7 +255,7 @@ jobs:
|
||||
run: |
|
||||
apt-get --yes update
|
||||
apt-get install --yes git lsb-release
|
||||
MINIMUM=3.9
|
||||
MINIMUM=3.10
|
||||
if ! apt-get satisfy --yes "python3-venv (>= ${MINIMUM})"
|
||||
then
|
||||
apt-get install --yes python${MINIMUM}-venv
|
||||
|
||||
@@ -70,15 +70,6 @@ jobs:
|
||||
- matrix: ${{ inputs.arch }}
|
||||
emoji: ${{ inputs.arch-emoji }}
|
||||
python:
|
||||
- name: "3.9"
|
||||
file_name: "3.9"
|
||||
action: "3.9"
|
||||
apt: "3.9"
|
||||
install_sh: "3.9"
|
||||
matrix: "3.9"
|
||||
exclude_from:
|
||||
limited: True
|
||||
main: True
|
||||
- name: "3.10"
|
||||
file_name: "3.10"
|
||||
action: "3.10"
|
||||
|
||||
@@ -59,7 +59,6 @@ jobs:
|
||||
emoji: 🌀
|
||||
matrix: intel
|
||||
python:
|
||||
- major_dot_minor: "3.9"
|
||||
- major_dot_minor: "3.10"
|
||||
- major_dot_minor: "3.11"
|
||||
- major_dot_minor: "3.12"
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ if ($null -eq (Get-Command py -ErrorAction SilentlyContinue))
|
||||
Exit 1
|
||||
}
|
||||
|
||||
$supportedPythonVersions = "3.12", "3.11", "3.10", "3.9"
|
||||
$supportedPythonVersions = "3.12", "3.11", "3.10"
|
||||
if ("$env:INSTALL_PYTHON_VERSION" -ne "")
|
||||
{
|
||||
$pythonVersion = $env:INSTALL_PYTHON_VERSION
|
||||
|
||||
@@ -20,7 +20,7 @@ Chia is a modern cryptocurrency built from scratch, designed to be efficient, de
|
||||
|
||||
Please check out the [Chia website][link-chia], the [Intro to Chia][link-intro], and [FAQ][link-faq] for information on this project.
|
||||
|
||||
Python 3.9+ is required. Make sure your default python version is >=3.9 by typing `python3`.
|
||||
Python 3.10+ is required. Make sure your default python version is >=3.10 by typing `python3`.
|
||||
|
||||
If you are behind a NAT, it can be difficult for peers outside your subnet to reach you when they start up. You can enable [UPnP][link-upnp]
|
||||
on your router or add a NAT (for IPv4 but not IPv6) and firewall rules to allow TCP port 8444 access to your peer.
|
||||
|
||||
@@ -114,7 +114,7 @@ async def test_successfully_dispatches(
|
||||
assert by_name["macos-intel"]["conclusion"] == "skipped"
|
||||
assert by_name["windows"]["conclusion"] == "skipped"
|
||||
|
||||
versions = ["3.9", "3.10", "3.11", "3.12"]
|
||||
versions = ["3.10", "3.11", "3.12"]
|
||||
runs_by_name: dict[str, list[str]] = {name: [] for name in ["ubuntu", "macos-arm"]}
|
||||
for name in by_name:
|
||||
platform, _, rest = name.partition(" / ")
|
||||
|
||||
@@ -381,7 +381,7 @@ def sane(requests: list[Request]) -> bool:
|
||||
return False
|
||||
|
||||
ordered = sorted(requests)
|
||||
return all(a.before(b) for a, b in zip(ordered, ordered[1:]))
|
||||
return all(a.before(b) for a, b in itertools.pairwise(ordered))
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -5,7 +5,6 @@ import collections
|
||||
import dataclasses
|
||||
import inspect
|
||||
import pathlib
|
||||
import sys
|
||||
from dataclasses import MISSING, dataclass, field, fields
|
||||
from typing import (
|
||||
Any,
|
||||
@@ -45,12 +44,6 @@ ChiaCommand = Union[SyncChiaCommand, AsyncChiaCommand]
|
||||
|
||||
|
||||
def option(*param_decls: str, **kwargs: Any) -> Any:
|
||||
if sys.version_info >= (3, 10):
|
||||
default_default = MISSING
|
||||
else: # versions < 3.10 don't know about kw_only and they complain about lacks of defaults
|
||||
# Can't get coverage on this because we only test on one version
|
||||
default_default = None # pragma: no cover
|
||||
|
||||
return field(
|
||||
metadata=dict(
|
||||
option_args=dict(
|
||||
@@ -58,7 +51,7 @@ def option(*param_decls: str, **kwargs: Any) -> Any:
|
||||
**kwargs,
|
||||
),
|
||||
),
|
||||
default=kwargs.get("default", default_default),
|
||||
default=kwargs.get("default", MISSING),
|
||||
)
|
||||
|
||||
|
||||
@@ -270,16 +263,10 @@ def chia_command(
|
||||
def _chia_command(cls: type[ChiaCommand]) -> type[ChiaCommand]:
|
||||
# The type ignores here are largely due to the fact that the class information is not preserved after being
|
||||
# passed through the dataclass wrapper. Not sure what to do about this right now.
|
||||
if sys.version_info >= (3, 10):
|
||||
wrapped_cls: type[ChiaCommand] = dataclass(
|
||||
frozen=True,
|
||||
kw_only=True,
|
||||
)(cls)
|
||||
else: # pragma: no cover
|
||||
# stuff below 3.10 doesn't know about kw_only
|
||||
wrapped_cls: type[ChiaCommand] = dataclass(
|
||||
frozen=True,
|
||||
)(cls)
|
||||
|
||||
metadata = Metadata(
|
||||
command=click.command(
|
||||
@@ -316,9 +303,6 @@ def get_chia_command_metadata(cls: type[ChiaCommand]) -> Metadata:
|
||||
|
||||
@dataclass_transform(frozen_default=True)
|
||||
def command_helper(cls: type[Any]) -> type[Any]:
|
||||
if sys.version_info >= (3, 10):
|
||||
new_cls = dataclass(frozen=True, kw_only=True)(cls)
|
||||
else: # stuff below 3.10 doesn't support kw_only
|
||||
new_cls = dataclass(frozen=True)(cls) # pragma: no cover
|
||||
setattr(new_cls, COMMAND_HELPER_ATTRIBUTE_NAME, True)
|
||||
return new_cls
|
||||
|
||||
@@ -1472,9 +1472,7 @@ def parse_timelock_info(conditions: Iterable[Condition]) -> ConditionValidTimes:
|
||||
elif isinstance(condition, Timelock):
|
||||
timelock = condition
|
||||
else:
|
||||
# Something about python 3.9 makes this be not covered but on 3.10+ it is covered
|
||||
# https://github.com/nedbat/coveragepy/issues/1530
|
||||
continue # pragma: no cover
|
||||
continue
|
||||
|
||||
properties_left = properties.copy()
|
||||
min_not_max: bool = True
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any, BinaryIO, Optional, final
|
||||
|
||||
from chia_rs import Coin, G1Element, G2Element, PrivateKey
|
||||
from chia_rs.sized_bytes import bytes32
|
||||
from chia_rs.sized_ints import uint8, uint16, uint32, uint64
|
||||
from typing_extensions import Self, dataclass_transform
|
||||
from typing_extensions import Self
|
||||
|
||||
from chia.data_layer.data_layer_wallet import Mirror
|
||||
from chia.data_layer.singleton_record import SingletonRecord
|
||||
@@ -40,14 +39,6 @@ from chia.wallet.wallet_node import Balance
|
||||
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
||||
|
||||
|
||||
@dataclass_transform(frozen_default=True, kw_only_default=True)
|
||||
def kw_only_dataclass(cls: type[Any]) -> type[Any]:
|
||||
if sys.version_info >= (3, 10):
|
||||
return dataclass(frozen=True, kw_only=True)(cls)
|
||||
else:
|
||||
return dataclass(frozen=True)(cls) # pragma: no cover
|
||||
|
||||
|
||||
def default_raise() -> Any: # pragma: no cover
|
||||
raise RuntimeError("This should be impossible to hit and is just for < 3.10 compatibility")
|
||||
|
||||
@@ -241,7 +232,7 @@ class GetWalletBalances(Streamable):
|
||||
|
||||
# utility for GetWalletBalanceResponse(s)
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class BalanceResponse(Balance):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
wallet_type: uint8 = field(default_factory=default_raise)
|
||||
@@ -1236,7 +1227,7 @@ class ExecuteSigningInstructionsResponse(Streamable):
|
||||
# field(default_factory=default_raise)
|
||||
# (this is for < 3.10 compatibility)
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class TransactionEndpointRequest(Streamable):
|
||||
fee: uint64 = uint64(0)
|
||||
push: Optional[bool] = None
|
||||
@@ -1357,7 +1348,7 @@ class PushTransactionsResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class SplitCoins(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
number_of_coins: uint16 = field(default_factory=default_raise)
|
||||
@@ -1372,7 +1363,7 @@ class SplitCoinsResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class CombineCoins(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
number_of_coins: uint16 = uint16(500)
|
||||
@@ -1389,7 +1380,7 @@ class CombineCoinsResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DIDMessageSpend(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
coin_announcements: list[bytes] = field(default_factory=list)
|
||||
@@ -1403,7 +1394,7 @@ class DIDMessageSpendResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DIDUpdateMetadata(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
metadata: dict[str, str] = field(default_factory=dict)
|
||||
@@ -1417,7 +1408,7 @@ class DIDUpdateMetadataResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DIDTransferDID(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
inner_address: str = field(default_factory=default_raise)
|
||||
@@ -1437,7 +1428,7 @@ class DIDTransferDIDResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class NFTMintNFTRequest(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
royalty_address: Optional[str] = field(default_factory=default_raise)
|
||||
@@ -1463,7 +1454,7 @@ class NFTMintNFTResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class NFTSetNFTDID(TransactionEndpointRequest):
|
||||
wallet_id: uint32 = field(default_factory=default_raise)
|
||||
nft_coin_id: bytes32 = field(default_factory=default_raise)
|
||||
@@ -1478,7 +1469,7 @@ class NFTSetNFTDIDResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class NFTSetDIDBulk(TransactionEndpointRequest):
|
||||
nft_coin_list: list[NFTCoin] = field(default_factory=default_raise)
|
||||
did_id: Optional[str] = None
|
||||
@@ -1493,7 +1484,7 @@ class NFTSetDIDBulkResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class NFTTransferBulk(TransactionEndpointRequest):
|
||||
nft_coin_list: list[NFTCoin] = field(default_factory=default_raise)
|
||||
target_address: str = field(default_factory=default_raise)
|
||||
@@ -1508,7 +1499,7 @@ class NFTTransferBulkResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class CreateNewDL(TransactionEndpointRequest):
|
||||
root: bytes32 = field(default_factory=default_raise)
|
||||
|
||||
@@ -1520,7 +1511,7 @@ class CreateNewDLResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DLUpdateRoot(TransactionEndpointRequest):
|
||||
launcher_id: bytes32 = field(default_factory=default_raise)
|
||||
new_root: bytes32 = field(default_factory=default_raise)
|
||||
@@ -1564,7 +1555,7 @@ class DLUpdateMultipleUpdates(Streamable):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DLUpdateMultiple(TransactionEndpointRequest):
|
||||
updates: DLUpdateMultipleUpdates = field(default_factory=default_raise)
|
||||
|
||||
@@ -1580,7 +1571,7 @@ class DLUpdateMultipleResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DLNewMirror(TransactionEndpointRequest):
|
||||
launcher_id: bytes32 = field(default_factory=default_raise)
|
||||
amount: uint64 = field(default_factory=default_raise)
|
||||
@@ -1594,7 +1585,7 @@ class DLNewMirrorResponse(TransactionEndpointResponse):
|
||||
|
||||
|
||||
@streamable
|
||||
@kw_only_dataclass
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class DLDeleteMirror(TransactionEndpointRequest):
|
||||
coin_id: bytes32 = field(default_factory=default_raise)
|
||||
|
||||
|
||||
+3
-3
@@ -59,7 +59,7 @@ if [ "$(uname -m)" = "armv7l" ]; then
|
||||
fi
|
||||
|
||||
# You can specify preferred python version by exporting `INSTALL_PYTHON_VERSION`
|
||||
# e.g. `export INSTALL_PYTHON_VERSION=3.9`
|
||||
# e.g. `export INSTALL_PYTHON_VERSION=3.10`
|
||||
INSTALL_PYTHON_PATH=
|
||||
PYTHON_MAJOR_VER=
|
||||
PYTHON_MINOR_VER=
|
||||
@@ -72,7 +72,7 @@ OPENSSL_VERSION_INT=
|
||||
find_python() {
|
||||
set +e
|
||||
unset BEST_VERSION
|
||||
for V in 312 3.12 311 3.11 310 3.10 39 3.9 3; do
|
||||
for V in 312 3.12 311 3.11 310 3.10 3; do
|
||||
if command -v python$V >/dev/null; then
|
||||
if [ "$BEST_VERSION" = "" ]; then
|
||||
BEST_VERSION=$V
|
||||
@@ -136,7 +136,7 @@ if ! command -v "$INSTALL_PYTHON_PATH" >/dev/null; then
|
||||
fi
|
||||
|
||||
if [ "$PYTHON_MAJOR_VER" -ne "3" ] || [ "$PYTHON_MINOR_VER" -lt "7" ] || [ "$PYTHON_MINOR_VER" -ge "13" ]; then
|
||||
echo "Chia requires Python version >= 3.9 and < 3.13.0" >&2
|
||||
echo "Chia requires Python version >= 3.10 and < 3.13.0" >&2
|
||||
echo "Current Python version = $INSTALL_PYTHON_VERSION" >&2
|
||||
# If Arch, direct to Arch Wiki
|
||||
if type pacman >/dev/null 2>&1 && [ -f "/etc/arch-release" ]; then
|
||||
|
||||
+9
-77
@@ -286,7 +286,7 @@ description = "Timeout context manager for asyncio programs"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
markers = "python_version < \"3.11\""
|
||||
markers = "python_version == \"3.10\""
|
||||
files = [
|
||||
{file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"},
|
||||
{file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"},
|
||||
@@ -538,10 +538,7 @@ files = [
|
||||
[package.dependencies]
|
||||
jmespath = ">=0.7.1,<2.0.0"
|
||||
python-dateutil = ">=2.1,<3.0.0"
|
||||
urllib3 = [
|
||||
{version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""},
|
||||
{version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""},
|
||||
]
|
||||
urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}
|
||||
|
||||
[package.extras]
|
||||
crt = ["awscrt (==0.27.6)"]
|
||||
@@ -1395,7 +1392,7 @@ description = "Backport of PEP 654 (exception groups)"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
markers = "python_version < \"3.11\""
|
||||
markers = "python_version == \"3.10\""
|
||||
files = [
|
||||
{file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"},
|
||||
{file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"},
|
||||
@@ -1639,9 +1636,6 @@ files = [
|
||||
{file = "importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
|
||||
cover = ["pytest-cov"]
|
||||
@@ -1979,7 +1973,7 @@ description = "Mach-O header analysis and editing"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
markers = "extra == \"dev\" and sys_platform == \"darwin\" and python_version <= \"3.12\""
|
||||
markers = "extra == \"dev\" and python_version <= \"3.12\" and sys_platform == \"darwin\""
|
||||
files = [
|
||||
{file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"},
|
||||
{file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"},
|
||||
@@ -2343,26 +2337,6 @@ files = [
|
||||
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "networkx"
|
||||
version = "3.2.1"
|
||||
description = "Python package for creating and manipulating graphs and networks"
|
||||
optional = true
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
markers = "python_version < \"3.10\" and extra == \"dev\""
|
||||
files = [
|
||||
{file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"},
|
||||
{file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"]
|
||||
developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"]
|
||||
doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"]
|
||||
extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"]
|
||||
test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "networkx"
|
||||
version = "3.4.2"
|
||||
@@ -2370,7 +2344,7 @@ description = "Python package for creating and manipulating graphs and networks"
|
||||
optional = true
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
markers = "python_version >= \"3.10\" and extra == \"dev\" and python_version < \"3.12\""
|
||||
markers = "python_version < \"3.12\" and extra == \"dev\""
|
||||
files = [
|
||||
{file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"},
|
||||
{file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"},
|
||||
@@ -2451,7 +2425,7 @@ description = "Python PE parsing module"
|
||||
optional = true
|
||||
python-versions = ">=3.6.0"
|
||||
groups = ["main"]
|
||||
markers = "extra == \"dev\" and sys_platform == \"win32\" and python_version <= \"3.12\""
|
||||
markers = "extra == \"dev\" and python_version <= \"3.12\" and sys_platform == \"win32\""
|
||||
files = [
|
||||
{file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"},
|
||||
{file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"},
|
||||
@@ -2806,7 +2780,6 @@ files = [
|
||||
|
||||
[package.dependencies]
|
||||
altgraph = "*"
|
||||
importlib_metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
|
||||
macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""}
|
||||
packaging = ">=22.0"
|
||||
pefile = {version = ">=2022.5.30,<2024.8.26 || >2024.8.26", markers = "sys_platform == \"win32\""}
|
||||
@@ -2832,7 +2805,6 @@ files = [
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
importlib_metadata = {version = ">=4.6", markers = "python_version < \"3.10\""}
|
||||
packaging = ">=22.0"
|
||||
setuptools = ">=42.0.0"
|
||||
|
||||
@@ -3397,26 +3369,6 @@ files = [
|
||||
{file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdlib-list"
|
||||
version = "0.11.1"
|
||||
description = "A list of Python Standard Libraries (2.7 through 3.13)."
|
||||
optional = true
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
markers = "extra == \"dev\" and python_version < \"3.10\""
|
||||
files = [
|
||||
{file = "stdlib_list-0.11.1-py3-none-any.whl", hash = "sha256:9029ea5e3dfde8cd4294cfd4d1797be56a67fc4693c606181730148c3fd1da29"},
|
||||
{file = "stdlib_list-0.11.1.tar.gz", hash = "sha256:95ebd1d73da9333bba03ccc097f5bac05e3aa03e6822a0c0290f87e1047f1857"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
dev = ["build", "stdlib-list[doc,lint,test]"]
|
||||
doc = ["furo", "sphinx"]
|
||||
lint = ["mypy", "ruff"]
|
||||
support = ["sphobjinv"]
|
||||
test = ["coverage[toml]", "pytest", "pytest-cov"]
|
||||
|
||||
[[package]]
|
||||
name = "tach"
|
||||
version = "0.29.0"
|
||||
@@ -3446,7 +3398,6 @@ prompt-toolkit = ">=3.0,<4.0"
|
||||
pydot = ">=2,<4"
|
||||
pyyaml = ">=6.0,<7.0"
|
||||
rich = ">=13.0,<14.0"
|
||||
stdlib-list = {version = ">=0.10.0", markers = "python_full_version < \"3.10.0\""}
|
||||
tomli = ">=1.2.2"
|
||||
tomli-w = ">=1.0,<2.0"
|
||||
|
||||
@@ -3460,7 +3411,7 @@ description = "A lil' TOML parser"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
markers = "extra == \"dev\" or python_version < \"3.11\""
|
||||
markers = "extra == \"dev\" or python_version == \"3.10\""
|
||||
files = [
|
||||
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
||||
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
|
||||
@@ -3543,24 +3494,6 @@ files = [
|
||||
{file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "1.26.19"
|
||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
|
||||
groups = ["main"]
|
||||
markers = "python_version < \"3.10\""
|
||||
files = [
|
||||
{file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"},
|
||||
{file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""]
|
||||
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
|
||||
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.2.2"
|
||||
@@ -3568,7 +3501,6 @@ description = "HTTP library with thread-safe connection pooling, file post, and
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
markers = "python_version >= \"3.10\""
|
||||
files = [
|
||||
{file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
|
||||
{file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
|
||||
@@ -3958,5 +3890,5 @@ upnp = ["miniupnpc"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = ">=3.9, <4, !=3.9.0, !=3.9.1"
|
||||
content-hash = "650f0c98ff03cf897ee793ebb1e26bee8ae7b3c99bab5295fee7736bc19e346f"
|
||||
python-versions = ">=3.10, <4"
|
||||
content-hash = "ba6edf6f808031df930df35a9a40c46896e9a78aab96b896e1fc4150cf7a59f4"
|
||||
|
||||
+3
-4
@@ -2,8 +2,7 @@
|
||||
name = "chia-blockchain"
|
||||
dynamic = [ "dependencies", "version" ]
|
||||
description = "Chia blockchain full node, farmer, timelord, and wallet."
|
||||
# banning 3.9.0 and 3.9.1 for simplicity aligning with https://github.com/pyca/cryptography/pull/12045
|
||||
requires-python = ">=3.9, <4, !=3.9.0, !=3.9.1"
|
||||
requires-python = ">=3.10, <4"
|
||||
authors = [
|
||||
{name="Mariano Sorgente", email="mariano@chia.net"}
|
||||
]
|
||||
@@ -107,8 +106,8 @@ lxml = { version = ">=5.2.2", optional = true }
|
||||
miniupnpc = {version = ">=2.3.2, <3", source = "chia", optional = true}
|
||||
# big-o = {version = "0.11.0", optional = true}
|
||||
# numpy = [
|
||||
# {version="<=1.24.4", python = "<3.9", optional = true},
|
||||
# {version=">=1.26.4", python = ">=3.9", optional = true}]
|
||||
# {version="<=1.24.4", python = "<3.10", optional = true},
|
||||
# {version=">=1.26.4", python = ">=3.10", optional = true}]
|
||||
ruff = { version = ">=0.8.1", optional = true }
|
||||
|
||||
[project.optional-dependencies]
|
||||
|
||||
Reference in New Issue
Block a user