datasette-events-forward 0.1a1__tar.gz → 0.1a2__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.
Potentially problematic release.
This version of datasette-events-forward might be problematic. Click here for more details.
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/PKG-INFO +5 -3
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward/__init__.py +5 -1
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/PKG-INFO +5 -3
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/requires.txt +2 -1
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/pyproject.toml +4 -3
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/tests/test_events_forward.py +18 -9
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/LICENSE +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/README.md +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/SOURCES.txt +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/dependency_links.txt +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/entry_points.txt +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/datasette_events_forward.egg-info/top_level.txt +0 -0
- {datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: datasette-events-forward
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.1a2
|
|
4
4
|
Summary: Forward Datasette events to another instance
|
|
5
5
|
Author: Simon Willison
|
|
6
6
|
License: Apache-2.0
|
|
@@ -13,14 +13,16 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: datasette
|
|
16
|
+
Requires-Dist: datasette==1.0a19
|
|
17
17
|
Requires-Dist: python-ulid
|
|
18
18
|
Requires-Dist: aiolimiter
|
|
19
|
+
Requires-Dist: typing_extensions
|
|
19
20
|
Provides-Extra: test
|
|
20
21
|
Requires-Dist: pytest; extra == "test"
|
|
21
22
|
Requires-Dist: pytest-asyncio; extra == "test"
|
|
22
23
|
Requires-Dist: pytest-httpx; extra == "test"
|
|
23
24
|
Requires-Dist: datasette-test; extra == "test"
|
|
25
|
+
Dynamic: license-file
|
|
24
26
|
|
|
25
27
|
# datasette-events-forward
|
|
26
28
|
|
|
@@ -24,6 +24,9 @@ create table if not exists datasette_events_to_forward (
|
|
|
24
24
|
# Default is to allow 1 every 10s
|
|
25
25
|
rate_limit = AsyncLimiter(max_rate=1, time_period=10)
|
|
26
26
|
|
|
27
|
+
# Lock to prevent concurrent send_events() calls
|
|
28
|
+
send_events_lock = asyncio.Lock()
|
|
29
|
+
|
|
27
30
|
DEFAULT_BATCH_LIMIT = 10
|
|
28
31
|
|
|
29
32
|
|
|
@@ -128,7 +131,8 @@ async def rate_limited_send_events(datasette):
|
|
|
128
131
|
# had been inserted before the send_events() function was called
|
|
129
132
|
await asyncio.sleep(0.05)
|
|
130
133
|
async with rate_limit:
|
|
131
|
-
|
|
134
|
+
async with send_events_lock:
|
|
135
|
+
await send_events(datasette)
|
|
132
136
|
|
|
133
137
|
|
|
134
138
|
@hookimpl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: datasette-events-forward
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.1a2
|
|
4
4
|
Summary: Forward Datasette events to another instance
|
|
5
5
|
Author: Simon Willison
|
|
6
6
|
License: Apache-2.0
|
|
@@ -13,14 +13,16 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: datasette
|
|
16
|
+
Requires-Dist: datasette==1.0a19
|
|
17
17
|
Requires-Dist: python-ulid
|
|
18
18
|
Requires-Dist: aiolimiter
|
|
19
|
+
Requires-Dist: typing_extensions
|
|
19
20
|
Provides-Extra: test
|
|
20
21
|
Requires-Dist: pytest; extra == "test"
|
|
21
22
|
Requires-Dist: pytest-asyncio; extra == "test"
|
|
22
23
|
Requires-Dist: pytest-httpx; extra == "test"
|
|
23
24
|
Requires-Dist: datasette-test; extra == "test"
|
|
25
|
+
Dynamic: license-file
|
|
24
26
|
|
|
25
27
|
# datasette-events-forward
|
|
26
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "datasette-events-forward"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.1a2"
|
|
4
4
|
description = "Forward Datasette events to another instance"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [{name = "Simon Willison"}]
|
|
@@ -11,9 +11,10 @@ classifiers=[
|
|
|
11
11
|
]
|
|
12
12
|
requires-python = ">=3.8"
|
|
13
13
|
dependencies = [
|
|
14
|
-
"datasette
|
|
14
|
+
"datasette==1.0a19",
|
|
15
15
|
"python-ulid",
|
|
16
|
-
"aiolimiter"
|
|
16
|
+
"aiolimiter",
|
|
17
|
+
"typing_extensions"
|
|
17
18
|
]
|
|
18
19
|
|
|
19
20
|
[project.urls]
|
{datasette-events-forward-0.1a1 → datasette_events_forward-0.1a2}/tests/test_events_forward.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from
|
|
2
|
+
from datasette.app import Datasette
|
|
3
|
+
import httpx
|
|
3
4
|
import json
|
|
4
5
|
from sqlite_utils import Database
|
|
5
6
|
import pytest
|
|
@@ -14,8 +15,12 @@ def non_mocked_hosts():
|
|
|
14
15
|
@pytest.mark.parametrize("configured", (True, False))
|
|
15
16
|
async def test_events_forward(tmpdir, configured, httpx_mock):
|
|
16
17
|
if configured:
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
# Allow multiple POST requests to the same URL
|
|
19
|
+
def custom_response(request):
|
|
20
|
+
return httpx.Response(200, json={"ok": True})
|
|
21
|
+
|
|
22
|
+
httpx_mock.add_callback(
|
|
23
|
+
custom_response, url="https://example.com/data/-/create"
|
|
19
24
|
)
|
|
20
25
|
|
|
21
26
|
db_path = str(tmpdir / "data.db")
|
|
@@ -23,12 +28,16 @@ async def test_events_forward(tmpdir, configured, httpx_mock):
|
|
|
23
28
|
db["foo"].insert({"id": 1}, pk="id")
|
|
24
29
|
datasette = Datasette(
|
|
25
30
|
[db_path],
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
config={
|
|
32
|
+
"plugins": {
|
|
33
|
+
"datasette-events-forward": {
|
|
34
|
+
"api_url": (
|
|
35
|
+
"https://example.com/data/-/create" if configured else ""
|
|
36
|
+
),
|
|
37
|
+
"api_token": "xxx",
|
|
38
|
+
"max_rate": 5,
|
|
39
|
+
"time_period": 0.2,
|
|
40
|
+
}
|
|
32
41
|
}
|
|
33
42
|
},
|
|
34
43
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|