mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 23:37:18 +00:00
docs: architecture doc update
This commit is contained in:
parent
6a3c16a646
commit
88090277d1
@ -8,7 +8,8 @@ Packages have strict rules of importing:
|
|||||||
|
|
||||||
* ``ahriman.application`` package must not be used outside of this package.
|
* ``ahriman.application`` package must not be used outside of this package.
|
||||||
* ``ahriman.core`` and ``ahriman.models`` packages don't have any import restriction. Actually we would like to totally restrict importing of ``core`` package from ``models``, but it is impossible at the moment.
|
* ``ahriman.core`` and ``ahriman.models`` packages don't have any import restriction. Actually we would like to totally restrict importing of ``core`` package from ``models``, but it is impossible at the moment.
|
||||||
* ``ahriman.web`` package is allowed to be imported from ``ahriman.application`` (web handler only, only ``ahriman.web.web`` methods). It also must not be imported globally, only local import is allowed.
|
* ``ahriman.web`` package is allowed to be imported from ``ahriman.application`` (web handler only, only ``ahriman.web.web`` methods).
|
||||||
|
* The idea remains the same for all imports, if an package requires some specific dependencies, it must be imported locally to keep dependencies optional.
|
||||||
|
|
||||||
Full dependency diagram:
|
Full dependency diagram:
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ Full dependency diagram:
|
|||||||
``ahriman.application`` package
|
``ahriman.application`` package
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This package contains application (aka executable) related classes and everything for it. It also contains package called ``ahriman.application.handlers`` in which all available subcommands are described as separated classes derived from the base ``ahriman.application.handlers.handler.Handler`` class.
|
This package contains application (aka executable) related classes and everything for it. It also contains package called ``ahriman.application.handlers`` in which all available subcommands are described as separated classes derived from the base ``ahriman.application.handlers.handler.Handler`` class. Those classes are being loaded dynamically through the lookup of the ``ahriman.application.handlers`` package.
|
||||||
|
|
||||||
``ahriman.application.application.Application`` (god class) is used for any interaction from parsers with repository. It is divided into multiple traits by functions (package related and repository related) in the same package.
|
``ahriman.application.application.Application`` (god class) is used for any interaction from parsers with repository. It is divided into multiple traits by functions (package related and repository related) in the same package.
|
||||||
|
|
||||||
@ -32,9 +33,9 @@ This package contains application (aka executable) related classes and everythin
|
|||||||
This package contains everything required for the most of application actions and it is separated into several packages:
|
This package contains everything required for the most of application actions and it is separated into several packages:
|
||||||
|
|
||||||
* ``ahriman.core.alpm`` package controls pacman related functions. It provides wrappers for ``pyalpm`` library and safe calls for repository tools (``repo-add`` and ``repo-remove``). Also this package contains ``ahriman.core.alpm.remote`` package which provides wrapper for remote sources (e.g. AUR RPC and official repositories RPC) and some other helpers.
|
* ``ahriman.core.alpm`` package controls pacman related functions. It provides wrappers for ``pyalpm`` library and safe calls for repository tools (``repo-add`` and ``repo-remove``). Also this package contains ``ahriman.core.alpm.remote`` package which provides wrapper for remote sources (e.g. AUR RPC and official repositories RPC) and some other helpers.
|
||||||
* ``ahriman.core.auth`` package provides classes for authorization methods used by web mostly. Base class is ``ahriman.core.auth.Auth`` which must be instantiated by ``load`` method.
|
* ``ahriman.core.auth`` package provides classes for authorization methods used by web mostly. Base class is ``ahriman.core.auth.Auth`` which must be instantiated by ``load`` method. This package is only required by the ``ahriman.web`` package.
|
||||||
* ``ahriman.core.build_tools`` is a package which provides wrapper for ``devtools`` commands.
|
* ``ahriman.core.build_tools`` is a package which provides wrapper for ``devtools`` commands.
|
||||||
* ``ahriman.core.configuration`` contains extension for standard ``configparser`` library and some validation related classes.
|
* ``ahriman.core.configuration`` contains extensions for standard ``configparser`` module and some validation related classes.
|
||||||
* ``ahriman.core.database`` is everything for database, including data and schema migrations.
|
* ``ahriman.core.database`` is everything for database, including data and schema migrations.
|
||||||
* ``ahriman.core.distributed`` package with triggers and helpers for distributed build system.
|
* ``ahriman.core.distributed`` package with triggers and helpers for distributed build system.
|
||||||
* ``ahriman.core.formatters`` package provides ``Printer`` sub-classes for printing data (e.g. package properties) to stdout which are used by some handlers.
|
* ``ahriman.core.formatters`` package provides ``Printer`` sub-classes for printing data (e.g. package properties) to stdout which are used by some handlers.
|
||||||
@ -56,6 +57,7 @@ This package also provides some generic functions and classes which may be used
|
|||||||
* ``ahriman.core.spawn.Spawn`` is a tool which can spawn another ``ahriman`` process. This feature is used by web application.
|
* ``ahriman.core.spawn.Spawn`` is a tool which can spawn another ``ahriman`` process. This feature is used by web application.
|
||||||
* ``ahriman.core.tree`` is a dependency tree implementation.
|
* ``ahriman.core.tree`` is a dependency tree implementation.
|
||||||
* ``ahriman.core.types`` are an additional global types for mypy checks.
|
* ``ahriman.core.types`` are an additional global types for mypy checks.
|
||||||
|
* ``ahriman.core.utils`` contains some useful functions which are not the part of any other class.
|
||||||
|
|
||||||
``ahriman.models`` package
|
``ahriman.models`` package
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
@ -69,7 +71,7 @@ Web application. It is important that this package is isolated from any other to
|
|||||||
|
|
||||||
* ``ahriman.web.middlewares`` provides middlewares for request handlers.
|
* ``ahriman.web.middlewares`` provides middlewares for request handlers.
|
||||||
* ``ahriman.web.schemas`` provides schemas (actually copy paste from dataclasses) used by swagger documentation.
|
* ``ahriman.web.schemas`` provides schemas (actually copy paste from dataclasses) used by swagger documentation.
|
||||||
* ``ahriman.web.views`` contains web views derived from aiohttp view class.
|
* ``ahriman.web.views`` contains web views derived from aiohttp view class. Those classes are loaded dynamically through the filesystem lookup.
|
||||||
* ``ahriman.web.apispec`` provides generators for swagger documentation.
|
* ``ahriman.web.apispec`` provides generators for swagger documentation.
|
||||||
* ``ahriman.web.cors`` contains helpers for cross origin resource sharing middlewares.
|
* ``ahriman.web.cors`` contains helpers for cross origin resource sharing middlewares.
|
||||||
* ``ahriman.web.routes`` creates routes for web application.
|
* ``ahriman.web.routes`` creates routes for web application.
|
||||||
|
Loading…
Reference in New Issue
Block a user