Skip to content

Commit

Permalink
- Updated dependencies versions.
Browse files Browse the repository at this point in the history
- Fixed code style.
  • Loading branch information
Cykooz committed Jun 13, 2024
1 parent cb90f5d commit 1ef9c1d
Show file tree
Hide file tree
Showing 18 changed files with 146 additions and 102 deletions.
14 changes: 7 additions & 7 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
flake8<6.0.0
pytest==7.3.1
pytest-aiohttp==1.0.4
pytest-mock==3.10.0
pytest-timeout==2.1.0
aiohttp==3.8.4
twine==4.0.2
flake8==7.0.0
pytest==8.2.2
pytest-aiohttp==1.0.5
pytest-mock==3.14.0
pytest-timeout==2.3.1
aiohttp==3.9.5
twine==5.1.0
-e .[test]
4 changes: 2 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ max-line-length = 88

[tool:pytest]
timeout = 3
filterwarnings=
error
#filterwarnings=
# error
asyncio_mode = auto
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def read(f):
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Internet :: WWW/HTTP",
"Framework :: AsyncIO",
Expand All @@ -55,7 +56,7 @@ def read(f):
"pytest-mock",
"pytest-timeout",
"cykooz.testing",
'aiohttp_cors',
"aiohttp_cors",
],
},
include_package_data=True,
Expand Down
5 changes: 3 additions & 2 deletions sockjs/protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ class SessionState(enum.Enum):
try:
import ujson as json


kwargs = {} # pragma: no cover
except ImportError: # pragma: no cover

def dthandler(obj):
if isinstance(obj, datetime):
now = obj.timetuple()
Expand All @@ -55,7 +55,6 @@ def dthandler(obj):
now[5],
)


kwargs = {"default": dthandler, "separators": (",", ":")}

# Faster
Expand All @@ -69,6 +68,7 @@ def dthandler(obj):
# Frames
# ------


@enum.unique
class Frame(enum.Enum):
OPEN = "o"
Expand Down Expand Up @@ -123,6 +123,7 @@ def messages_frame(messages):
# Handler messages
# ---------------------


@enum.unique
class MsgType(enum.Enum):
OPEN = 1
Expand Down
62 changes: 30 additions & 32 deletions sockjs/route.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,26 +36,25 @@ def _gen_endpoint_name():


def add_endpoint(
app: web.Application,
handler: HandlerType,
*,
name="",
prefix="/sockjs",
manager=None,
disable_transports=(),
sockjs_cdn="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js", # noqa
cookie_needed=True,
cors_config: Optional[CorsConfig] = None,
heartbeat_delay=25,
disconnect_delay=5,
debug=False,
app: web.Application,
handler: HandlerType,
*,
name="",
prefix="/sockjs",
manager=None,
disable_transports=(),
sockjs_cdn="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js", # noqa
cookie_needed=True,
cors_config: Optional[CorsConfig] = None,
heartbeat_delay=25,
disconnect_delay=5,
debug=False,
) -> List[web.AbstractRoute]:
registered_routes = []

assert callable(handler), handler
if (
not asyncio.iscoroutinefunction(handler)
and not inspect.isgeneratorfunction(handler)
if not asyncio.iscoroutinefunction(handler) and not inspect.isgeneratorfunction(
handler
):
sync_handler = handler

Expand Down Expand Up @@ -109,8 +108,7 @@ async def handler(m, s, msg):
)

resource = router.add_resource(
"%s/{server}/{session}/{transport}" % prefix,
name=f"sockjs-transport-{name}"
"%s/{server}/{session}/{transport}" % prefix, name=f"sockjs-transport-{name}"
)
for method in ALL_METH_WO_OPTIONS:
registered_routes.append(
Expand All @@ -124,7 +122,10 @@ async def handler(m, s, msg):
route_name = "sockjs-websocket-%s" % name
registered_routes.append(
router.add_route(
hdrs.METH_GET, "%s/websocket" % prefix, route.websocket, name=route_name
hdrs.METH_GET,
"%s/websocket" % prefix,
route.websocket,
name=route_name,
)
)

Expand All @@ -150,7 +151,7 @@ async def handler(m, s, msg):
hdrs.METH_GET,
"%s/iframe{version}.html" % prefix,
route.iframe,
name=route_name
name=route_name,
)
)

Expand All @@ -166,13 +167,13 @@ async def handler(m, s, msg):

class SockJSRoute:
def __init__(
self,
name: str,
manager: SessionManager,
sockjs_cdn: str,
handlers,
disable_transports: Iterable[str],
cookie_needed=True,
self,
name: str,
manager: SessionManager,
sockjs_cdn: str,
handlers,
disable_transports: Iterable[str],
cookie_needed=True,
):
self.name = name
self.manager = manager
Expand All @@ -182,13 +183,10 @@ def __init__(
self.iframe_html = (IFRAME_HTML % sockjs_cdn).encode("utf-8")
self.iframe_html_hxd = hashlib.md5(self.iframe_html).hexdigest()
transport_names = {
transport_class.name
for transport_class in transport_handlers.values()
transport_class.name for transport_class in transport_handlers.values()
}
transport_names.add("websocket-raw")
self._transport_names = sorted(
transport_names - self.disable_transports
)
self._transport_names = sorted(transport_names - self.disable_transports)

async def handler(self, request: Request):
info = request.match_info
Expand Down
36 changes: 14 additions & 22 deletions sockjs/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,7 @@ class Session:
_hb_task = None

def __init__(
self,
session_id: str,
*,
heartbeat_delay=25,
disconnect_delay=5,
debug=False
self, session_id: str, *, heartbeat_delay=25, disconnect_delay=5, debug=False,
):
self.id = session_id
self.heartbeat_delay = heartbeat_delay
Expand Down Expand Up @@ -243,13 +238,13 @@ class SessionManager:
_gc_task = None

def __init__(
self,
name: str,
app: web.Application,
handler: HandlerType,
heartbeat_delay=25,
disconnect_delay=5,
debug=False,
self,
name: str,
app: web.Application,
handler: HandlerType,
heartbeat_delay=25,
disconnect_delay=5,
debug=False,
):
self.name = name
self.route_name = "sockjs-url-%s" % name
Expand Down Expand Up @@ -301,10 +296,7 @@ async def _gc_sessions_task(self):
async def _gc_expired_sessions(self):
sessions = self.sessions
if sessions:
tasks = [
self._check_expiration(session)
for session in sessions.values()
]
tasks = [self._check_expiration(session) for session in sessions.values()]
expired_session_ids = await asyncio.gather(*tasks)

idx = 0
Expand All @@ -321,13 +313,13 @@ def _add(self, session: Session):
self.sessions[session.id] = session
return session

_T = TypeVar('_T')
_T = TypeVar("_T")

def get(
self,
session_id,
create=False,
default: _T = _marker,
self,
session_id,
create=False,
default: _T = _marker,
) -> Union[Session, _T]:
session = self.sessions.get(session_id, None)
if session is None:
Expand Down
8 changes: 4 additions & 4 deletions sockjs/transports/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ def get_session(cls, manager: SessionManager, session_id: str) -> Session:
return manager.get(session_id, create=cls.create_session)

def __init__(
self,
manager: SessionManager,
session: Session,
request: web.Request,
self,
manager: SessionManager,
session: Session,
request: web.Request,
):
self.manager = manager
self.session = session
Expand Down
3 changes: 2 additions & 1 deletion sockjs/transports/eventsource.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
""" iframe-eventsource transport """
"""iframe-eventsource transport"""

from aiohttp import hdrs, web
from multidict import MultiDict

Expand Down
3 changes: 2 additions & 1 deletion sockjs/transports/htmlfile.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
""" iframe-htmlfile transport """
"""iframe-htmlfile transport"""

import re

from aiohttp import hdrs, web
Expand Down
1 change: 1 addition & 0 deletions sockjs/transports/jsonp.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""jsonp transport"""

import re
from urllib.parse import unquote_plus

Expand Down
1 change: 1 addition & 0 deletions sockjs/transports/rawwebsocket.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""raw websocket transport."""

import asyncio
from asyncio import ensure_future
from typing import Optional
Expand Down
1 change: 1 addition & 0 deletions sockjs/transports/websocket.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""websocket transport"""

import asyncio
import logging
from asyncio import ensure_future
Expand Down
1 change: 1 addition & 0 deletions sockjs/transports/xhr_pooling.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
class XHRTransport(StreamingTransport):
"""Long polling derivative transports,
used for XHRPolling and JSONPolling."""

name = "xhr-polling"
create_session = True
maxsize = 0
Expand Down
29 changes: 15 additions & 14 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,7 @@ def maker(method, path, query_params=None, headers=None, match_info=None):
@pytest.fixture
def make_session(make_handler, make_request):
def maker(
name="test",
disconnect_delay=10,
manager: Optional[SessionManager] = None
name="test", disconnect_delay=10, manager: Optional[SessionManager] = None
):
session = Session(name, disconnect_delay=disconnect_delay, debug=True)
if manager:
Expand All @@ -108,7 +106,7 @@ def maker(


@pytest.fixture
async def make_manager(event_loop, app, make_handler, make_session):
async def make_manager(app, make_handler, make_session):
managers = []

def maker(handler=None):
Expand All @@ -134,22 +132,25 @@ def maker(handlers=transports.transport_handlers):
return maker


@pytest.fixture(name='test_client')
@pytest.fixture(name="test_client")
async def test_client_fixture(app, aiohttp_client, make_handler) -> TestClient:
handler = make_handler(None)
# Configure default CORS settings.
cors = aiohttp_cors.setup(app, defaults={
'*': aiohttp_cors.ResourceOptions(
allow_credentials=True,
expose_headers='*',
allow_headers='*',
max_age=31536000,
)
})
cors = aiohttp_cors.setup(
app,
defaults={
"*": aiohttp_cors.ResourceOptions(
allow_credentials=True,
expose_headers="*",
allow_headers="*",
max_age=31536000,
)
},
)
add_endpoint(
app,
handler,
name='main',
name="main",
cors_config=cors,
)
return await aiohttp_client(app)
Loading

0 comments on commit 1ef9c1d

Please sign in to comment.