From 441b7c869e70c0bd530e99c4f157fb75e3a521fb Mon Sep 17 00:00:00 2001 From: RemiZOffAlex Date: Thu, 23 Apr 2026 20:57:07 +0300 Subject: [PATCH] Update --- README.md | 11 ++++++++ src/helpers/session/memory.py | 38 ++++++++++++++++++++++++++ src/helpers/session/session.py | 12 ++++----- src/helpers/session/store.py | 49 ++++++++++++---------------------- tests/__init__.py | 2 ++ tests/test_session.py | 23 ++++++++++++++++ 6 files changed, 97 insertions(+), 38 deletions(-) create mode 100644 src/helpers/session/memory.py create mode 100644 tests/__init__.py create mode 100644 tests/test_session.py diff --git a/README.md b/README.md index 4bba30b..118979d 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,15 @@ ## Описание +``` +export PYTHONPATH=`pwd`/src +``` + +## Тест + +``` +export PYTHONPATH=`pwd`/src +python -m unittest --verbose +``` + ## Ссылки diff --git a/src/helpers/session/memory.py b/src/helpers/session/memory.py new file mode 100644 index 0000000..8781a33 --- /dev/null +++ b/src/helpers/session/memory.py @@ -0,0 +1,38 @@ +__author__ = 'RemiZOffAlex' +__email__ = 'remizoffalex@mail.ru' + +from uuid import uuid4 +from pathlib import Path + +from helpers.session.session import Session + + +class SessionStoreMemory: + def __init__(self): + self.__values = {} + + def __contains__(self, key): + if key in self.__values: + return True + else: + return False + + def __delitem__(self, key): + del self.__values[key] + + def __getitem__(self, key): + value = self.__values[key] + return value + + def __iter__(self): + for key in self.__values: + yield key + + def create(self): + key = uuid4().hex + result = Session(self, key) + return result + + def __setitem__(self, key, value): + print('SessionStoreMemory.__setitem__', key, value) + self.__values[key] = value diff --git a/src/helpers/session/session.py b/src/helpers/session/session.py index 91e9099..8b229a0 100644 --- a/src/helpers/session/session.py +++ b/src/helpers/session/session.py @@ -5,15 +5,15 @@ from datetime import datetime class Session: - def __init__(self, store, id): + def __init__(self, store, identifier): self.__store = store - self.__id = id + self.__identifier = identifier self.__values = {} def save(self): - self.__values['session.id'] = self.__id + self.__values['session.id'] = self.__identifier self.__values['session.created_at'] = datetime.now() - self.__store[self.__id] = self.__values + self.__store[self.__identifier] = self.__values def __contains__(self, key): if key in self.__values: @@ -33,5 +33,5 @@ class Session: def __getattr__(self, name): print('Session.__getattr__', name) - if name == 'id': - return self.__id + if name == 'identifier': + return self.__identifier diff --git a/src/helpers/session/store.py b/src/helpers/session/store.py index 77b1ec2..d803698 100644 --- a/src/helpers/session/store.py +++ b/src/helpers/session/store.py @@ -2,53 +2,38 @@ __author__ = 'RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' from uuid import uuid4 -from pathlib import Path -from helpers.tree.storage import gethashtree -from helpers.yaml import yaml_read, yaml_write from helpers.session.session import Session +from helpers.session.memory import SessionStoreMemory class SessionStore: - def __init__(self, path: str = './'): - print('SessionStore.__init__') - self.__path = Path(path) - print('self.__path', self.__path) + def __init__(self): + self.__backend = SessionStoreMemory() def __contains__(self, key): - if key in self.__values: + if key in self.__backend: return True else: return False def __delitem__(self, key): - del self.__values[key] + del self.__backend[key] - def __getitem__(self, id): - segments = gethashtree(id, 3) - print(segments) - value = yaml_read(self.__path / segments / f'{id}.yml') + def __getitem__(self, key): + value = self.__backend[key] return value + def __iter__(self): + for key in self.__backend: + yield key + def create(self): - id = uuid4().hex - result = Session(self, id) + key = uuid4().hex + result = Session(self, key) return result - def __setitem__(self, id, value): - print('SessionStore.__setitem__', id, value) - segments = gethashtree(id) - directory = self.__path / segments - if not directory.exists(): - directory.mkdir(parents=True) - yaml_write(directory / f'{id}.yml', value) - - def __setattr__(self, name, value): - print('SessionStore.__setattr__', name, value) - if name == 'path': - self.__path = Path(value) - print('self.__path', self.__path) - else: - super().__setattr__(name, value) - # print('super', type(super())) - # print('SessionStore', SessionStore.__path) + def __setitem__(self, key, value): + print(self.__backend) + self.__backend[key] = value + print(self.__backend) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..18c55bb --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,2 @@ +__author__ = 'RemiZOffAlex' +__email__ = 'remizoffalex@mail.ru' diff --git a/tests/test_session.py b/tests/test_session.py new file mode 100644 index 0000000..4d3202e --- /dev/null +++ b/tests/test_session.py @@ -0,0 +1,23 @@ +__author__ = 'RemiZOffAlex' +__email__ = 'remizoffalex@mail.ru' + +import unittest + +from helpers.session.store import SessionStore + + +class TestSession(unittest.TestCase): + def test_session(self): + sessions = SessionStore() + session = sessions.create() + identifier = session.identifier + for key in sessions: + print(sessions[key]) + session.save() + print('saved') + for key in sessions: + print(sessions[key]) + print('\n') + print('session', session) + session = sessions[identifier] + print('session', session)