mirror of
https://github.com/element-hq/synapse
synced 2024-09-11 08:55:10 +00:00
WIP
This commit is contained in:
parent
99c107920d
commit
3c3c0dd419
2 changed files with 131 additions and 53 deletions
101
pyproject.toml
101
pyproject.toml
|
@ -1,38 +1,38 @@
|
|||
[tool.towncrier]
|
||||
package = "synapse"
|
||||
filename = "CHANGES.md"
|
||||
directory = "changelog.d"
|
||||
issue_format = "[\\#{issue}](https://github.com/element-hq/synapse/issues/{issue})"
|
||||
package = "synapse"
|
||||
filename = "CHANGES.md"
|
||||
directory = "changelog.d"
|
||||
issue_format = "[\\#{issue}](https://github.com/element-hq/synapse/issues/{issue})"
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "feature"
|
||||
name = "Features"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "feature"
|
||||
name = "Features"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "bugfix"
|
||||
name = "Bugfixes"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "bugfix"
|
||||
name = "Bugfixes"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "docker"
|
||||
name = "Updates to the Docker image"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "docker"
|
||||
name = "Updates to the Docker image"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "doc"
|
||||
name = "Improved Documentation"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "doc"
|
||||
name = "Improved Documentation"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "removal"
|
||||
name = "Deprecations and Removals"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "removal"
|
||||
name = "Deprecations and Removals"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "misc"
|
||||
name = "Internal Changes"
|
||||
showcontent = true
|
||||
[[tool.towncrier.type]]
|
||||
directory = "misc"
|
||||
name = "Internal Changes"
|
||||
showcontent = true
|
||||
|
||||
[tool.black]
|
||||
target-version = ['py38', 'py39', 'py310', 'py311']
|
||||
|
@ -51,11 +51,7 @@ line-length = 88
|
|||
# flake8-bugbear compatible checks. Its error codes are described at
|
||||
# https://beta.ruff.rs/docs/rules/#flake8-bugbear-b
|
||||
# B023: Functions defined inside a loop must not use variables redefined in the loop
|
||||
ignore = [
|
||||
"B023",
|
||||
"E501",
|
||||
"E731",
|
||||
]
|
||||
ignore = ["B023", "E501", "E731"]
|
||||
select = [
|
||||
# pycodestyle
|
||||
"E",
|
||||
|
@ -80,7 +76,15 @@ select = [
|
|||
|
||||
[tool.isort]
|
||||
line_length = 88
|
||||
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "TWISTED", "FIRSTPARTY", "TESTS", "LOCALFOLDER"]
|
||||
sections = [
|
||||
"FUTURE",
|
||||
"STDLIB",
|
||||
"THIRDPARTY",
|
||||
"TWISTED",
|
||||
"FIRSTPARTY",
|
||||
"TESTS",
|
||||
"LOCALFOLDER",
|
||||
]
|
||||
default_section = "THIRDPARTY"
|
||||
known_first_party = ["synapse"]
|
||||
known_tests = ["tests"]
|
||||
|
@ -102,9 +106,7 @@ authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
|
|||
license = "AGPL-3.0-or-later"
|
||||
readme = "README.rst"
|
||||
repository = "https://github.com/element-hq/synapse"
|
||||
packages = [
|
||||
{ include = "synapse" },
|
||||
]
|
||||
packages = [{ include = "synapse" }]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Topic :: Communications :: Chat",
|
||||
|
@ -120,7 +122,7 @@ include = [
|
|||
{ path = "INSTALL.md", format = "sdist" },
|
||||
{ path = "mypy.ini", format = "sdist" },
|
||||
{ path = "scripts-dev", format = "sdist" },
|
||||
{ path = "synmark", format="sdist" },
|
||||
{ path = "synmark", format = "sdist" },
|
||||
{ path = "sytest-blacklist", format = "sdist" },
|
||||
{ path = "tests", format = "sdist" },
|
||||
{ path = "UPGRADE.rst", format = "sdist" },
|
||||
|
@ -130,9 +132,7 @@ include = [
|
|||
{ path = "rust/build.rs", format = "sdist" },
|
||||
{ path = "rust/src/**", format = "sdist" },
|
||||
]
|
||||
exclude = [
|
||||
{ path = "synapse/*.so", format = "sdist"}
|
||||
]
|
||||
exclude = [{ path = "synapse/*.so", format = "sdist" }]
|
||||
|
||||
[tool.poetry.build]
|
||||
script = "build_rust.py"
|
||||
|
@ -171,9 +171,8 @@ canonicaljson = "^2.0.0"
|
|||
signedjson = "^1.1.0"
|
||||
# validating SSL certs for IP addresses requires service_identity 18.1.
|
||||
service-identity = ">=18.1.0"
|
||||
# Twisted 18.9 introduces some logger improvements that the structured
|
||||
# logger utilises
|
||||
Twisted = {extras = ["tls"], version = ">=18.9.0"}
|
||||
# Twisted 21.2 introduces contextvar support
|
||||
Twisted = { extras = ["tls", "contextvars"], version = ">=21.2.0" }
|
||||
treq = ">=15.1"
|
||||
# Twisted has required pyopenssl 16.0 since about Twisted 16.6.
|
||||
pyOpenSSL = ">=16.0.0"
|
||||
|
@ -292,7 +291,9 @@ all = [
|
|||
# matrix-synapse-ldap3
|
||||
"matrix-synapse-ldap3",
|
||||
# postgres
|
||||
"psycopg2", "psycopg2cffi", "psycopg2cffi-compat",
|
||||
"psycopg2",
|
||||
"psycopg2cffi",
|
||||
"psycopg2cffi-compat",
|
||||
# saml2
|
||||
"pysaml2",
|
||||
# oidc and jwt
|
||||
|
@ -302,9 +303,11 @@ all = [
|
|||
# sentry
|
||||
"sentry-sdk",
|
||||
# opentracing
|
||||
"jaeger-client", "opentracing",
|
||||
"jaeger-client",
|
||||
"opentracing",
|
||||
# redis
|
||||
"txredisapi", "hiredis",
|
||||
"txredisapi",
|
||||
"hiredis",
|
||||
# cache-memory
|
||||
"pympler",
|
||||
# improved user search
|
||||
|
@ -388,8 +391,8 @@ build-backend = "poetry.core.masonry.api"
|
|||
skip = "cp36* cp37* pp37* *-musllinux_i686 pp*aarch64 *-musllinux_aarch64"
|
||||
|
||||
# We need a rust compiler
|
||||
before-all = "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y --profile minimal"
|
||||
environment= { PATH = "$PATH:$HOME/.cargo/bin" }
|
||||
before-all = "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y --profile minimal"
|
||||
environment = { PATH = "$PATH:$HOME/.cargo/bin" }
|
||||
|
||||
# For some reason if we don't manually clean the build directory we
|
||||
# can end up polluting the next build with a .so that is for the wrong
|
||||
|
|
|
@ -33,9 +33,12 @@ import logging
|
|||
import threading
|
||||
import typing
|
||||
import warnings
|
||||
from collections.abc import Coroutine, Generator
|
||||
from contextvars import ContextVar
|
||||
from types import TracebackType
|
||||
from typing import (
|
||||
TYPE_CHECKING,
|
||||
Any,
|
||||
Awaitable,
|
||||
Callable,
|
||||
Optional,
|
||||
|
@ -657,13 +660,14 @@ class PreserveLoggingContext:
|
|||
)
|
||||
|
||||
|
||||
_thread_local = threading.local()
|
||||
_thread_local.current_context = SENTINEL_CONTEXT
|
||||
_CURRENT_CONTEXT_VAR: ContextVar[LoggingContextOrSentinel] = ContextVar(
|
||||
"current_context", default=SENTINEL_CONTEXT
|
||||
)
|
||||
|
||||
|
||||
def current_context() -> LoggingContextOrSentinel:
|
||||
"""Get the current logging context from thread local storage"""
|
||||
return getattr(_thread_local, "current_context", SENTINEL_CONTEXT)
|
||||
return _CURRENT_CONTEXT_VAR.get()
|
||||
|
||||
|
||||
def set_current_context(context: LoggingContextOrSentinel) -> LoggingContextOrSentinel:
|
||||
|
@ -684,7 +688,7 @@ def set_current_context(context: LoggingContextOrSentinel) -> LoggingContextOrSe
|
|||
if current is not context:
|
||||
rusage = get_thread_resource_usage()
|
||||
current.stop(rusage)
|
||||
_thread_local.current_context = context
|
||||
_CURRENT_CONTEXT_VAR.set(context)
|
||||
context.start(rusage)
|
||||
|
||||
return current
|
||||
|
@ -971,3 +975,74 @@ def defer_to_threadpool(
|
|||
return f(*args, **kwargs)
|
||||
|
||||
return make_deferred_yieldable(threads.deferToThreadPool(reactor, threadpool, g))
|
||||
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
@attr.s(frozen=True, slots=True, auto_attribs=True)
|
||||
class _ResourceTracker(Generator[defer.Deferred[Any], Any, _T]):
|
||||
gen: Generator[defer.Deferred[Any], Any, _T]
|
||||
|
||||
def send(self, val: Any) -> defer.Deferred[_T]:
|
||||
try:
|
||||
return self.gen.send(val)
|
||||
finally:
|
||||
pass
|
||||
|
||||
@overload
|
||||
def throw(
|
||||
self,
|
||||
a: Type[BaseException],
|
||||
b: object = ...,
|
||||
c: Optional[TracebackType] = ...,
|
||||
/,
|
||||
) -> defer.Deferred[Any]: ...
|
||||
|
||||
@overload
|
||||
def throw(
|
||||
self, a: BaseException, v: None = ..., c: Optional[TracebackType] = ..., /
|
||||
) -> defer.Deferred[Any]: ...
|
||||
|
||||
def throw(self, a: Any, b: Any = None, c: Any = None) -> defer.Deferred[Any]:
|
||||
try:
|
||||
return self.throw(a, b, c)
|
||||
finally:
|
||||
pass
|
||||
|
||||
|
||||
@attr.s(frozen=True, slots=True, auto_attribs=True)
|
||||
class _ResourceTracker2(Coroutine[defer.Deferred[Any], Any, _T]):
|
||||
gen: Coroutine[defer.Deferred[Any], Any, _T]
|
||||
|
||||
def send(self, val: Any) -> defer.Deferred[_T]:
|
||||
try:
|
||||
return self.gen.send(val)
|
||||
finally:
|
||||
pass
|
||||
|
||||
@overload
|
||||
def throw(
|
||||
self,
|
||||
a: Type[BaseException],
|
||||
b: object = ...,
|
||||
c: Optional[TracebackType] = ...,
|
||||
/,
|
||||
) -> defer.Deferred[Any]: ...
|
||||
|
||||
@overload
|
||||
def throw(
|
||||
self, a: BaseException, v: None = ..., c: Optional[TracebackType] = ..., /
|
||||
) -> defer.Deferred[Any]: ...
|
||||
|
||||
def throw(self, a: Any, b: Any = None, c: Any = None) -> defer.Deferred[Any]:
|
||||
try:
|
||||
return self.throw(a, b, c)
|
||||
finally:
|
||||
pass
|
||||
|
||||
def __await__(self) -> Generator[defer.Deferred[Any], Any, _T]:
|
||||
return _ResourceTracker(self.gen.__await__())
|
||||
|
||||
def close(self) -> None:
|
||||
return self.gen.close()
|
||||
|
|
Loading…
Reference in a new issue