limits 5.6.0__tar.gz → 5.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {limits-5.6.0 → limits-5.7.0}/.github/workflows/main.yml +4 -1
- {limits-5.6.0 → limits-5.7.0}/HISTORY.rst +8 -0
- {limits-5.6.0 → limits-5.7.0}/PKG-INFO +3 -2
- {limits-5.6.0 → limits-5.7.0}/limits/_version.py +2 -2
- {limits-5.6.0 → limits-5.7.0}/limits/storage/mongodb.py +29 -29
- {limits-5.6.0 → limits-5.7.0}/pyproject.toml +8 -2
- limits-5.7.0/scripts/github_release_notes.sh +19 -0
- limits-5.7.0/tag.sh +71 -0
- {limits-5.6.0 → limits-5.7.0}/tests/benchmarks/test_storage.py +7 -7
- limits-5.7.0/tests/tls/ca.crt +31 -0
- limits-5.7.0/tests/tls/ca.key +52 -0
- limits-5.7.0/tests/tls/ca.txt +1 -0
- limits-5.7.0/tests/tls/client.crt +26 -0
- limits-5.7.0/tests/tls/client.key +28 -0
- limits-5.7.0/tests/tls/redis.crt +25 -0
- limits-5.7.0/tests/tls/redis.dh +8 -0
- limits-5.7.0/tests/tls/redis.key +28 -0
- limits-5.7.0/tests/tls/server.crt +26 -0
- limits-5.7.0/tests/tls/server.key +28 -0
- limits-5.7.0/uv.lock +2592 -0
- limits-5.6.0/.gitattributes +0 -2
- limits-5.6.0/CLASSIFIERS +0 -12
- limits-5.6.0/scripts/github_release_notes.sh +0 -8
- limits-5.6.0/setup.cfg +0 -25
- limits-5.6.0/tag.sh +0 -25
- limits-5.6.0/tests/tls/ca.crt +0 -32
- limits-5.6.0/tests/tls/ca.key +0 -52
- limits-5.6.0/tests/tls/ca.txt +0 -1
- limits-5.6.0/tests/tls/client.crt +0 -26
- limits-5.6.0/tests/tls/client.key +0 -28
- limits-5.6.0/tests/tls/redis.crt +0 -23
- limits-5.6.0/tests/tls/redis.dh +0 -8
- limits-5.6.0/tests/tls/redis.key +0 -28
- limits-5.6.0/tests/tls/server.crt +0 -26
- limits-5.6.0/tests/tls/server.key +0 -28
- limits-5.6.0/uv.lock +0 -1837
- {limits-5.6.0 → limits-5.7.0}/.devcontainer/devcontainer.json +0 -0
- {limits-5.6.0 → limits-5.7.0}/.github/FUNDING.yml +0 -0
- {limits-5.6.0 → limits-5.7.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {limits-5.6.0 → limits-5.7.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {limits-5.6.0 → limits-5.7.0}/.github/dependabot.yml +0 -0
- {limits-5.6.0 → limits-5.7.0}/.github/workflows/compatibility.yml +0 -0
- {limits-5.6.0 → limits-5.7.0}/.gitignore +0 -0
- {limits-5.6.0 → limits-5.7.0}/.readthedocs.yml +0 -0
- {limits-5.6.0 → limits-5.7.0}/CODE_OF_CONDUCT.md +0 -0
- {limits-5.6.0 → limits-5.7.0}/CONTRIBUTIONS.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/LICENSE.txt +0 -0
- {limits-5.6.0 → limits-5.7.0}/MANIFEST.in +0 -0
- {limits-5.6.0 → limits-5.7.0}/Makefile +0 -0
- {limits-5.6.0 → limits-5.7.0}/README.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/_netlify_headers +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/Makefile +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/_static/custom.css +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/api.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/async.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/changelog.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/conf.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/custom-storage.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/_static/benchmark-chart.css +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/_static/js/benchmark-chart.js +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/_static/js/benchmark-details.js +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/_static/js/benchmark-loader.js +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/_templates/git_info.js +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/ext/bench_chart.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/index.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/installation.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/performance.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/quickstart.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/storage.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/strategies.rst +0 -0
- {limits-5.6.0 → limits-5.7.0}/doc/source/theme_config.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/docker-compose.yml +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/_version.pyi +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/base.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/memcached/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/memcached/bridge.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/memcached/emcache.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/memcached/memcachio.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/memory.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/mongodb.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/redis/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/redis/bridge.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/redis/coredis.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/redis/redispy.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/storage/redis/valkey.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/aio/strategies.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/errors.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/limits.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/py.typed +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/acquire_moving_window.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/acquire_sliding_window.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/clear_keys.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/incr_expire.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/moving_window.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/resources/redis/lua_scripts/sliding_window.lua +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/base.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/memcached.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/memory.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/redis.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/redis_cluster.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/redis_sentinel.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/storage/registry.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/strategies.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/typing.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/limits/util.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/push-release.sh +0 -0
- {limits-5.6.0 → limits-5.7.0}/pytest.ini +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/storage/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/storage/test_memory.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/storage/test_redis.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/test_storage.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/aio/test_strategy.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/benchmarks/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/benchmarks/conftest.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/conftest.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/data/memcached_auth.txt +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/integration/test_concurrency.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/storage/__init__.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/storage/test_memory.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/storage/test_redis.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_limit_granularities.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_limits.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_ratelimit_parser.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_storage.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_strategy.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/test_utils.py +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/tls/openssl.cnf +0 -0
- {limits-5.6.0 → limits-5.7.0}/tests/utils.py +0 -0
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
strategy:
|
|
9
9
|
matrix:
|
|
10
|
-
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
10
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
11
11
|
steps:
|
|
12
12
|
- uses: actions/checkout@v4
|
|
13
13
|
- name: Install uv and Python
|
|
@@ -59,6 +59,9 @@ jobs:
|
|
|
59
59
|
- python-version: "3.13"
|
|
60
60
|
marker: 'not benchmark'
|
|
61
61
|
os: ubuntu-latest
|
|
62
|
+
- python-version: "3.14"
|
|
63
|
+
marker: 'not benchmark'
|
|
64
|
+
os: ubuntu-latest
|
|
62
65
|
runs-on: "${{ matrix.os }}"
|
|
63
66
|
steps:
|
|
64
67
|
- uses: actions/checkout@v4
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: limits
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.7.0
|
|
4
4
|
Summary: Rate limiting utilities
|
|
5
5
|
Project-URL: Homepage, https://limits.readthedocs.org
|
|
6
6
|
Project-URL: Source, https://github.com/alisaifee/limits
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
23
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
23
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
25
|
Requires-Python: >=3.10
|
|
@@ -38,7 +39,7 @@ Requires-Dist: pymemcache<5.0.0,>3; extra == 'memcached'
|
|
|
38
39
|
Provides-Extra: mongodb
|
|
39
40
|
Requires-Dist: pymongo<5,>4.1; extra == 'mongodb'
|
|
40
41
|
Provides-Extra: redis
|
|
41
|
-
Requires-Dist: redis!=4.5.2,!=4.5.3,<
|
|
42
|
+
Requires-Dist: redis!=4.5.2,!=4.5.3,<8.0.0,>3; extra == 'redis'
|
|
42
43
|
Provides-Extra: rediscluster
|
|
43
44
|
Requires-Dist: redis!=4.5.2,!=4.5.3,>=4.2.0; extra == 'rediscluster'
|
|
44
45
|
Provides-Extra: valkey
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '5.
|
|
32
|
-
__version_tuple__ = version_tuple = (5,
|
|
31
|
+
__version__ = version = '5.7.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (5, 7, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -156,34 +156,34 @@ class MongoDBStorageBase(
|
|
|
156
156
|
seconds=expiry
|
|
157
157
|
)
|
|
158
158
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
{
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"$
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
"
|
|
173
|
-
"$
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
159
|
+
if response := self.counters.find_one_and_update(
|
|
160
|
+
{"_id": key},
|
|
161
|
+
[
|
|
162
|
+
{
|
|
163
|
+
"$set": {
|
|
164
|
+
"count": {
|
|
165
|
+
"$cond": {
|
|
166
|
+
"if": {"$lt": ["$expireAt", "$$NOW"]},
|
|
167
|
+
"then": amount,
|
|
168
|
+
"else": {"$add": ["$count", amount]},
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"expireAt": {
|
|
172
|
+
"$cond": {
|
|
173
|
+
"if": {"$lt": ["$expireAt", "$$NOW"]},
|
|
174
|
+
"then": expiration,
|
|
175
|
+
"else": "$expireAt",
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
upsert=True,
|
|
182
|
+
projection=["count"],
|
|
183
|
+
return_document=self.lib.ReturnDocument.AFTER,
|
|
184
|
+
):
|
|
185
|
+
return int(response["count"])
|
|
186
|
+
return 0
|
|
187
187
|
|
|
188
188
|
def check(self) -> bool:
|
|
189
189
|
"""
|
|
@@ -468,7 +468,7 @@ class MongoDBStorageBase(
|
|
|
468
468
|
return_document=self.lib.ReturnDocument.AFTER,
|
|
469
469
|
upsert=True,
|
|
470
470
|
)
|
|
471
|
-
return cast(bool, result["_acquired"])
|
|
471
|
+
return cast(bool, result["_acquired"] if result else False)
|
|
472
472
|
|
|
473
473
|
def clear_sliding_window(self, key: str, expiry: int) -> None:
|
|
474
474
|
return self.clear(key)
|
|
@@ -25,6 +25,7 @@ classifiers = [
|
|
|
25
25
|
"Programming Language :: Python :: 3.11",
|
|
26
26
|
"Programming Language :: Python :: 3.12",
|
|
27
27
|
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
28
29
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
29
30
|
]
|
|
30
31
|
dependencies = [
|
|
@@ -41,7 +42,7 @@ Documentation = "https://limits.readthedocs.org"
|
|
|
41
42
|
|
|
42
43
|
[project.optional-dependencies]
|
|
43
44
|
redis = [
|
|
44
|
-
"redis>3,!=4.5.2,!=4.5.3,<
|
|
45
|
+
"redis>3,!=4.5.2,!=4.5.3,<8.0.0"
|
|
45
46
|
]
|
|
46
47
|
rediscluster = [
|
|
47
48
|
"redis>=4.2.0,!=4.5.2,!=4.5.3"
|
|
@@ -89,7 +90,7 @@ test = [
|
|
|
89
90
|
"flaky",
|
|
90
91
|
"lovely-pytest-docker",
|
|
91
92
|
"pytest<9",
|
|
92
|
-
"pytest-asyncio
|
|
93
|
+
"pytest-asyncio",
|
|
93
94
|
"pytest-benchmark[histogram]",
|
|
94
95
|
"pytest-cov",
|
|
95
96
|
"pytest-lazy-fixtures",
|
|
@@ -102,10 +103,12 @@ dev = [
|
|
|
102
103
|
"mypy",
|
|
103
104
|
"types-deprecated",
|
|
104
105
|
"wheel",
|
|
106
|
+
"hatch",
|
|
105
107
|
{include-group = "test"},
|
|
106
108
|
]
|
|
107
109
|
|
|
108
110
|
ci = [
|
|
111
|
+
"redis!=7.1", # issues with async redis cluster (https://github.com/redis/redis-py/issues/3935)
|
|
109
112
|
{include-group = "dev"},
|
|
110
113
|
|
|
111
114
|
]
|
|
@@ -139,3 +142,6 @@ typing-modules = ["limits.typing"]
|
|
|
139
142
|
[tool.ruff.lint.isort]
|
|
140
143
|
required-imports = ["from __future__ import annotations"]
|
|
141
144
|
|
|
145
|
+
[[tool.mypy.overrides]]
|
|
146
|
+
module = "limits.aio.storage.memcached.emcache"
|
|
147
|
+
ignore_errors = true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
TAG=$(echo $GITHUB_REF | cut -d / -f 3)
|
|
4
|
+
git format-patch -1 $TAG --stdout | grep -P '^\+' | \
|
|
5
|
+
sed '1,4d' | \
|
|
6
|
+
sed -E 's/^\+(.*)/\1/' | \
|
|
7
|
+
grep -v "Release Date" | \
|
|
8
|
+
# Convert top-level bullets (*) to headers (##)
|
|
9
|
+
sed -E -e 's/^\* (.*)/## \1/' | \
|
|
10
|
+
# Convert indented sub-bullets to Markdown '- '
|
|
11
|
+
sed -E -e 's/^ \* /- /' | \
|
|
12
|
+
# Remove any remaining 2-space indentation
|
|
13
|
+
sed -E -e 's/^ //' | \
|
|
14
|
+
# Convert inline code ``like_this`` to Markdown `like_this`
|
|
15
|
+
sed -E -e 's/``([^`]*)``/`\1`/g' | \
|
|
16
|
+
# Convert Sphinx roles :role:`text` or :role:`~path.to.Class` to just `text`
|
|
17
|
+
sed -E -e 's/:([a-z]+):`~?([^`]*)`/`\2`/g' | \
|
|
18
|
+
# Convert full links `text <url>`_ to Markdown [text](url)
|
|
19
|
+
sed -E -e 's/`([^`]*) <(https?:\/\/[^>]*)>`_/\[\1\](\2)/g'
|
limits-5.7.0/tag.sh
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
make lint
|
|
5
|
+
|
|
6
|
+
# last tag that is a release
|
|
7
|
+
last_tag=$(git tag | grep -v 'v' | sort -Vr | head -n 1)
|
|
8
|
+
echo "Current version: $(uv run hatch version), last tag: $last_tag"
|
|
9
|
+
|
|
10
|
+
read -p "New version: " new_version
|
|
11
|
+
|
|
12
|
+
# Find the last changelog portion to insert before
|
|
13
|
+
last_portion=$(grep -P "^Changelog$" HISTORY.rst -5 | grep -P "^v\d+\.\d+" || true)
|
|
14
|
+
|
|
15
|
+
# Get git notes (from the 'next' ref)
|
|
16
|
+
notes=$(GIT_NOTES_REF=refs/notes/next git log "$last_tag"..HEAD --pretty=format:'%N' || true)
|
|
17
|
+
|
|
18
|
+
python - <<PY
|
|
19
|
+
import datetime
|
|
20
|
+
|
|
21
|
+
history_file = "HISTORY.rst"
|
|
22
|
+
new_version = "$new_version"
|
|
23
|
+
last_portion = """$last_portion"""
|
|
24
|
+
notes = """$notes"""
|
|
25
|
+
|
|
26
|
+
# Trim leading/trailing blank lines from notes but preserve internal spacing
|
|
27
|
+
notes = notes.strip("\n")
|
|
28
|
+
|
|
29
|
+
# Build the new changelog block
|
|
30
|
+
heading = f"v{new_version}"
|
|
31
|
+
sep = "-" * len(heading)
|
|
32
|
+
release_date = datetime.date.today().isoformat()
|
|
33
|
+
|
|
34
|
+
new_changelog = "\n".join([
|
|
35
|
+
heading,
|
|
36
|
+
sep,
|
|
37
|
+
f"Release Date: {release_date}",
|
|
38
|
+
"",
|
|
39
|
+
notes,
|
|
40
|
+
""
|
|
41
|
+
]).strip("\n") + "\n\n" # ensure one blank line at the end
|
|
42
|
+
|
|
43
|
+
# Read HISTORY.rst and insert new changelog
|
|
44
|
+
content = open(history_file).read()
|
|
45
|
+
if last_portion:
|
|
46
|
+
updated = content.replace(last_portion, new_changelog + last_portion)
|
|
47
|
+
else:
|
|
48
|
+
updated = new_changelog + content
|
|
49
|
+
|
|
50
|
+
with open(history_file + ".new", "w", newline="\n") as f:
|
|
51
|
+
f.write(updated)
|
|
52
|
+
PY
|
|
53
|
+
|
|
54
|
+
mv HISTORY.rst.new HISTORY.rst
|
|
55
|
+
|
|
56
|
+
tmp_commits=$(mktemp)
|
|
57
|
+
git log "$last_tag"..HEAD --format='* %s (%h)%n%b' \
|
|
58
|
+
| sed -E '/^\*/! s/(.*)/ \1/g' > "$tmp_commits"
|
|
59
|
+
|
|
60
|
+
vim -O HISTORY.rst "$tmp_commits"
|
|
61
|
+
|
|
62
|
+
rm "$tmp_commits"
|
|
63
|
+
|
|
64
|
+
if rst2html HISTORY.rst > /dev/null 2>&1; then
|
|
65
|
+
echo "Tagging $new_version"
|
|
66
|
+
git add HISTORY.rst
|
|
67
|
+
git commit -m "Update changelog for ${new_version}"
|
|
68
|
+
git tag -s "$new_version" -m "Tag version ${new_version}"
|
|
69
|
+
else
|
|
70
|
+
echo "Changelog has errors. Skipping tag."
|
|
71
|
+
fi
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
3
4
|
import functools
|
|
4
5
|
import random
|
|
5
6
|
|
|
@@ -189,9 +190,8 @@ def test_test(benchmark, strategy, uri, args, limit, percentage_full, fixture):
|
|
|
189
190
|
)
|
|
190
191
|
@pytest.mark.parametrize("percentage_full", [5, 50, 95])
|
|
191
192
|
@pytest.mark.benchmark(group="hit")
|
|
192
|
-
def test_hit_async(
|
|
193
|
-
event_loop
|
|
194
|
-
):
|
|
193
|
+
def test_hit_async(benchmark, strategy, uri, args, limit, percentage_full, fixture):
|
|
194
|
+
event_loop = asyncio.new_event_loop()
|
|
195
195
|
storage = storage_from_string(uri, **args)
|
|
196
196
|
seed_limit(strategy(storage), limit, percentage_full, event_loop)
|
|
197
197
|
benchmark.pedantic(
|
|
@@ -220,8 +220,9 @@ def test_hit_async(
|
|
|
220
220
|
@pytest.mark.parametrize("percentage_full", [5, 50, 95])
|
|
221
221
|
@pytest.mark.benchmark(group="get-window-stats")
|
|
222
222
|
def test_get_window_stats_async(
|
|
223
|
-
|
|
223
|
+
benchmark, strategy, uri, args, limit, percentage_full, fixture
|
|
224
224
|
):
|
|
225
|
+
event_loop = asyncio.new_event_loop()
|
|
225
226
|
storage = storage_from_string(uri, **args)
|
|
226
227
|
seed_limit(strategy(storage), limit, percentage_full, event_loop)
|
|
227
228
|
benchmark.pedantic(
|
|
@@ -249,9 +250,8 @@ def test_get_window_stats_async(
|
|
|
249
250
|
)
|
|
250
251
|
@pytest.mark.parametrize("percentage_full", [5, 50, 95])
|
|
251
252
|
@pytest.mark.benchmark(group="test")
|
|
252
|
-
def test_test_async(
|
|
253
|
-
event_loop
|
|
254
|
-
):
|
|
253
|
+
def test_test_async(benchmark, strategy, uri, args, limit, percentage_full, fixture):
|
|
254
|
+
event_loop = asyncio.new_event_loop()
|
|
255
255
|
storage = storage_from_string(uri, **args)
|
|
256
256
|
seed_limit(strategy(storage), limit, percentage_full, event_loop)
|
|
257
257
|
benchmark.pedantic(
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
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
|
|
31
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
|
+
BdEREvGtXO2rjcFjD1I3dw5PBe8TQw==
|
|
52
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
73B7C5C0894F16C629F6B85B283B4C63D00AB998
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEUDCCAjigAwIBAgIUc7fFwIlPFsYp9rhbKDtMY9AKuZcwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg
|
|
4
|
+
QXV0aG9yaXR5MB4XDTI1MTIxNzIyNTM1MVoXDTM1MTIxNTIyNTM1MVowKzETMBEG
|
|
5
|
+
A1UECgwKUmVkaXMgVGVzdDEUMBIGA1UEAwwLQ2xpZW50LW9ubHkwggEiMA0GCSqG
|
|
6
|
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuxyBW8o1y+117ZbNPwzTz9ZBVhI5NclSt
|
|
7
|
+
eiDXl92eKrav6UIMMfKbRSTwQSP3EpyKcMZLnNBfjlpc+BNoZmOUCa7Tu9P6cu/1
|
|
8
|
+
cEOm5bDMcxpbCI6zO24vVD0Y1kCV7ShHBJ3cdEEgn/eKx0im4zg8mNPsYhI0muWC
|
|
9
|
+
AI51t94BR1MLKaSU4hfiPBSwisF2+ReVhf0s63chcJDQUDWe+D4t5O+REBQp5Ng0
|
|
10
|
+
uC/HKslLuC+eaIp3OBDxvO4pZh/ayjZ6y2w8wsVddoJXZyXRY2VD+I7Ig9TFMPum
|
|
11
|
+
28WGSTz//mMTNMeA99tp2BSB3Q4Q4c9YrBbSwaMHlmNwOP7hcjh7AgMBAAGjYjBg
|
|
12
|
+
MAsGA1UdDwQEAwIFoDARBglghkgBhvhCAQEEBAMCB4AwHQYDVR0OBBYEFIrNZxLD
|
|
13
|
+
zWPPX/1jQ1zm+qaR2iCzMB8GA1UdIwQYMBaAFKc/7fKKO3mIcLr9UQpNwkmYENXz
|
|
14
|
+
MA0GCSqGSIb3DQEBCwUAA4ICAQBU6k05pIi8T6TLfdjabyfFWbJok5UR7kC9609q
|
|
15
|
+
OhAzs4he0OYEU77bOAaAA540O2Ig4KKF3rajGcdInJktDhzCctsE5oKyA9WWnem8
|
|
16
|
+
IQCPO/+a56MER37XGpKLo47lG7ZLVhFVUPPoyIwlZU1qrdlsd2ay6UHyvYeOiKoR
|
|
17
|
+
HkU+6htiIL7Ptg97YOee8mGcYAQG7uvjSoq7ONs2DHEU4qxAoCF53ATA+toeIMfr
|
|
18
|
+
PRBlf2jKxxhyWE/AK2K74cbpMPrm1/W4cy5aLH+7J7vGZp2Omfni89IATjGHkJnC
|
|
19
|
+
jKisuyMepJAGp7Y+QPWyv1sBjhljz2RZcquinqMr54ajgptJFakElme4BTt0anbJ
|
|
20
|
+
OUYvgG7iNVjFs9AYjXYr8Fmx0IS3AolOrAhbHwH/Py4fqAw2YHheuOvDHCuxWqSl
|
|
21
|
+
QHcUHSDdysKcPTOgqFgubabT1iZLuPxEbluySq+bhYc1zkww2FDh+n1zavX+8qoM
|
|
22
|
+
ZCwXq+DjJFgCwxthTYGKLX/iPv50hYyK6d3YC0CMD+XZMJxS7mity2dv45NmHUWA
|
|
23
|
+
mz5X3jK6KFOAfnBeDErmO2QP59Ox/IoAl3fdDxuv7ubjpGLO2QXrbM0Lq+N25LeS
|
|
24
|
+
8KDdFJuIDH7p3rOHFNxecxGEsxyYAq1FLPZvm+55KoH+fjxhQ2iC7E3ZYhiK+lUd
|
|
25
|
+
50nghw==
|
|
26
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCuxyBW8o1y+117
|
|
3
|
+
ZbNPwzTz9ZBVhI5NclSteiDXl92eKrav6UIMMfKbRSTwQSP3EpyKcMZLnNBfjlpc
|
|
4
|
+
+BNoZmOUCa7Tu9P6cu/1cEOm5bDMcxpbCI6zO24vVD0Y1kCV7ShHBJ3cdEEgn/eK
|
|
5
|
+
x0im4zg8mNPsYhI0muWCAI51t94BR1MLKaSU4hfiPBSwisF2+ReVhf0s63chcJDQ
|
|
6
|
+
UDWe+D4t5O+REBQp5Ng0uC/HKslLuC+eaIp3OBDxvO4pZh/ayjZ6y2w8wsVddoJX
|
|
7
|
+
ZyXRY2VD+I7Ig9TFMPum28WGSTz//mMTNMeA99tp2BSB3Q4Q4c9YrBbSwaMHlmNw
|
|
8
|
+
OP7hcjh7AgMBAAECggEABOzcnEalNiEfmcYcaaTXyFYvtTvmjLJ/m2Hj1199Yc3U
|
|
9
|
+
rHFiKJjRvDlpwzwlXiWP9BYd0xdTXJX/iuYnbzDky9ECtGRzIqLRi0pDcHUW6Ild
|
|
10
|
+
K+/k9ue3q61v3ql5qXVE8My7AXGPPPL1FVvspV361uOm+TQsTNTeny1n1lO89a6N
|
|
11
|
+
FssPQQTXhgSELsuKWvhDh4hENUm5mjVzmRmIjyPBW62rpgK5v+MHs6nOv1VIBYtO
|
|
12
|
+
xE9H52Pi/508741Y/JyF6YQj+1zoYEW5kZ7Z+LeNnDoHc4DoOJOJsbH6PK5T/cSi
|
|
13
|
+
seyvAktoAZgw1zShsgNCuRcd/+DcZnQb1uVuC25JBQKBgQDgvgK7xqMAnzsFmfgx
|
|
14
|
+
k1VdW3lUUnI3ds16Sr9LrDfFJtTaVLHftwtrzFS4E6k7nDkVP4D31YamxLalutr7
|
|
15
|
+
2QYvheed8rif79IF/1CC6zUgzz6BaP0zUuFpmlnjtx+UCXujcC2A3IndSWjyAyT6
|
|
16
|
+
4dVXiRJA34ss0+SI3EqV5Q8ubwKBgQDHFh/Dn2d35XTGdOSCX24PaUbAnlLeC0p4
|
|
17
|
+
VMFQnYdo3W2Ol4CLpThupR++PK90kvcfyJenhAkDHXGWbqSSPDDcPAP3BMUsxedS
|
|
18
|
+
CqLs+s7U1OIz+RvL0aplREypvYbDQ3KsnXRUWF1RLjL2IRaIOYUxUoupUQFs/JIX
|
|
19
|
+
5DjDMqHctQKBgQDaOgcDeLUMxJEWNlTXJr5MYadlpoz7qGOLrQslmruot7UVsAns
|
|
20
|
+
Npxjd0yIVacNl/uh00ES5gbS5s6IDPHYfPrRqI+oQmjd/IwOgMUX6vZyvmpuVJkQ
|
|
21
|
+
fhkdZuCECmwiXjbtE99Lclp4QnEiFsWQyztSvWm5Dpfg1nviHS5bcMmWBwKBgQCN
|
|
22
|
+
O2i1QjQInkLFNs+UnVZaoHiM1MQ8uQ3PZ3DsW5RgFBVQfrG2XzM1aval4i8mJ8wg
|
|
23
|
+
RBExyT0LdKvL6Bnfk8ulsP2vEzc9l/eN//Ws4BAydAM0k5fgc5DJ3jX0hHtBsmt7
|
|
24
|
+
gQexfi5VFM0aRkbRxNx0LPbe2pSEWHjbcg/CifzBsQKBgDWIHOdOEhwnRDq7UOqv
|
|
25
|
+
FqGfRkBVdNvD/ESd8owz+kM+Kst50QEWBUHCXxPbhOpC2HcaY2LqBYrhLQ0eiqYj
|
|
26
|
+
bkaWcNE2shqTVO+fauN/3L975pIQxXRjmZ9LYE0P3khgVbCc2iSDWE1Xm6JdDxKA
|
|
27
|
+
JZ7vGQOFIc0IrZXHdEm4XDi0
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEMTCCAhmgAwIBAgIUc7fFwIlPFsYp9rhbKDtMY9AKuZgwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg
|
|
4
|
+
QXV0aG9yaXR5MB4XDTI1MTIxNzIyNTM1MVoXDTM1MTIxNTIyNTM1MVowLDETMBEG
|
|
5
|
+
A1UECgwKUmVkaXMgVGVzdDEVMBMGA1UEAwwMR2VuZXJpYy1jZXJ0MIIBIjANBgkq
|
|
6
|
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhdAcixqLKZMrV8UFhTATyee1NyxMkgRd
|
|
7
|
+
uCmXilDnRQdM+GfoTcm5kwg12prThYNDVRVZdO/elspWMvCGrO0ckBOBmHQNbgGl
|
|
8
|
+
4wpqzpDrb40H5TKrjoR9PLua48e2+d7D7fS/6V3N2lv+m0S5b6evFu6WwEXmihsN
|
|
9
|
+
ojextu10ErjO2BS/sCVGcvjCFtWn6aOqriwl8uzluX9qwFVIvxQ9lWarGBNhm0DR
|
|
10
|
+
Zky8fPBtqERI+TS3kUpC8rOP5ZS0nd25ohevDNQqC5Kz+5z8p0//vzHXPAwg2toq
|
|
11
|
+
cuMlmYCYBk7IyM9A6KxK2wLST53Ypw3C897aGf47xNtfYO21GxXaJQIDAQABo0Iw
|
|
12
|
+
QDAdBgNVHQ4EFgQUe1u4VCdo9pvF0KEJLo/xEoGBrr8wHwYDVR0jBBgwFoAUpz/t
|
|
13
|
+
8oo7eYhwuv1RCk3CSZgQ1fMwDQYJKoZIhvcNAQELBQADggIBAIAPR64sLCiTZTZP
|
|
14
|
+
Xyo3Ijw52qo2XVmxGnvcMN5e0Sjlh5RVxn2/R68GUDNipRsEvrYdy67fQmkLnGGo
|
|
15
|
+
EaeSFh1wouKONgq4LvtQMYyuGAVpOG4i9l59/krYI3aQPGc0ZNWXiXrOAGWh8pr2
|
|
16
|
+
IqGKTlzlSk6FsUmiFAwzMAMMmQgSL+YHT6r+d5eVv+i3gDgWren30si92ayCw8Ap
|
|
17
|
+
tTU51K+LDHgq7eMnh8ulXP0kKb+U/eNgZ5TsLgPJoPOamOwrlsXzhBZmG/dypCPP
|
|
18
|
+
+MrtDZdhvsGJm/dx1kuSiO2wP7qoqsrAplsUsr1K39/x7Z5z0IRWJ+rNFos9WOsJ
|
|
19
|
+
rtpeYbC7wFVbKjsYmcz5/QEo7TeJYo6Agx5Q6Ap9+ZUbUw0MG/aQ/+KtWfCxVPRo
|
|
20
|
+
Fm6AGI3uqz68UprDFZBKZqu0nSsEWNmq24gnofLRjFWPscqd2QN90sQTnOD1mmn5
|
|
21
|
+
mGqgcEXJ8kwuHmXCRuLm4evI2nEq7gCkC/9snWGBblo8LQBm86nrZNwyFO2L9WTT
|
|
22
|
+
V5s+8lJrtVDzWHefnYPxwAem4bHBb8fFgJCLyXJ8Nq7qRT/1fCyyEhIDclddi7JO
|
|
23
|
+
6UICSlsqc2fHH6IZFK2TC8DyreCKIW24dvAfNuO+sFCW/vD7tkPKfEEBENDvf17f
|
|
24
|
+
aIta3lz2KKadKhZxZr52R2kgnpCk
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-----BEGIN DH PARAMETERS-----
|
|
2
|
+
MIIBDAKCAQEA2K90soAmb6xjgGh5p1+FBu3MKhj/4hBQt7SqWiDdTs8mvqTmVH2r
|
|
3
|
+
6iw/77x/paw1L1u1kQVLFAaVgjlTMIeu9TrAuU6MrDDdK0inuhkiqs49oLTPUvNc
|
|
4
|
+
6CYrg//ULdFh0wJNeDPHhbkZ9SX9XqJjkQnsYXRuukWsKkU1sjeSWgyUO4Mr8MFy
|
|
5
|
+
AvQtUHLRKtJQlq6MTnFsVwPfHOLRpr67/pMYMCaa8lSFphJn3cT6bxqw6ErZQIeN
|
|
6
|
+
KW73pR780GNWt/gdQ09w2du73E3s4Mhh4oprtci/Uuj2VkfRuOR9q89Zk/13tsXp
|
|
7
|
+
trUPfFLsdRB953xyvGdddhmQJPEXWaLsjwIBAgICAOE=
|
|
8
|
+
-----END DH PARAMETERS-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCF0ByLGospkytX
|
|
3
|
+
xQWFMBPJ57U3LEySBF24KZeKUOdFB0z4Z+hNybmTCDXamtOFg0NVFVl0796WylYy
|
|
4
|
+
8Ias7RyQE4GYdA1uAaXjCmrOkOtvjQflMquOhH08u5rjx7b53sPt9L/pXc3aW/6b
|
|
5
|
+
RLlvp68W7pbAReaKGw2iN7G27XQSuM7YFL+wJUZy+MIW1afpo6quLCXy7OW5f2rA
|
|
6
|
+
VUi/FD2VZqsYE2GbQNFmTLx88G2oREj5NLeRSkLys4/llLSd3bmiF68M1CoLkrP7
|
|
7
|
+
nPynT/+/Mdc8DCDa2ipy4yWZgJgGTsjIz0DorErbAtJPndinDcLz3toZ/jvE219g
|
|
8
|
+
7bUbFdolAgMBAAECggEADBiOCU8AHGUmylt6I8TUTRs1E4SIHrzmoeKfRba0KSu/
|
|
9
|
+
Rpx8myeB2cDTaWw3Hv8Iw59XQ6L5P9qQzzBUjuYs1PibwuW0Cb58Dy7JDTImw3cq
|
|
10
|
+
qwpuXUbXBqSTcZqt4h7DyaCnBm00fKl14Ermk6lt7N3qt6e57sBXoP3K1+qADxRk
|
|
11
|
+
e0CFgadiySupGJWBonVrIuY/6Sn56QTVPRen9v0y8jU2Or3gVTzdR+/IOwgeRpVC
|
|
12
|
+
0pbiESWME/MYoqxRIuJMLiQbHjDjgWUJ9ZZbJpvT2+FRdW4JUKdJb+f5RzTcMBcW
|
|
13
|
+
c8d3k4yd56VrZ8WKWqSmAJgEZvD97cvwsEBAoNhwowKBgQC7rPm3JB4yT3slbssn
|
|
14
|
+
L6uJ5RDLfGOpU2Mr786lC843w9UuQ+a/jZYn1pgm6Jc9gHYl09IbgeeBWBcTAuk9
|
|
15
|
+
iIws3/wRE27+KvgWA4oUugmGkdZXKLqiSIE3r8rZCrz2Skn+Belc1HfEGih22p9z
|
|
16
|
+
Z4sAC0R2z+/nOMpNEWOD3r9s8wKBgQC2hzpfhQZNrmhnjxLxBhCTQcxKD29mDmY+
|
|
17
|
+
UEoJxvFUERHniaY1htHXVuvIDYuY1HIy6SjDMfrbEEs8oXa0DhrYyWJS3VtjvULb
|
|
18
|
+
rb+huqjbH94Lx237kiuSJsa/nHpw5h4icE6wM4MAu1YlN3YEgEPdsoHJF+IdX50R
|
|
19
|
+
PIziSfCChwKBgQCF8pw8GVwv/khfXCdE7aIaBlKpWTtsY+a5Oiwb4kQpyuzBW5c6
|
|
20
|
+
ilxsTJ5FzuX68E/jCb7BAUNxLqUxXXeJAodBlA+9REiIwbRVSetohas8z6PSi3BB
|
|
21
|
+
WUxYqXA23pIlmroawq9fIQnl/eF5iuoZHQK5YlFYF2sbdY312X5UZUvs/wKBgDuI
|
|
22
|
+
KXrECUVG0BiOqo/f+YH94OJ63Et+AMzsJOnBcC6KDrvkwkgM+93vJKGwAUrMZ57B
|
|
23
|
+
OyFG6NmQG+nfg7bALvNr41zBg7ApJ2g86BaYqcAmSaav2ehGSV22tfYC1FCETWnQ
|
|
24
|
+
FWoUsvKHJ1amGyDmsLvbH8d1ubL432KizBR2JzJ7AoGAI3IKvmRHub688zTjP7Jt
|
|
25
|
+
tkfuF8O0LrBuIoqEwGrWuUzJF42kGjcngtEDQuQu1u/HKMWO099gf2t4uXDG9tAp
|
|
26
|
+
DGI5+Vn9bpO78iDLrha7VpCIDpLGrR36ld7qpUMx4s9uc1T1ErHjqfjLSHulCV/u
|
|
27
|
+
ZnvwTu1NQaBi6LtTtqYFPdo=
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEUDCCAjigAwIBAgIUc7fFwIlPFsYp9rhbKDtMY9AKuZYwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg
|
|
4
|
+
QXV0aG9yaXR5MB4XDTI1MTIxNzIyNTM1MVoXDTM1MTIxNTIyNTM1MVowKzETMBEG
|
|
5
|
+
A1UECgwKUmVkaXMgVGVzdDEUMBIGA1UEAwwLU2VydmVyLW9ubHkwggEiMA0GCSqG
|
|
6
|
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCP14zt+Zdg0xXyzUcTOvrxewTwPB52FJJK
|
|
7
|
+
+g0/udfbSB9f/FE0CljTpGPU75LPWNy10IPMlGCi0X+SbofNVncTHZVSjzoRelKo
|
|
8
|
+
mmpJ7itryDNQInUsxDCEtIcZ6QUPrlkW373a7oyKiL13BHcnd3ZiUMr2mBr5UmDk
|
|
9
|
+
H6TEwOPmEni+fefJyjPUtGCiFawRMmpcWU7X8+N+T8k4M0An9EBEq8tvWCKWiJFt
|
|
10
|
+
c65kAhZlWczNE4dbrmOMGfCYwtF/R6kQvI+zV/dd83HrN1NAdMwSyvdizK8XZ3N/
|
|
11
|
+
YjDMCoTKnYif3UUKCR6UH7L33yQT3LG1OEMLj+l/RC1h7xhTcKPfAgMBAAGjYjBg
|
|
12
|
+
MAsGA1UdDwQEAwIFoDARBglghkgBhvhCAQEEBAMCBkAwHQYDVR0OBBYEFJGgf9VM
|
|
13
|
+
yyM/OXGsZzb/1tdB06lDMB8GA1UdIwQYMBaAFKc/7fKKO3mIcLr9UQpNwkmYENXz
|
|
14
|
+
MA0GCSqGSIb3DQEBCwUAA4ICAQBn5W7r7wYp1Hn2Aj+ANjQIIbikOJKtgcB9fo+s
|
|
15
|
+
blMT9VIxxYZ8CI49TKDS13YNgeGDoSifF1O+iQkNVlFSlWwYY/eyM0vm7qVBzTQ6
|
|
16
|
+
AiHRSajFX6FKkishYrA2Dw3A/XIQ5ifOjHeWsUTUgu4VAkxFuTKMphHMnMZFQ2fo
|
|
17
|
+
ycwE5R56qas5zRguj/lt7DULL3eg6D/TGCYiJIWbYZl/xp8FsfliCjxPiUrxEWPw
|
|
18
|
+
DeUGHNII57xNPfUbSkwxPUqrwXp4hE5vWixaDv93f3P8WwheRMYzmD95eDTsuapc
|
|
19
|
+
Bk+SHi/M+eY58XB6sHIJ7Q4xyUiR0KBo16VofmdFzCdPyFmmPAEkh5sK0sr160Nd
|
|
20
|
+
CPyPd+zDdkBImRQMb15VKGCBI0912sun/3pzgatW+4D6Ag5KALnMQ7MOodf6ADIi
|
|
21
|
+
je/6eZZ/MZceRIYe0oTATPC78Rkp4YfVHvmWetF9tgk1aCdrSjVCj9H+qXMm3fzk
|
|
22
|
+
7sF9BF3g79l5TPUwCeGYRI8ltI+8lQK2MHXVyu7xy/WH+FAX6ZLOw3sbsHKlqUy1
|
|
23
|
+
fUB6sfaSDf3AujM66+0xNQ9hiDp/i2rpijiy1KyomiA2W5OwliNXacoSJ4SzVOmi
|
|
24
|
+
xHqtQYHUssZfLPo2HsDZHGOsFKJpNW9M0EySFMyc9qVFFrIEeNy9lMpPTNHguw3K
|
|
25
|
+
wHn88Q==
|
|
26
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCP14zt+Zdg0xXy
|
|
3
|
+
zUcTOvrxewTwPB52FJJK+g0/udfbSB9f/FE0CljTpGPU75LPWNy10IPMlGCi0X+S
|
|
4
|
+
bofNVncTHZVSjzoRelKommpJ7itryDNQInUsxDCEtIcZ6QUPrlkW373a7oyKiL13
|
|
5
|
+
BHcnd3ZiUMr2mBr5UmDkH6TEwOPmEni+fefJyjPUtGCiFawRMmpcWU7X8+N+T8k4
|
|
6
|
+
M0An9EBEq8tvWCKWiJFtc65kAhZlWczNE4dbrmOMGfCYwtF/R6kQvI+zV/dd83Hr
|
|
7
|
+
N1NAdMwSyvdizK8XZ3N/YjDMCoTKnYif3UUKCR6UH7L33yQT3LG1OEMLj+l/RC1h
|
|
8
|
+
7xhTcKPfAgMBAAECggEANCZpjWP2yp9tLzTWhnXVQlSgIzsgrh3iNjW3NPn7dSCO
|
|
9
|
+
Y332sN/peX35xdtABlXI21AoYLUQ3icHUf8p1Dv7et44Y5DS9EA9lKw7SeeELZUN
|
|
10
|
+
aYm8osjUcGCFNNMjRx6mZSEkU6o2IQnXaz2et5vbu2RgWYwnB2qi/0IrujvWxHQ1
|
|
11
|
+
vwkUNAfGa2gnAAXuMpGlkdHTu/+78u5S/iX5Dfn/1rHTB7kYJkp9gCPW+n8AGCcM
|
|
12
|
+
m2y2AkKquh+yqS32q/sS0vtS5AK6Wc6MbErTR24pK/s6gMMMxO9d3XjKig6jQfkI
|
|
13
|
+
1fEqVatwB0qUe02d8Wkq9JQPFh0Ubr7l1uJXOnU6UQKBgQDG+LYQbuusKHWy08pc
|
|
14
|
+
oenbrDDaznw4y2iKoBlQhNi/lPpiYSKSg0X+5R3wcnLqq7Afl35wujDNgPO9tb6J
|
|
15
|
+
vgyFAFK8h4+Zeaf5NeV2nXfA7WnMFrOx9ZoaVfCB+OhP4TbAGyH4vxd5nW4uh+UV
|
|
16
|
+
4nl9s3REri7kApX3k3HtfxSBMQKBgQC5Ecc5esscK+QmXJbukcST2AuPzG04xrbN
|
|
17
|
+
+i85Q1iNG1ovf9JYPqFI/JArSYO45dG6EY4y83mOg8A30ps2SPpLDMaG/9P/vb7w
|
|
18
|
+
/NNKlwC4yV/e+noqjP+YiZHVPIDT20+kc8Bixl1aDbz9KHOIHmFyynIFl6Y9W8MG
|
|
19
|
+
Zaubs7myDwKBgFciO7jeml5+KWzyyr/eOCd3NL3dhxDoIxPyIKPeSX08pJnIp/c5
|
|
20
|
+
fcGuXHob5K9YGHz9PuXm49BbFGKT4Kk5jQoBpjnhs8UmPaUpMR/MvdDDJ320w2S/
|
|
21
|
+
hYja8cQ5WKMCoZNnTm08Ye9kPggqguwejc26dMRO80Huz/XnoBC9giFBAoGAEN60
|
|
22
|
+
AGNXHGxL0cti3sBe4PMyqpsB4ckLZN9Harre2Y4CvI20SOL8pMCRC8EZxsL8SS/M
|
|
23
|
+
fIyBKiKMZQpHp70jQ7AYcLnlQ0yymRkS0ZvOLwn8OUEv3a0Yp3jy2DM5sxYsvlrm
|
|
24
|
+
0JowbEMQVStYzLGoRGR73FKkjrdMocqmx/ysErUCgYB5Q1gvK7ib9fq29t6Z3MvO
|
|
25
|
+
krDtjCEMZnvhKL33pfRnXHHfju3pwb45gAOd2WDkW0XVyaEoVbNcF5afySkBTYLI
|
|
26
|
+
z7Xsh0BxDoILFSc2QcHSpZVIe5xabijUbsnchpGfCxvQ2L65HV86ZB/vhI+zIiZK
|
|
27
|
+
kmc+RuVFanC68qLcgk/Syg==
|
|
28
|
+
-----END PRIVATE KEY-----
|