async-kernel 0.18.1__tar.gz → 0.18.3__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.
- {async_kernel-0.18.1 → async_kernel-0.18.3}/CHANGELOG.md +20 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/PKG-INFO +1 -1
- {async_kernel-0.18.1 → async_kernel-0.18.3}/_version.py +2 -2
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/caller.py +2 -2
- async_kernel-0.18.3/src/async_kernel/compat/json.py +67 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_caller.py +3 -3
- async_kernel-0.18.1/src/async_kernel/compat/json.py +0 -45
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/dependabot.yaml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/release.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/ci.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/enforce-label.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/new_release.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/pre-commit.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/publish-docs.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.github/workflows/publish-to-pypi.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.gitignore +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.pre-commit-config.yaml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.vscode/launch.json +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.vscode/settings.json +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/.vscode/spellright.dict +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/CONTRIBUTING.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/IPYTHON_LICENSE +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/LICENSE +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/README.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/cliff.toml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/about/changelog.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/about/contributing.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/about/index.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/about/license.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/index.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/javascripts/extra.js +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/notebooks/caller.ipynb +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/notebooks/concurrency.ipynb +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/notebooks/custom_kernel.ipynb +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/overrides/main.html +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/asyncshell.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/caller.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/comm.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/command.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/common.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/debugger.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/event_loop.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/index.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/interface.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/kernel.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/kernelspec.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/pending.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/typing.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/reference/utils.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/stylesheets/extra.css +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/thread_safety.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/usage/commands.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/docs/usage/index.md +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/hatch_build.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/mkdocs.yml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/pyproject.toml +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/__init__.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/__main__.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/asyncshell.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/comm.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/command.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/common.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/compiler.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/debugger.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/event_loop/__init__.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/event_loop/asyncio_guest.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/event_loop/qt_host.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/event_loop/run.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/event_loop/tk_host.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/interface/__init__.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/interface/base.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/interface/callable.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/interface/zmq.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/iostream.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/kernel.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/kernelspec.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/pending.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/py.typed +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/resources/logo-32x32.png +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/resources/logo-64x64.png +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/resources/logo-svg.svg +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/typing.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/src/async_kernel/utils.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/__init__.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/conftest.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/references.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_callable_kernel_interface.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_comm.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_command.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_common.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_compat.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_debugger.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_enter_kernel.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_event_loop.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_iostream.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_kernel.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_kernel_subclass.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_kernelspec.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_message_spec.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_pending.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_typing.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_utils.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/test_zmq_messaging.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/tests/utils.py +0 -0
- {async_kernel-0.18.1 → async_kernel-0.18.3}/uv.lock +0 -0
|
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.18.3] - 2026-05-06
|
|
9
|
+
|
|
10
|
+
### <!-- 1 --> 🚀 Features
|
|
11
|
+
|
|
12
|
+
- Include default argument in pack_json_bytes and pack_json_str. [#456](https://github.com/fleming79/async-kernel/pull/456)
|
|
13
|
+
|
|
14
|
+
## [0.18.2] - 2026-05-03
|
|
15
|
+
|
|
16
|
+
### <!-- 2 --> 🐛 Fixes
|
|
17
|
+
|
|
18
|
+
- Fix Caller.call_later not sleeping correctly. [#454](https://github.com/fleming79/async-kernel/pull/454)
|
|
19
|
+
|
|
20
|
+
### <!-- 6 --> 🌀 Miscellaneous
|
|
21
|
+
|
|
22
|
+
- Prepare for release v0.18.2 [#455](https://github.com/fleming79/async-kernel/pull/455)
|
|
23
|
+
|
|
8
24
|
## [0.18.1] - 2026-04-26
|
|
9
25
|
|
|
10
26
|
### <!-- 2 --> 🐛 Fixes
|
|
@@ -13,6 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
29
|
|
|
14
30
|
### <!-- 6 --> 🌀 Miscellaneous
|
|
15
31
|
|
|
32
|
+
- Prepare for release v0.18.1 [#453](https://github.com/fleming79/async-kernel/pull/453)
|
|
33
|
+
|
|
16
34
|
- Check trio is available early when creating a Caller for a trio backend. [#452](https://github.com/fleming79/async-kernel/pull/452)
|
|
17
35
|
|
|
18
36
|
- Remove unnecessary line. [#451](https://github.com/fleming79/async-kernel/pull/451)
|
|
@@ -1265,6 +1283,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1265
1283
|
|
|
1266
1284
|
- Bump the actions group across 1 directory with 2 updates [#3](https://github.com/fleming79/async-kernel/pull/3)
|
|
1267
1285
|
|
|
1286
|
+
[0.18.3]: https://github.com/fleming79/async-kernel/compare/v0.18.2..v0.18.3
|
|
1287
|
+
[0.18.2]: https://github.com/fleming79/async-kernel/compare/v0.18.1..v0.18.2
|
|
1268
1288
|
[0.18.1]: https://github.com/fleming79/async-kernel/compare/v0.18.0..v0.18.1
|
|
1269
1289
|
[0.18.0]: https://github.com/fleming79/async-kernel/compare/v0.17.1..v0.18.0
|
|
1270
1290
|
[0.17.1]: https://github.com/fleming79/async-kernel/compare/v0.17.0..v0.17.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: async-kernel
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.3
|
|
4
4
|
Summary: A concurrent python kernel for Jupyter supporting AnyIO, AsyncIO and Trio.
|
|
5
5
|
Project-URL: Homepage, https://fleming79.github.io/async-kernel
|
|
6
6
|
Project-URL: Documentation, https://fleming79.github.io/async-kernel
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.18.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 18,
|
|
21
|
+
__version__ = version = '0.18.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 18, 3)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -790,8 +790,8 @@ class Caller(anyio.AsyncContextManagerMixin):
|
|
|
790
790
|
"""
|
|
791
791
|
|
|
792
792
|
async def _call_later(*args: P.args, **kwargs: P.kwargs) -> T:
|
|
793
|
-
if (
|
|
794
|
-
await anyio.sleep(
|
|
793
|
+
if (delay_ := start_time - time.monotonic() + delay) > 0:
|
|
794
|
+
await anyio.sleep(delay_)
|
|
795
795
|
if inspect.iscoroutine(result := func(*args, **kwargs)):
|
|
796
796
|
result = await result
|
|
797
797
|
return result # pyright: ignore[reportReturnType]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import importlib.util
|
|
4
|
+
from typing import TYPE_CHECKING, Any
|
|
5
|
+
|
|
6
|
+
__all__ = ["pack_json_bytes", "pack_json_str", "unpack_json"]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from collections.abc import Callable
|
|
11
|
+
|
|
12
|
+
from jupyter_client.jsonutil import json_default
|
|
13
|
+
|
|
14
|
+
def pack_json_bytes(obj: Any, /, default: Callable[[Any], Any] | None = json_default) -> bytes:
|
|
15
|
+
"""
|
|
16
|
+
Pack obj into json serialized bytes.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
data: The data to serialize.
|
|
20
|
+
default: A function that should return a serializable version of obj or raise TypeError.
|
|
21
|
+
"""
|
|
22
|
+
...
|
|
23
|
+
|
|
24
|
+
def pack_json_str(obj: Any, /, default: Callable[[Any], Any] | None = json_default) -> str:
|
|
25
|
+
"""
|
|
26
|
+
Pack obj into json serialized string.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
data: The data to serialize.
|
|
30
|
+
default: A function that should return a serializable version of obj or raise TypeError.
|
|
31
|
+
"""
|
|
32
|
+
...
|
|
33
|
+
|
|
34
|
+
def unpack_json(data: str | bytes, /) -> Any:
|
|
35
|
+
"Deserialize data in a Python object."
|
|
36
|
+
...
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
if importlib.util.find_spec("jupyter_client"):
|
|
40
|
+
import json
|
|
41
|
+
|
|
42
|
+
from jupyter_client.jsonutil import json_default
|
|
43
|
+
|
|
44
|
+
def _jc_pack_bytes(obj: Any, default: Callable[[Any], Any] | None = json_default) -> bytes:
|
|
45
|
+
return json.dumps(obj, default=default).encode()
|
|
46
|
+
|
|
47
|
+
def _jc_pack_str(obj: Any, default: Callable[[Any], Any] | None = json_default) -> str:
|
|
48
|
+
return json.dumps(obj, allow_nan=False, default=default)
|
|
49
|
+
|
|
50
|
+
pack_json_bytes, pack_json_str, unpack_json = _jc_pack_bytes, _jc_pack_str, json.loads
|
|
51
|
+
|
|
52
|
+
else:
|
|
53
|
+
json_default = None # pragma: no cover
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if importlib.util.find_spec("orjson"):
|
|
57
|
+
import orjson
|
|
58
|
+
|
|
59
|
+
ORJSON_OPTION = orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_NAIVE_UTC | orjson.OPT_UTC_Z
|
|
60
|
+
|
|
61
|
+
def _oj_pack_bytes(obj: Any, default: Callable[[Any], Any] | None = json_default) -> bytes:
|
|
62
|
+
return orjson.dumps(obj, default=default, option=ORJSON_OPTION)
|
|
63
|
+
|
|
64
|
+
def _oj_pack_str(obj: Any, default: Callable[[Any], Any] | None = json_default) -> str:
|
|
65
|
+
return orjson.dumps(obj, default=default, option=ORJSON_OPTION).decode()
|
|
66
|
+
|
|
67
|
+
pack_json_bytes, pack_json_str, unpack_json = _oj_pack_bytes, _oj_pack_str, orjson.loads
|
|
@@ -124,9 +124,9 @@ class TestCaller:
|
|
|
124
124
|
|
|
125
125
|
async def test_sync(self):
|
|
126
126
|
async with Caller("manual") as caller:
|
|
127
|
-
|
|
128
|
-
caller.call_later(0.01,
|
|
129
|
-
|
|
127
|
+
start_time = time.monotonic()
|
|
128
|
+
dt = await caller.call_later(0.01, time.monotonic) - start_time
|
|
129
|
+
assert dt > 0.01
|
|
130
130
|
|
|
131
131
|
async def test_manual_stop(self):
|
|
132
132
|
async with Caller("manual") as caller:
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import importlib.util
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
|
-
|
|
6
|
-
__all__ = ["pack_json_bytes", "pack_json_str", "unpack_json"]
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from collections.abc import Callable
|
|
11
|
-
|
|
12
|
-
pack_json_bytes: Callable[[Any], bytes]
|
|
13
|
-
pack_json_str: Callable[[Any], str]
|
|
14
|
-
unpack_json: Callable[[str | bytes], Any]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if importlib.util.find_spec("jupyter_client"):
|
|
18
|
-
import json
|
|
19
|
-
|
|
20
|
-
from jupyter_client.jsonutil import json_default
|
|
21
|
-
|
|
22
|
-
def _jc_pack_bytes(data: Any) -> bytes:
|
|
23
|
-
return json.dumps(data, default=json_default).encode()
|
|
24
|
-
|
|
25
|
-
def _jc_pack_str(data: Any) -> str:
|
|
26
|
-
return json.dumps(data, default=json_default)
|
|
27
|
-
|
|
28
|
-
pack_json_bytes, pack_json_str, unpack_json = _jc_pack_bytes, _jc_pack_str, json.loads
|
|
29
|
-
|
|
30
|
-
else:
|
|
31
|
-
json_default = None # pragma: no cover
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if importlib.util.find_spec("orjson"):
|
|
35
|
-
import orjson
|
|
36
|
-
|
|
37
|
-
ORJSON_OPTION = orjson.OPT_SERIALIZE_NUMPY | orjson.OPT_NAIVE_UTC | orjson.OPT_UTC_Z
|
|
38
|
-
|
|
39
|
-
def _oj_pack_bytes(data) -> bytes:
|
|
40
|
-
return orjson.dumps(data, default=json_default, option=ORJSON_OPTION)
|
|
41
|
-
|
|
42
|
-
def _oj_pack_str(data) -> str:
|
|
43
|
-
return orjson.dumps(data, default=json_default, option=ORJSON_OPTION).decode()
|
|
44
|
-
|
|
45
|
-
pack_json_bytes, pack_json_str, unpack_json = _oj_pack_bytes, _oj_pack_str, orjson.loads
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|