python3Packages.pympler: disable bad 3.14 tests; python3Packages.limits: 1.3.0 -> 1.5.0 (#483733)
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
{
|
||||
lib,
|
||||
aetcd,
|
||||
buildPythonPackage,
|
||||
coredis,
|
||||
deprecated,
|
||||
etcd3,
|
||||
fetchFromGitHub,
|
||||
flaky,
|
||||
hatchling,
|
||||
hatch-vcs,
|
||||
hiro,
|
||||
importlib-resources,
|
||||
motor,
|
||||
@@ -18,47 +18,35 @@
|
||||
pytest-cov-stub,
|
||||
pytest-lazy-fixtures,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
redis,
|
||||
setuptools,
|
||||
typing-extensions,
|
||||
valkey,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "limits";
|
||||
version = "5.4.0";
|
||||
version = "5.6.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alisaifee";
|
||||
repo = "limits";
|
||||
tag = version;
|
||||
# Upstream uses versioneer, which relies on git attributes substitution.
|
||||
# This leads to non-reproducible archives on github. Remove the substituted
|
||||
# file here, and recreate it later based on our version info.
|
||||
hash = "sha256-EHLqkd5Muazr52/oYaLklFVvF+AzJWGbFaaIG+T0ulE=";
|
||||
hash = "sha256-JmxoFc+AWV4qLgexpAysMGRKx2Q6K6AqNoaGkWU28Ro=";
|
||||
postFetch = ''
|
||||
rm "$out/limits/_version.py"
|
||||
rm "$out/limits/_version.pyi"
|
||||
'';
|
||||
};
|
||||
|
||||
patches = [
|
||||
./only-test-in-memory.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pytest.ini \
|
||||
--replace-fail "-K" ""
|
||||
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail "versioneer.get_version()" "'${version}'"
|
||||
|
||||
# Recreate _version.py, deleted at fetch time due to non-reproducibility.
|
||||
echo 'def get_versions(): return {"version": "${version}"}' > limits/_version.py
|
||||
'';
|
||||
|
||||
build-system = [ setuptools ];
|
||||
build-system = [
|
||||
hatchling
|
||||
hatch-vcs
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
deprecated
|
||||
@@ -68,17 +56,14 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
redis = [ redis ];
|
||||
rediscluster = [ redis ];
|
||||
async-memcached = [ pymemcache ];
|
||||
async-mongodb = [ motor ];
|
||||
async-redis = [ coredis ];
|
||||
async-valkey = [ valkey ];
|
||||
memcached = [ pymemcache ];
|
||||
mongodb = [ pymongo ];
|
||||
etcd = [ etcd3 ];
|
||||
async-redis = [ coredis ];
|
||||
# async-memcached = [
|
||||
# emcache # Missing module
|
||||
# ];
|
||||
async-mongodb = [ motor ];
|
||||
async-etcd = [ aetcd ];
|
||||
redis = [ redis ];
|
||||
rediscluster = [ redis ];
|
||||
valkey = [ valkey ];
|
||||
};
|
||||
|
||||
@@ -102,9 +87,17 @@ buildPythonPackage rec {
|
||||
pytestFlags = [ "--benchmark-disable" ];
|
||||
|
||||
disabledTests = [
|
||||
"test_moving_window_memcached"
|
||||
# Flaky: compares time to magic value
|
||||
"test_sliding_window_counter_previous_window"
|
||||
# requires docker
|
||||
"TestAsyncConcurrency"
|
||||
"TestAsyncFixedWindow"
|
||||
"TestAsyncMovingWindow"
|
||||
"TestAsyncSlidingWindow"
|
||||
"TestConcreteStorages"
|
||||
"TestConcurrency"
|
||||
"TestFixedWindow"
|
||||
"TestMovingWindow"
|
||||
"TestRedisStorage"
|
||||
"TestSlidingWindow"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "limits" ];
|
||||
|
||||
@@ -1,397 +0,0 @@
|
||||
diff --git a/tests/aio/test_storage.py b/tests/aio/test_storage.py
|
||||
index 43fc5b1..9aa86ed 100644
|
||||
--- a/tests/aio/test_storage.py
|
||||
+++ b/tests/aio/test_storage.py
|
||||
@@ -153,94 +153,6 @@ class TestBaseStorage:
|
||||
marks=pytest.mark.memory,
|
||||
id="in-memory",
|
||||
),
|
||||
- pytest.param(
|
||||
- "async+redis://localhost:7379",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_basic"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+unix:///tmp/limits.redis.sock",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_uds"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis-uds",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+unix://:password/tmp/limits.redis.sock",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_uds"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis-uds-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+memcached://localhost:22122",
|
||||
- {},
|
||||
- MemcachedStorage,
|
||||
- lf("memcached"),
|
||||
- marks=pytest.mark.memcached,
|
||||
- id="memcached",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+memcached://localhost:22122,localhost:22123",
|
||||
- {},
|
||||
- MemcachedStorage,
|
||||
- lf("memcached_cluster"),
|
||||
- marks=pytest.mark.memcached,
|
||||
- id="memcached-cluster",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+sentinel://localhost:26379",
|
||||
- {"service_name": "mymaster"},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+sentinel://localhost:26379/mymaster",
|
||||
- {},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel-service-name-url",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+sentinel://:sekret@localhost:36379/mymaster",
|
||||
- {"password": "sekret"},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel_auth"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+cluster://localhost:7001/",
|
||||
- {},
|
||||
- RedisClusterStorage,
|
||||
- lf("redis_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+redis+cluster://:sekret@localhost:8400/",
|
||||
- {},
|
||||
- RedisClusterStorage,
|
||||
- lf("redis_auth_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "async+mongodb://localhost:37017/",
|
||||
- {},
|
||||
- MongoDBStorage,
|
||||
- lf("mongodb"),
|
||||
- marks=pytest.mark.mongodb,
|
||||
- id="mongodb",
|
||||
- ),
|
||||
],
|
||||
)
|
||||
class TestConcreteStorages:
|
||||
diff --git a/tests/test_storage.py b/tests/test_storage.py
|
||||
index f9698c0..2062e3a 100644
|
||||
--- a/tests/test_storage.py
|
||||
+++ b/tests/test_storage.py
|
||||
@@ -148,102 +148,6 @@ class TestBaseStorage:
|
||||
"uri, args, expected_instance, fixture",
|
||||
[
|
||||
pytest.param("memory://", {}, MemoryStorage, None, id="in-memory"),
|
||||
- pytest.param(
|
||||
- "redis://localhost:7379",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_basic"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+unix:///tmp/limits.redis.sock",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_uds"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis-uds",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+unix://:password/tmp/limits.redis.sock",
|
||||
- {},
|
||||
- RedisStorage,
|
||||
- lf("redis_uds"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis-uds-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "memcached://localhost:22122",
|
||||
- {},
|
||||
- MemcachedStorage,
|
||||
- lf("memcached"),
|
||||
- marks=pytest.mark.memcached,
|
||||
- id="memcached",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "memcached://localhost:22122,localhost:22123",
|
||||
- {},
|
||||
- MemcachedStorage,
|
||||
- lf("memcached_cluster"),
|
||||
- marks=pytest.mark.memcached,
|
||||
- id="memcached-cluster",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "memcached:///tmp/limits.memcached.sock",
|
||||
- {},
|
||||
- MemcachedStorage,
|
||||
- lf("memcached_uds"),
|
||||
- marks=pytest.mark.memcached,
|
||||
- id="memcached-uds",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+sentinel://localhost:26379",
|
||||
- {"service_name": "mymaster"},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+sentinel://localhost:26379/mymaster",
|
||||
- {},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel-service-name-url",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+sentinel://:sekret@localhost:36379/mymaster",
|
||||
- {"password": "sekret"},
|
||||
- RedisSentinelStorage,
|
||||
- lf("redis_sentinel_auth"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+cluster://localhost:7001/",
|
||||
- {},
|
||||
- RedisClusterStorage,
|
||||
- lf("redis_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "redis+cluster://:sekret@localhost:8400/",
|
||||
- {},
|
||||
- RedisClusterStorage,
|
||||
- lf("redis_auth_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster-auth",
|
||||
- ),
|
||||
- pytest.param(
|
||||
- "mongodb://localhost:37017/",
|
||||
- {},
|
||||
- MongoDBStorage,
|
||||
- lf("mongodb"),
|
||||
- marks=pytest.mark.mongodb,
|
||||
- id="mongodb",
|
||||
- ),
|
||||
],
|
||||
)
|
||||
class TestConcreteStorages:
|
||||
diff --git a/tests/utils.py b/tests/utils.py
|
||||
index 3341bcf..6dc2bc3 100644
|
||||
--- a/tests/utils.py
|
||||
+++ b/tests/utils.py
|
||||
@@ -90,186 +90,11 @@ ALL_STORAGES = {
|
||||
"memory": pytest.param(
|
||||
"memory://", {}, None, marks=pytest.mark.memory, id="in-memory"
|
||||
),
|
||||
- "redis": pytest.param(
|
||||
- "redis://localhost:7379",
|
||||
- {},
|
||||
- lf("redis_basic"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis_basic",
|
||||
- ),
|
||||
- "memcached": pytest.param(
|
||||
- "memcached://localhost:22122",
|
||||
- {},
|
||||
- lf("memcached"),
|
||||
- marks=[pytest.mark.memcached, pytest.mark.flaky],
|
||||
- id="memcached",
|
||||
- ),
|
||||
- "memcached-cluster": pytest.param(
|
||||
- "memcached://localhost:22122,localhost:22123",
|
||||
- {},
|
||||
- lf("memcached_cluster"),
|
||||
- marks=[pytest.mark.memcached, pytest.mark.flaky],
|
||||
- id="memcached-cluster",
|
||||
- ),
|
||||
- "redis-cluster": pytest.param(
|
||||
- "redis+cluster://localhost:7001/",
|
||||
- {},
|
||||
- lf("redis_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster",
|
||||
- ),
|
||||
- "redis-cluster_auth": pytest.param(
|
||||
- "redis+cluster://:sekret@localhost:8400/",
|
||||
- {},
|
||||
- lf("redis_auth_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster-auth",
|
||||
- ),
|
||||
- "redis-ssl-cluster": pytest.param(
|
||||
- "redis+cluster://localhost:8301",
|
||||
- {
|
||||
- "ssl": True,
|
||||
- "ssl_cert_reqs": "required",
|
||||
- "ssl_keyfile": "./tests/tls/client.key",
|
||||
- "ssl_certfile": "./tests/tls/client.crt",
|
||||
- "ssl_ca_certs": "./tests/tls/ca.crt",
|
||||
- },
|
||||
- lf("redis_ssl_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-ssl-cluster",
|
||||
- ),
|
||||
- "redis-sentinel": pytest.param(
|
||||
- "redis+sentinel://localhost:26379/mymaster",
|
||||
- {"use_replicas": False},
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel",
|
||||
- ),
|
||||
- "mongodb": pytest.param(
|
||||
- "mongodb://localhost:37017/",
|
||||
- {},
|
||||
- lf("mongodb"),
|
||||
- marks=pytest.mark.mongodb,
|
||||
- id="mongodb",
|
||||
- ),
|
||||
- "valkey": pytest.param(
|
||||
- "valkey://localhost:12379",
|
||||
- {},
|
||||
- lf("valkey_basic"),
|
||||
- marks=pytest.mark.valkey,
|
||||
- id="valkey_basic",
|
||||
- ),
|
||||
- "valkey-cluster": pytest.param(
|
||||
- "valkey+cluster://localhost:2001/",
|
||||
- {},
|
||||
- lf("valkey_cluster"),
|
||||
- marks=pytest.mark.valkey_cluster,
|
||||
- id="valkey-cluster",
|
||||
- ),
|
||||
}
|
||||
ALL_STORAGES_ASYNC = {
|
||||
"memory": pytest.param(
|
||||
"async+memory://", {}, None, marks=pytest.mark.memory, id="in-memory"
|
||||
),
|
||||
- "redis": pytest.param(
|
||||
- "async+redis://localhost:7379",
|
||||
- {
|
||||
- "implementation": ASYNC_REDIS_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("redis_basic"),
|
||||
- marks=pytest.mark.redis,
|
||||
- id="redis",
|
||||
- ),
|
||||
- "memcached": pytest.param(
|
||||
- "async+memcached://localhost:22122",
|
||||
- {
|
||||
- "implementation": ASYNC_MEMCACHED_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("memcached"),
|
||||
- marks=[pytest.mark.memcached, pytest.mark.flaky],
|
||||
- id="memcached",
|
||||
- ),
|
||||
- "memcached-cluster": pytest.param(
|
||||
- "async+memcached://localhost:22122,localhost:22123",
|
||||
- {
|
||||
- "implementation": ASYNC_MEMCACHED_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("memcached_cluster"),
|
||||
- marks=[pytest.mark.memcached, pytest.mark.flaky],
|
||||
- id="memcached-cluster",
|
||||
- ),
|
||||
- "memcached-sasl": pytest.param(
|
||||
- "async+memcached://user:password@localhost:22124",
|
||||
- {
|
||||
- "implementation": ASYNC_MEMCACHED_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("memcached_sasl"),
|
||||
- marks=[pytest.mark.memcached, pytest.mark.flaky],
|
||||
- id="memcached-sasl",
|
||||
- ),
|
||||
- "redis-cluster": pytest.param(
|
||||
- "async+redis+cluster://localhost:7001/",
|
||||
- {
|
||||
- "implementation": ASYNC_REDIS_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("redis_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster",
|
||||
- ),
|
||||
- "redis-cluster-auth": pytest.param(
|
||||
- "async+redis+cluster://:sekret@localhost:8400/",
|
||||
- {
|
||||
- "implementation": ASYNC_REDIS_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("redis_auth_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-cluster-auth",
|
||||
- ),
|
||||
- "redis-ssl-cluster": pytest.param(
|
||||
- "async+redis+cluster://localhost:8301",
|
||||
- {
|
||||
- "ssl": True,
|
||||
- "ssl_cert_reqs": "required",
|
||||
- "ssl_keyfile": "./tests/tls/client.key",
|
||||
- "ssl_certfile": "./tests/tls/client.crt",
|
||||
- "ssl_ca_certs": "./tests/tls/ca.crt",
|
||||
- "implementation": ASYNC_REDIS_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("redis_ssl_cluster"),
|
||||
- marks=pytest.mark.redis_cluster,
|
||||
- id="redis-ssl-cluster",
|
||||
- ),
|
||||
- "redis-sentinel": pytest.param(
|
||||
- "async+redis+sentinel://localhost:26379/mymaster",
|
||||
- {
|
||||
- "use_replicas": False,
|
||||
- "implementation": ASYNC_REDIS_IMPLEMENTATION,
|
||||
- },
|
||||
- lf("redis_sentinel"),
|
||||
- marks=pytest.mark.redis_sentinel,
|
||||
- id="redis-sentinel",
|
||||
- ),
|
||||
- "mongodb": pytest.param(
|
||||
- "async+mongodb://localhost:37017/",
|
||||
- {},
|
||||
- lf("mongodb"),
|
||||
- marks=pytest.mark.mongodb,
|
||||
- id="mongodb",
|
||||
- ),
|
||||
- "valkey": pytest.param(
|
||||
- "async+valkey://localhost:12379",
|
||||
- {},
|
||||
- lf("valkey_basic"),
|
||||
- marks=pytest.mark.valkey,
|
||||
- id="valkey_basic",
|
||||
- ),
|
||||
- "valkey-cluster": pytest.param(
|
||||
- "async+valkey+cluster://localhost:2001/",
|
||||
- {},
|
||||
- lf("valkey_cluster"),
|
||||
- marks=pytest.mark.valkey_cluster,
|
||||
- id="valkey-cluster",
|
||||
- ),
|
||||
}
|
||||
|
||||
all_storage = pytest.mark.parametrize("uri, args, fixture", ALL_STORAGES.values())
|
||||
@@ -50,6 +50,10 @@ buildPythonPackage rec {
|
||||
"test_edges_new"
|
||||
"test_edges_old"
|
||||
"test_split"
|
||||
]
|
||||
++ lib.optionals (pythonAtLeast "3.14") [
|
||||
# https://github.com/pympler/pympler/issues/177
|
||||
"test_untracked_containers"
|
||||
];
|
||||
|
||||
doCheck = stdenv.hostPlatform.isLinux;
|
||||
|
||||
Reference in New Issue
Block a user