ErisPulse 2.5.2.dev2__tar.gz → 2.5.2.dev3__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.
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/PKG-INFO +1 -1
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/pyproject.toml +1 -1
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/adapter.py +33 -6
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/adapter.pyi +10 -2
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/module.py +34 -7
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/module.pyi +10 -2
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/storage.py +23 -8
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/bases/loader.py +3 -1
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/.gitignore +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/LICENSE +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/README.md +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/cli.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/cli.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/create.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/create.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/init.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/install.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/install.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/language.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/language.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/list.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/list.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/run.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/run.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/self_update.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/console.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/en.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/ja.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/ru.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/zh_cn.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/zh_tw.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/registry.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/display.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/display.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/file_watcher.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/file_watcher.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/adapter.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/adapter.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/client.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/client.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/errors.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/errors.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/router.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/router.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/storage.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/websocket.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Bases/websocket.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/base.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/base.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/command.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/command.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/wrapper.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/client.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/client.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/config.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/constants.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/constants.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/constants.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/constants.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/en.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/ja.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/ru.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/zh_cn.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/zh_tw.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/lifecycle.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/logger.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/logger.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/router.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/router.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/Core/storage.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/bases/finder.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/adapter.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/adapter.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/module.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/strict.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/loaders/strict.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/config_schema.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/config_schema.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/context.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/context.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/exceptions.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/frame_config.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/runtime/frame_config.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/sdk.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/sdk.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/web_status/4xx.png +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/web_status/5xx.png +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/web_status/__init__.py +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/web_status/__init__.pyi +0 -0
- {erispulse-2.5.2.dev2 → erispulse-2.5.2.dev3}/src/ErisPulse/web_status/unknow.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.5.2.
|
|
3
|
+
Version: 2.5.2.dev3
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
5
|
Project-URL: Homepage, https://github.com/ErisPulse/ErisPulse
|
|
6
6
|
Project-URL: Documentation, https://www.erisdev.com#docs
|
|
@@ -701,12 +701,12 @@ class AdapterManager(ManagerBase):
|
|
|
701
701
|
|
|
702
702
|
# ==================== 适配器配置管理 ====================
|
|
703
703
|
|
|
704
|
-
def _config_register(self, platform: str, enabled: bool =
|
|
704
|
+
def _config_register(self, platform: str, enabled: bool = True) -> bool:
|
|
705
705
|
"""
|
|
706
706
|
注册新平台适配器(仅当平台不存在时注册)
|
|
707
707
|
|
|
708
708
|
:param platform: 平台名称
|
|
709
|
-
:param enabled: [bool] 是否启用适配器
|
|
709
|
+
:param enabled: [bool] 是否启用适配器 (默认: True,新适配器默认启用)
|
|
710
710
|
:return: [bool] 操作是否成功
|
|
711
711
|
"""
|
|
712
712
|
existing = config.getConfig(CONFIG_KEY_ADAPTER_STATUS_OF.format(platform))
|
|
@@ -745,16 +745,17 @@ class AdapterManager(ManagerBase):
|
|
|
745
745
|
1. 适配器在配置文件中(ErisPulse.adapters.status.{platform} 存在)
|
|
746
746
|
2. 配置值为启用状态
|
|
747
747
|
|
|
748
|
-
|
|
748
|
+
如果适配器未在配置中,默认启用并自动写入配置
|
|
749
749
|
{!--< /tips >!--}
|
|
750
750
|
"""
|
|
751
751
|
from .config import parse_bool_config
|
|
752
752
|
|
|
753
753
|
status = config.getConfig(CONFIG_KEY_ADAPTER_STATUS_OF.format(platform))
|
|
754
754
|
|
|
755
|
-
#
|
|
755
|
+
# 适配器未在配置中,默认启用并写入配置
|
|
756
756
|
if status is None:
|
|
757
|
-
|
|
757
|
+
config.setConfig(CONFIG_KEY_ADAPTER_STATUS_OF.format(platform), True)
|
|
758
|
+
return True
|
|
758
759
|
|
|
759
760
|
return parse_bool_config(status)
|
|
760
761
|
|
|
@@ -825,9 +826,16 @@ class AdapterManager(ManagerBase):
|
|
|
825
826
|
"""
|
|
826
827
|
列出所有平台适配器状态
|
|
827
828
|
|
|
829
|
+
合并配置项与已注册适配器,确保禁用适配器也可见。
|
|
830
|
+
|
|
828
831
|
:return: {平台名: 是否启用} 字典
|
|
829
832
|
"""
|
|
830
|
-
|
|
833
|
+
items = dict(config.getConfig(CONFIG_KEY_ADAPTER_STATUS, {}))
|
|
834
|
+
# 补充已在管理器中注册但配置中不存在的适配器
|
|
835
|
+
for platform in self._adapters:
|
|
836
|
+
if platform not in items:
|
|
837
|
+
items[platform] = self.is_enabled(platform)
|
|
838
|
+
return items
|
|
831
839
|
|
|
832
840
|
# 兼容性方法 - 保持向后兼容
|
|
833
841
|
def list_adapters(self) -> dict[str, bool]:
|
|
@@ -1387,6 +1395,7 @@ class AdapterManager(ManagerBase):
|
|
|
1387
1395
|
获取适配器与Bot的完整状态摘要
|
|
1388
1396
|
|
|
1389
1397
|
返回所有适配器的运行状态及各适配器下的Bot状态,便于WebUI展示。
|
|
1398
|
+
包含已禁用适配器以便于管理。
|
|
1390
1399
|
|
|
1391
1400
|
:return: 状态摘要字典
|
|
1392
1401
|
|
|
@@ -1403,10 +1412,17 @@ class AdapterManager(ManagerBase):
|
|
|
1403
1412
|
>>> # "info": {"nickname": "MyBot"}
|
|
1404
1413
|
>>> # }
|
|
1405
1414
|
>>> # }
|
|
1415
|
+
>>> # },
|
|
1416
|
+
>>> # "disabled_platform": {
|
|
1417
|
+
>>> # "status": "disabled",
|
|
1418
|
+
>>> # "enabled": False,
|
|
1419
|
+
>>> # "bots": {}
|
|
1406
1420
|
>>> # }
|
|
1407
1421
|
>>> # }
|
|
1408
1422
|
>>> # }
|
|
1409
1423
|
"""
|
|
1424
|
+
from .config import parse_bool_config
|
|
1425
|
+
|
|
1410
1426
|
adapters_summary = {}
|
|
1411
1427
|
for platform_name in self._adapters:
|
|
1412
1428
|
adapter_instance = self._adapters[platform_name]
|
|
@@ -1417,9 +1433,20 @@ class AdapterManager(ManagerBase):
|
|
|
1417
1433
|
|
|
1418
1434
|
adapters_summary[platform_name] = {
|
|
1419
1435
|
"status": adapter_status,
|
|
1436
|
+
"enabled": self.is_enabled(platform_name),
|
|
1420
1437
|
"bots": dict(self._bots.get(platform_name, {})),
|
|
1421
1438
|
}
|
|
1422
1439
|
|
|
1440
|
+
# 补充配置中存在但未注册的适配器(被禁用的适配器),方便管理界面显示并开启
|
|
1441
|
+
config_status = config.getConfig(CONFIG_KEY_ADAPTER_STATUS, {})
|
|
1442
|
+
for platform_name in config_status:
|
|
1443
|
+
if platform_name not in adapters_summary:
|
|
1444
|
+
adapters_summary[platform_name] = {
|
|
1445
|
+
"status": "disabled",
|
|
1446
|
+
"enabled": parse_bool_config(config_status[platform_name]),
|
|
1447
|
+
"bots": {},
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1423
1450
|
return {"adapters": adapters_summary}
|
|
1424
1451
|
|
|
1425
1452
|
# ==================== 工具方法 ====================
|
|
@@ -119,7 +119,7 @@ class AdapterManager(ManagerBase):
|
|
|
119
119
|
注册新平台适配器(仅当平台不存在时注册)
|
|
120
120
|
|
|
121
121
|
:param platform: 平台名称
|
|
122
|
-
:param enabled: [bool] 是否启用适配器
|
|
122
|
+
:param enabled: [bool] 是否启用适配器 (默认: True,新适配器默认启用)
|
|
123
123
|
:return: [bool] 操作是否成功
|
|
124
124
|
"""
|
|
125
125
|
...
|
|
@@ -143,7 +143,7 @@ class AdapterManager(ManagerBase):
|
|
|
143
143
|
1. 适配器在配置文件中(ErisPulse.adapters.status.{platform} 存在)
|
|
144
144
|
2. 配置值为启用状态
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
如果适配器未在配置中,默认启用并自动写入配置
|
|
147
147
|
{!--< /tips >!--}
|
|
148
148
|
"""
|
|
149
149
|
...
|
|
@@ -174,6 +174,8 @@ class AdapterManager(ManagerBase):
|
|
|
174
174
|
"""
|
|
175
175
|
列出所有平台适配器状态
|
|
176
176
|
|
|
177
|
+
合并配置项与已注册适配器,确保禁用适配器也可见。
|
|
178
|
+
|
|
177
179
|
:return: {平台名: 是否启用} 字典
|
|
178
180
|
"""
|
|
179
181
|
...
|
|
@@ -298,6 +300,7 @@ class AdapterManager(ManagerBase):
|
|
|
298
300
|
获取适配器与Bot的完整状态摘要
|
|
299
301
|
|
|
300
302
|
返回所有适配器的运行状态及各适配器下的Bot状态,便于WebUI展示。
|
|
303
|
+
包含已禁用适配器以便于管理。
|
|
301
304
|
|
|
302
305
|
:return: 状态摘要字典
|
|
303
306
|
|
|
@@ -314,6 +317,11 @@ class AdapterManager(ManagerBase):
|
|
|
314
317
|
>>> # "info": {"nickname": "MyBot"}
|
|
315
318
|
>>> # }
|
|
316
319
|
>>> # }
|
|
320
|
+
>>> # },
|
|
321
|
+
>>> # "disabled_platform": {
|
|
322
|
+
>>> # "status": "disabled",
|
|
323
|
+
>>> # "enabled": False,
|
|
324
|
+
>>> # "bots": {}
|
|
317
325
|
>>> # }
|
|
318
326
|
>>> # }
|
|
319
327
|
>>> # }
|
|
@@ -451,7 +451,7 @@ class ModuleManager(ManagerBase):
|
|
|
451
451
|
|
|
452
452
|
# ==================== 模块配置管理 ====================
|
|
453
453
|
|
|
454
|
-
def _config_register(self, module_name: str, enabled: bool =
|
|
454
|
+
def _config_register(self, module_name: str, enabled: bool = True) -> bool:
|
|
455
455
|
"""
|
|
456
456
|
注册新模块信息
|
|
457
457
|
|
|
@@ -459,7 +459,7 @@ class ModuleManager(ManagerBase):
|
|
|
459
459
|
此方法仅供内部使用
|
|
460
460
|
|
|
461
461
|
:param module_name: 模块名称
|
|
462
|
-
:param enabled: 是否启用模块 (默认:
|
|
462
|
+
:param enabled: 是否启用模块 (默认: True,新模块默认启用)
|
|
463
463
|
:return: 操作是否成功
|
|
464
464
|
"""
|
|
465
465
|
existing = config.getConfig(CONFIG_KEY_MODULE_STATUS_OF.format(module_name))
|
|
@@ -490,16 +490,17 @@ class ModuleManager(ManagerBase):
|
|
|
490
490
|
1. 模块在配置文件中(ErisPulse.modules.status.{module_name} 存在)
|
|
491
491
|
2. 配置值为启用状态
|
|
492
492
|
|
|
493
|
-
|
|
493
|
+
如果模块未在配置中,默认启用并自动写入配置
|
|
494
494
|
{!--< /tips >!--}
|
|
495
495
|
"""
|
|
496
496
|
from .config import parse_bool_config
|
|
497
497
|
|
|
498
498
|
status = config.getConfig(CONFIG_KEY_MODULE_STATUS_OF.format(module_name))
|
|
499
499
|
|
|
500
|
-
#
|
|
500
|
+
# 模块未在配置中,默认启用并写入配置
|
|
501
501
|
if status is None:
|
|
502
|
-
|
|
502
|
+
config.setConfig(CONFIG_KEY_MODULE_STATUS_OF.format(module_name), True)
|
|
503
|
+
return True
|
|
503
504
|
|
|
504
505
|
# 解析配置值
|
|
505
506
|
return parse_bool_config(status)
|
|
@@ -641,9 +642,16 @@ class ModuleManager(ManagerBase):
|
|
|
641
642
|
"""
|
|
642
643
|
列出所有模块状态
|
|
643
644
|
|
|
645
|
+
合并配置项与已注册模块,确保禁用模块也可见。
|
|
646
|
+
|
|
644
647
|
:return: [dict[str, bool]] {模块名: 是否启用} 字典
|
|
645
648
|
"""
|
|
646
|
-
|
|
649
|
+
items = dict(config.getConfig(CONFIG_KEY_MODULES_STATUS, {}))
|
|
650
|
+
# 补充已在管理器中注册但配置中不存在的模块
|
|
651
|
+
for name in self._module_classes:
|
|
652
|
+
if name not in items:
|
|
653
|
+
items[name] = self.is_enabled(name)
|
|
654
|
+
return items
|
|
647
655
|
|
|
648
656
|
def get_info(self, module_name: str) -> dict | None:
|
|
649
657
|
"""
|
|
@@ -661,7 +669,8 @@ class ModuleManager(ManagerBase):
|
|
|
661
669
|
"""
|
|
662
670
|
获取模块的完整状态摘要
|
|
663
671
|
|
|
664
|
-
便于WebUI
|
|
672
|
+
便于WebUI展示所有模块的注册、加载和启用状态,
|
|
673
|
+
包含已禁用模块以便于管理。
|
|
665
674
|
|
|
666
675
|
:return: 状态摘要字典
|
|
667
676
|
|
|
@@ -673,10 +682,17 @@ class ModuleManager(ManagerBase):
|
|
|
673
682
|
>>> # "status": "loaded",
|
|
674
683
|
>>> # "enabled": True,
|
|
675
684
|
>>> # "is_base_module": True
|
|
685
|
+
>>> # },
|
|
686
|
+
>>> # "DisabledModule": {
|
|
687
|
+
>>> # "status": "disabled",
|
|
688
|
+
>>> # "enabled": False,
|
|
689
|
+
>>> # "is_base_module": None
|
|
676
690
|
>>> # }
|
|
677
691
|
>>> # }
|
|
678
692
|
>>> # }
|
|
679
693
|
"""
|
|
694
|
+
from .config import parse_bool_config
|
|
695
|
+
|
|
680
696
|
modules_summary = {}
|
|
681
697
|
for name in self._module_classes:
|
|
682
698
|
module_class = self._module_classes[name]
|
|
@@ -685,6 +701,17 @@ class ModuleManager(ManagerBase):
|
|
|
685
701
|
"enabled": self.is_enabled(name),
|
|
686
702
|
"is_base_module": self._is_subclass(module_class, BaseModule),
|
|
687
703
|
}
|
|
704
|
+
|
|
705
|
+
# 补充配置中存在但未加载的模块(被禁用的模块),方便管理界面显示并开启
|
|
706
|
+
config_status = config.getConfig(CONFIG_KEY_MODULES_STATUS, {})
|
|
707
|
+
for name in config_status:
|
|
708
|
+
if name not in modules_summary:
|
|
709
|
+
modules_summary[name] = {
|
|
710
|
+
"status": "disabled",
|
|
711
|
+
"enabled": parse_bool_config(config_status[name]),
|
|
712
|
+
"is_base_module": None,
|
|
713
|
+
}
|
|
714
|
+
|
|
688
715
|
return {"modules": modules_summary}
|
|
689
716
|
|
|
690
717
|
# 兼容性方法 - 保持向后兼容
|
|
@@ -174,7 +174,7 @@ class ModuleManager(ManagerBase):
|
|
|
174
174
|
1. 模块在配置文件中(ErisPulse.modules.status.{module_name} 存在)
|
|
175
175
|
2. 配置值为启用状态
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
如果模块未在配置中,默认启用并自动写入配置
|
|
178
178
|
{!--< /tips >!--}
|
|
179
179
|
"""
|
|
180
180
|
...
|
|
@@ -198,6 +198,8 @@ class ModuleManager(ManagerBase):
|
|
|
198
198
|
"""
|
|
199
199
|
列出所有模块状态
|
|
200
200
|
|
|
201
|
+
合并配置项与已注册模块,确保禁用模块也可见。
|
|
202
|
+
|
|
201
203
|
:return: [dict[str, bool]] {模块名: 是否启用} 字典
|
|
202
204
|
"""
|
|
203
205
|
...
|
|
@@ -216,7 +218,8 @@ class ModuleManager(ManagerBase):
|
|
|
216
218
|
"""
|
|
217
219
|
获取模块的完整状态摘要
|
|
218
220
|
|
|
219
|
-
便于WebUI
|
|
221
|
+
便于WebUI展示所有模块的注册、加载和启用状态,
|
|
222
|
+
包含已禁用模块以便于管理。
|
|
220
223
|
|
|
221
224
|
:return: 状态摘要字典
|
|
222
225
|
|
|
@@ -228,6 +231,11 @@ class ModuleManager(ManagerBase):
|
|
|
228
231
|
>>> # "status": "loaded",
|
|
229
232
|
>>> # "enabled": True,
|
|
230
233
|
>>> # "is_base_module": True
|
|
234
|
+
>>> # },
|
|
235
|
+
>>> # "DisabledModule": {
|
|
236
|
+
>>> # "status": "disabled",
|
|
237
|
+
>>> # "enabled": False,
|
|
238
|
+
>>> # "is_base_module": None
|
|
231
239
|
>>> # }
|
|
232
240
|
>>> # }
|
|
233
241
|
>>> # }
|
|
@@ -517,6 +517,24 @@ class StorageManager(BaseStorage):
|
|
|
517
517
|
):
|
|
518
518
|
conn.commit()
|
|
519
519
|
|
|
520
|
+
def _open_connection(self) -> sqlite3.Connection:
|
|
521
|
+
"""
|
|
522
|
+
{!--< internal-use >!--}
|
|
523
|
+
打开一个新的 SQLite 连接并应用标准 PRAGMA
|
|
524
|
+
|
|
525
|
+
- journal_mode=WAL:持久化在数据库文件头,重复设置无副作用
|
|
526
|
+
- synchronous=NORMAL:per-connection 设置,必须在每个新连接上重新应用。
|
|
527
|
+
此前仅在 _init_db 的临时连接上设置过一次,而该 PRAGMA 不跨连接持久化,
|
|
528
|
+
导致事务外的 get/set 等高频操作实际回落到默认的 synchronous=FULL
|
|
529
|
+
(每次 commit 都触发 fsync),与文档宣称的 WAL+NORMAL 提速不符。
|
|
530
|
+
|
|
531
|
+
:return: 已应用标准 PRAGMA 的 sqlite3.Connection
|
|
532
|
+
"""
|
|
533
|
+
conn = sqlite3.connect(self.db_path)
|
|
534
|
+
conn.execute(SQLITE_JOURNAL_MODE)
|
|
535
|
+
conn.execute(SQLITE_SYNCHRONOUS_MODE)
|
|
536
|
+
return conn
|
|
537
|
+
|
|
520
538
|
@contextmanager
|
|
521
539
|
def _get_connection(self) -> sqlite3.Connection: # type: ignore
|
|
522
540
|
"""
|
|
@@ -524,7 +542,7 @@ class StorageManager(BaseStorage):
|
|
|
524
542
|
获取数据库连接(支持事务)
|
|
525
543
|
|
|
526
544
|
如果在事务中,返回事务的连接
|
|
527
|
-
|
|
545
|
+
否则新建一个应用了标准 PRAGMA 的短生命周期连接
|
|
528
546
|
|
|
529
547
|
:return: sqlite3.Connection 数据库连接
|
|
530
548
|
"""
|
|
@@ -536,7 +554,7 @@ class StorageManager(BaseStorage):
|
|
|
536
554
|
conn = self._local.transaction_conn
|
|
537
555
|
should_close = False
|
|
538
556
|
else:
|
|
539
|
-
conn =
|
|
557
|
+
conn = self._open_connection()
|
|
540
558
|
should_close = True
|
|
541
559
|
|
|
542
560
|
try:
|
|
@@ -574,11 +592,8 @@ class StorageManager(BaseStorage):
|
|
|
574
592
|
pass # 如果无法创建目录,则继续尝试连接数据库
|
|
575
593
|
|
|
576
594
|
try:
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
# 启用WAL模式提高并发性能
|
|
580
|
-
conn.execute(SQLITE_JOURNAL_MODE)
|
|
581
|
-
conn.execute(SQLITE_SYNCHRONOUS_MODE)
|
|
595
|
+
# 连接创建统一走 _open_connection,确保 WAL/synchronous PRAGMA 一致应用
|
|
596
|
+
conn = self._open_connection()
|
|
582
597
|
|
|
583
598
|
cursor = conn.cursor()
|
|
584
599
|
cursor.execute("""
|
|
@@ -1195,7 +1210,7 @@ class StorageManager(BaseStorage):
|
|
|
1195
1210
|
|
|
1196
1211
|
:return: 事务对象
|
|
1197
1212
|
"""
|
|
1198
|
-
self.conn =
|
|
1213
|
+
self.conn = self.storage_manager._open_connection()
|
|
1199
1214
|
self.cursor = self.conn.cursor()
|
|
1200
1215
|
self.cursor.execute("BEGIN TRANSACTION")
|
|
1201
1216
|
# 将连接存储到线程本地存储,供其他方法复用
|
|
@@ -181,13 +181,15 @@ class BaseLoader(ABC):
|
|
|
181
181
|
|
|
182
182
|
{!--< internal-use >!--}
|
|
183
183
|
内部方法,用于获取配置状态
|
|
184
|
+
默认情况下(无配置),返回 True(启用)并写入配置
|
|
184
185
|
{!--< /internal-use >!--}
|
|
185
186
|
"""
|
|
186
187
|
config_key = f"{self._config_prefix}.status.{name}"
|
|
187
188
|
status = config.getConfig(config_key)
|
|
188
189
|
|
|
189
190
|
if status is None:
|
|
190
|
-
|
|
191
|
+
config.setConfig(config_key, True)
|
|
192
|
+
return True
|
|
191
193
|
|
|
192
194
|
if isinstance(status, str):
|
|
193
195
|
return status.lower() not in ("false", "0", "no", "off")
|
|
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
|
|
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
|