From cda1fabd4f91b2d99035db8a98e2c68d12e4300e Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Sun, 16 May 2021 16:57:59 +0200 Subject: [PATCH] Added docs for cpl.configuration --- docs/build/doctrees/cpl.application.doctree | Bin 52188 -> 51244 bytes docs/build/doctrees/cpl.configuration.doctree | Bin 90022 -> 109008 bytes docs/build/doctrees/cpl.doctree | Bin 11340 -> 2798 bytes docs/build/doctrees/environment.pickle | Bin 128618 -> 126993 bytes docs/build/html/_sources/cpl.rst.txt | 7 - docs/build/html/cpl.application.html | 5 +- docs/build/html/cpl.configuration.html | 115 ++++++++++------- docs/build/html/cpl.console.html | 1 - docs/build/html/cpl.database.connection.html | 1 - docs/build/html/cpl.database.context.html | 1 - docs/build/html/cpl.database.html | 1 - docs/build/html/cpl.dependency_injection.html | 1 - docs/build/html/cpl.environment.html | 1 - docs/build/html/cpl.html | 45 ------- docs/build/html/cpl.logging.html | 1 - docs/build/html/cpl.mailing.html | 1 - docs/build/html/cpl.time.html | 1 - docs/build/html/cpl.utils.html | 1 - docs/build/html/genindex.html | 19 --- docs/build/html/modules.html | 4 - docs/build/html/objects.inv | Bin 2882 -> 2844 bytes docs/build/html/py-modindex.html | 2 +- docs/build/html/searchindex.js | 2 +- docs/source/cpl.rst | 7 - .../application/application_builder_abc.py | 2 +- src/cpl/configuration/configuration.py | 120 ++++++++++-------- src/cpl/configuration/configuration_abc.py | 77 ++++++----- .../configuration/configuration_model_abc.py | 13 +- src/cpl/configuration/console_argument.py | 18 +-- 29 files changed, 204 insertions(+), 242 deletions(-) diff --git a/docs/build/doctrees/cpl.application.doctree b/docs/build/doctrees/cpl.application.doctree index 560c8ea54a352293f1d9f06a345d4680de06172a..40c60815d1ecce58d9c5375e65719df7b13b6612 100644 GIT binary patch delta 3904 zcmaJ@eNa@_7583T_r2Zs_y`{^E?;X<1Vtg@_!WgPNmLk#mYRr01(jrZARvgwG!bEl zffO6`EGpnYL=$HG3b0AgSR(*jy46DwwszApZA#9YL*LS4e9u7ueZ5tS2uGWM(=j|cd=(kZ7;fLf9In{HJa9y6jWBawD0hT*5-B; zzQ9-))D$JkRn8=55aJwyBQJf-4nbeh1(@Qz$`6_0z|15_F3M$Jq2mnprMs_a9%FyQ zAF0saJX-yd3SiCvXO#9=Gt4Yr#_rHs$WBD_UmGkgXF-rrGD%V;QM3%@C8<0{f&*Eh zkUuwq%MuKQ#6bTJg_|T;dTzq*M3ci01mmJ}s@4`dV_tVna>lK4X+vfRToMVZH%yPb zi>1&;){9!mHJf1-SIiK+Pve;qluwR?X{GUeu>@*x9Dfci;Tb%e3W$Nr;dY)ULI1)u zWj@xY)i8YAHA7n2R}?!GlBgC_-8yKx1gTF%z>DSEc!du9LwPQH9Tsg|!mD-MUku|m zJc#RFULiAzMPQ}P2N?EMe#6q;)tk03egavTmBv1R>P?s7znhc!XJkkTCUQTZ7@hbF zP_iXM@iUy*(#HQ{6mTQ~T3?wLL%V8}%D2ujrocnj6$JY;(LHg}pG=794=pP5r~J5N zP(C?;2zqPlZPo+Tuhz;IS%gb6+)ACUb`NjLBty-!QBb;c8otAD19Mi)g zu4$~=<3pANPyKu<)`6#luf)LKFgcx;qcjYto{#~5+}4c^_*L}|?2k+h;H5IWU40cC zwX=B*SyDo&1Es^Mw&UyW<>&ccDnuV@S#(CQYz)Ri+H*;jO}S(yaN8dX)GIX z_cd7<`v_^BGDfJf8*cCFbalcU=%QDWW!1G1mH1YDBE)T0_)Uv@r;9N-yDJIu zQQ}CQZxRQ3&3CZa=5#g&LiWrUVIM3`<60mz>`7oz(6c8jW*nY}0%!axmvbWiOY{^GmRgAAvgdXQ9 z(ARYmq7EnW>FuiUx5@$s`O4%1Rt`v2Yat_YbN?O1{PLSlvTjS z4@2DpAJzuE97O<;^tc;CsK{c#IxluN4F1++< zgpebmb3|m0h{_QWIaSU$@`;2aCx6E3;Qq;r!2k4LJYK3pAZJu# zE9{!p3MWpb28+apsEz@82v0s>hWV%CJkFi4@#Rjq_G@W2`4P8OYw-$--gHgXj-zgh zi<#!c50|(gh)rm2+S3p{bkrdWp<;z=PPa^;MFZ*@xsY~hEqDYp(f}=&8lUHm{-lBN z->LX9OXPzpTsgCz-%#n+7JQ91V%G-6ezX<_Y+xF+_s7S6p)Wj#H(6s0TIe-8do)&k zNrmhE8ow_P<)6?Mjn`GEKAXi9SaL2wHgJDZ;Xh|*&i@fT8pl+YRaLAjbZJlFO|fxw zNl|H`3(@fFVC1@q92>dF#V;32fc*1Ga(tjCmE%Gtn?b20BUL<9pPR*hRN>^gXixQ~ zFN|5RQzgR#KoX~Di9ZZ>P3`|)}g{^1n$cR+bR$@dl9L|Hwn>0GcDZQd3cZ~12AJji!|X$?~@Qz+#V S{_{rK_OO(G61Vr_GyexdX~LTT delta 4204 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 U92Zz`)ZiZFGoa6X@xiSB0=Z@cGXMYp diff --git a/docs/build/doctrees/cpl.configuration.doctree b/docs/build/doctrees/cpl.configuration.doctree index 2d85bac5b54f51cf6ca2ddc932bb4f03ec07aebf..412dbfb9e44f13bbadd4c77a8b79758d3f9375f1 100644 GIT binary patch literal 109008 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 diff --git a/docs/build/doctrees/cpl.doctree b/docs/build/doctrees/cpl.doctree index 7a4508650c0fa17b163143d03bb72f0c4b9057d0..362f23e8db18a33d85a7f2fc111335c42b289788 100644 GIT binary patch delta 69 zcmX>T@lKSrfpzL*u8pkIm^Uv~2xVf*n6UZ3(ky0$jI50G;vUYt#N5=9%7WD5DYa8F YviyoO6o7Pk22b(kd+O|rlLd9G0mJ+nt^fc4 literal 11340 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 V%6Q}m{5WoNgz)b|)>gj$n{Te;p&0YYE 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 xU8!M-p2!w$X?H`IK!<1KhrXMVH%6K6O{cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • @@ -243,7 +242,7 @@

    Sets the custom startup class to use

    @@ -274,7 +273,7 @@

    Sets the custom startup class to use

    diff --git a/docs/build/html/cpl.configuration.html b/docs/build/html/cpl.configuration.html index ca822655..4235fba0 100644 --- a/docs/build/html/cpl.configuration.html +++ b/docs/build/html/cpl.configuration.html @@ -103,7 +103,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • @@ -186,45 +185,53 @@
    add_configuration(key_type: Union[str, type], value: cpl.configuration.configuration_model_abc.ConfigurationModelABC)¶
    -

    Add configuration object -:param key_type: -:param value: -:return:

    +

    Add configuration object

    +
    +
    add_console_argument(argument: cpl.configuration.console_argument.ConsoleArgument)¶
    -

    Adds console argument to known console arguments -:param argument: -:return:

    +

    Adds console argument to known console arguments

    +
    +

    argument: cpl.console.console_argument.ConsoleArgument

    +
    add_console_arguments(error: Optional[bool] = None)¶
    -

    Reads the console arguments -:param error: defines is invalid argument error will be shown or not -:return:

    +

    Reads the console arguments

    +
    +
    +
    error: bool

    Defines is invalid argument error will be shown or not

    +
    +
    +
    add_environment_variables(prefix: str)¶
    -

    Reads the environment variables -:param prefix: -:return:

    +

    Reads the environment variables

    +
    +

    prefix: str

    +
    add_json_file(name: str, optional: Optional[bool] = None, output: bool = True, path: Optional[str] = None)¶
    -

    Reads and saves settings from given json file -:param name: -:param optional: -:param output: -:param path: -:return:

    +

    Reads and saves settings from given json file

    +
    +

    name (str): Name of the file +optional: str +output: bool +path: str

    +
    @@ -245,9 +252,13 @@
    get_configuration(search_type: Union[str, Type[cpl.configuration.configuration_model_abc.ConfigurationModelABC]])Union[str, collections.abc.Callable[cpl.configuration.configuration_model_abc.ConfigurationModelABC]]¶
    -

    Returns value in configuration by given type -:param search_type: -:return:

    +

    Returns value from configuration by given type

    +
    +
    +
    +
    @@ -261,46 +272,54 @@

    Bases: abc.ABC

    -abstract add_configuration(key_type: Union[str, type], value: object)¶
    -

    Add configuration object -:param key_type: -:param value: -:return:

    +abstract add_configuration(key_type: Union[str, type], value: cpl.configuration.configuration_model_abc.ConfigurationModelABC)¶ +

    Add configuration object

    +
    +
    abstract add_console_argument(argument: cpl.configuration.console_argument.ConsoleArgument)¶
    -

    Adds console argument to known console arguments -:param argument: -:return:

    +

    Adds console argument to known console arguments

    +
    +

    argument: cpl.console.console_argument.ConsoleArgument

    +
    abstract add_console_arguments(error: Optional[bool] = None)¶
    -

    Reads the console arguments -:param error: defines is invalid argument error will be shown or not -:return:

    +

    Reads the console arguments

    +
    +
    +
    error: bool

    Defines is invalid argument error will be shown or not

    +
    +
    +
    abstract add_environment_variables(prefix: str)¶
    -

    Reads the environment variables -:param prefix: -:return:

    +

    Reads the environment variables

    +
    +

    prefix: str

    +
    abstract add_json_file(name: str, optional: Optional[bool] = None, output: bool = True, path: Optional[str] = None)¶
    -

    Reads and saves settings from given json file -:param name: -:param optional: -:param output: -:param path: -:return:

    +

    Reads and saves settings from given json file

    +
    +

    name (str): Name of the file +optional: str +output: bool +path: str

    +
    @@ -321,9 +340,13 @@
    abstract get_configuration(search_type: Union[str, Type[cpl.configuration.configuration_model_abc.ConfigurationModelABC]])Union[str, collections.abc.Callable[cpl.configuration.configuration_model_abc.ConfigurationModelABC]]¶
    -

    Returns value in configuration by given type -:param search_type: -:return:

    +

    Returns value from configuration by given type

    +
    +
    +
    +
    diff --git a/docs/build/html/cpl.console.html b/docs/build/html/cpl.console.html index 91b46497..9b456b14 100644 --- a/docs/build/html/cpl.console.html +++ b/docs/build/html/cpl.console.html @@ -103,7 +103,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.database.connection.html b/docs/build/html/cpl.database.connection.html index dc165f53..5fca1026 100644 --- a/docs/build/html/cpl.database.connection.html +++ b/docs/build/html/cpl.database.connection.html @@ -108,7 +108,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.database.context.html b/docs/build/html/cpl.database.context.html index fa9b5b99..9ce6d4a5 100644 --- a/docs/build/html/cpl.database.context.html +++ b/docs/build/html/cpl.database.context.html @@ -108,7 +108,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.database.html b/docs/build/html/cpl.database.html index 254db858..ae07374e 100644 --- a/docs/build/html/cpl.database.html +++ b/docs/build/html/cpl.database.html @@ -104,7 +104,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.dependency_injection.html b/docs/build/html/cpl.dependency_injection.html index 53c010eb..c480dd0d 100644 --- a/docs/build/html/cpl.dependency_injection.html +++ b/docs/build/html/cpl.dependency_injection.html @@ -104,7 +104,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.environment.html b/docs/build/html/cpl.environment.html index c9b1c20a..1ae3cce7 100644 --- a/docs/build/html/cpl.environment.html +++ b/docs/build/html/cpl.environment.html @@ -101,7 +101,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.html b/docs/build/html/cpl.html index e385a5e2..1cff5bb5 100644 --- a/docs/build/html/cpl.html +++ b/docs/build/html/cpl.html @@ -96,10 +96,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents -
  • @@ -257,47 +253,6 @@ -
    -

    Module contents¶

    -
    -

    sh_cpl sh-edraft Common Python library¶

    -

    sh-edraft Common Python library

    -
    -
    copyright
    -
      -
    1. 2020 - 2021 sh-edraft.de

    2. -
    -
    -
    license
    -

    MIT, see LICENSE for more details.

    -
    -
    -
    -
    -class cpl.VersionInfo(major, minor, micro)¶
    -

    Bases: tuple

    -
    -
    -major¶
    -

    Alias for field number 0

    -
    - -
    -
    -micro¶
    -

    Alias for field number 2

    -
    - -
    -
    -minor¶
    -

    Alias for field number 1

    -
    - -
    - -
    -
    diff --git a/docs/build/html/cpl.logging.html b/docs/build/html/cpl.logging.html index 426b6c87..6c82e33d 100644 --- a/docs/build/html/cpl.logging.html +++ b/docs/build/html/cpl.logging.html @@ -103,7 +103,6 @@
  • cpl.mailing
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.mailing.html b/docs/build/html/cpl.mailing.html index f45db848..f5e20219 100644 --- a/docs/build/html/cpl.mailing.html +++ b/docs/build/html/cpl.mailing.html @@ -103,7 +103,6 @@
  • cpl.time
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.time.html b/docs/build/html/cpl.time.html index 059ea17b..2d20b516 100644 --- a/docs/build/html/cpl.time.html +++ b/docs/build/html/cpl.time.html @@ -100,7 +100,6 @@
  • cpl.utils
  • -
  • Module contents
  • diff --git a/docs/build/html/cpl.utils.html b/docs/build/html/cpl.utils.html index fb16443a..b1c968d1 100644 --- a/docs/build/html/cpl.utils.html +++ b/docs/build/html/cpl.utils.html @@ -100,7 +100,6 @@
  • cpl.utils.string
  • -
  • Module contents
  • diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 2ed2fcca..bebd5175 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -390,13 +390,6 @@
  • convert_to_snake_case() (cpl.utils.string.String static method)
  • - cpl - -
  • -
  • cpl.application.application_abc
      @@ -1050,19 +1043,11 @@
  • main() (cpl.application.application_abc.ApplicationABC method) -
  • -
  • major (cpl.VersionInfo attribute) -
  • -
  • micro (cpl.VersionInfo attribute) -
  • -
  • minor (cpl.VersionInfo attribute)
  • module
  • -
  • Module contents -
  • diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index e43e2b703190cb22702b39dd6a938a8325b492d8..a5faa26aa8a0f3197d22297a554507d2d4da219b 100644 GIT binary patch delta 2739 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 delta 2777 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 - cpl + cpl diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 3515e753..4a466f51 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["cpl","cpl.application","cpl.configuration","cpl.console","cpl.database","cpl.database.connection","cpl.database.context","cpl.dependency_injection","cpl.environment","cpl.logging","cpl.mailing","cpl.time","cpl.utils","index","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["cpl.rst","cpl.application.rst","cpl.configuration.rst","cpl.console.rst","cpl.database.rst","cpl.database.connection.rst","cpl.database.context.rst","cpl.dependency_injection.rst","cpl.environment.rst","cpl.logging.rst","cpl.mailing.rst","cpl.time.rst","cpl.utils.rst","index.rst","modules.rst"],objects:{"":{cpl:[0,0,0,"-"]},"cpl.VersionInfo":{major:[0,2,1,""],micro:[0,2,1,""],minor:[0,2,1,""]},"cpl.application":{application_abc:[1,0,0,"-"],application_builder:[1,0,0,"-"],application_builder_abc:[1,0,0,"-"],startup_abc:[1,0,0,"-"]},"cpl.application.application_abc":{ApplicationABC:[1,1,1,""]},"cpl.application.application_abc.ApplicationABC":{configure:[1,3,1,""],main:[1,3,1,""],run:[1,3,1,""]},"cpl.application.application_builder":{ApplicationBuilder:[1,1,1,""]},"cpl.application.application_builder.ApplicationBuilder":{build:[1,3,1,""],use_startup:[1,3,1,""]},"cpl.application.application_builder_abc":{ApplicationBuilderABC:[1,1,1,""]},"cpl.application.application_builder_abc.ApplicationBuilderABC":{build:[1,3,1,""],use_startup:[1,3,1,""]},"cpl.application.startup_abc":{StartupABC:[1,1,1,""]},"cpl.application.startup_abc.StartupABC":{configure_configuration:[1,3,1,""],configure_services:[1,3,1,""]},"cpl.configuration":{configuration:[2,0,0,"-"],configuration_abc:[2,0,0,"-"],configuration_model_abc:[2,0,0,"-"],configuration_variable_name_enum:[2,0,0,"-"],console_argument:[2,0,0,"-"]},"cpl.configuration.configuration":{Configuration:[2,1,1,""]},"cpl.configuration.configuration.Configuration":{add_configuration:[2,3,1,""],add_console_argument:[2,3,1,""],add_console_arguments:[2,3,1,""],add_environment_variables:[2,3,1,""],add_json_file:[2,3,1,""],additional_arguments:[2,3,1,""],argument_error_function:[2,3,1,""],environment:[2,3,1,""],get_configuration:[2,3,1,""]},"cpl.configuration.configuration_abc":{ConfigurationABC:[2,1,1,""]},"cpl.configuration.configuration_abc.ConfigurationABC":{add_configuration:[2,3,1,""],add_console_argument:[2,3,1,""],add_console_arguments:[2,3,1,""],add_environment_variables:[2,3,1,""],add_json_file:[2,3,1,""],additional_arguments:[2,3,1,""],argument_error_function:[2,3,1,""],environment:[2,3,1,""],get_configuration:[2,3,1,""]},"cpl.configuration.configuration_model_abc":{ConfigurationModelABC:[2,1,1,""]},"cpl.configuration.configuration_model_abc.ConfigurationModelABC":{from_dict:[2,3,1,""]},"cpl.configuration.configuration_variable_name_enum":{ConfigurationVariableNameEnum:[2,1,1,""]},"cpl.configuration.configuration_variable_name_enum.ConfigurationVariableNameEnum":{customer:[2,2,1,""],environment:[2,2,1,""],name:[2,2,1,""],to_list:[2,3,1,""]},"cpl.configuration.console_argument":{ConsoleArgument:[2,1,1,""]},"cpl.configuration.console_argument.ConsoleArgument":{aliases:[2,3,1,""],console_arguments:[2,3,1,""],is_value_token_optional:[2,3,1,""],name:[2,3,1,""],token:[2,3,1,""],value_token:[2,3,1,""]},"cpl.console":{background_color_enum:[3,0,0,"-"],console:[3,0,0,"-"],console_call:[3,0,0,"-"],foreground_color_enum:[3,0,0,"-"],spinner_thread:[3,0,0,"-"]},"cpl.console.background_color_enum":{BackgroundColorEnum:[3,1,1,""]},"cpl.console.background_color_enum.BackgroundColorEnum":{"default":[3,2,1,""],blue:[3,2,1,""],cyan:[3,2,1,""],green:[3,2,1,""],grey:[3,2,1,""],magenta:[3,2,1,""],red:[3,2,1,""],white:[3,2,1,""],yellow:[3,2,1,""]},"cpl.console.console":{Console:[3,1,1,""]},"cpl.console.console.Console":{background_color:[3,2,1,""],banner:[3,3,1,""],clear:[3,3,1,""],close:[3,3,1,""],color_reset:[3,3,1,""],disable:[3,3,1,""],enable:[3,3,1,""],error:[3,3,1,""],foreground_color:[3,2,1,""],read:[3,3,1,""],read_line:[3,3,1,""],reset_cursor_position:[3,3,1,""],select:[3,3,1,""],set_background_color:[3,3,1,""],set_cursor_position:[3,3,1,""],set_foreground_color:[3,3,1,""],set_hold_back:[3,3,1,""],spinner:[3,3,1,""],table:[3,3,1,""],write:[3,3,1,""],write_at:[3,3,1,""],write_line:[3,3,1,""],write_line_at:[3,3,1,""]},"cpl.console.console_call":{ConsoleCall:[3,1,1,""]},"cpl.console.console_call.ConsoleCall":{"function":[3,3,1,""],args:[3,3,1,""]},"cpl.console.foreground_color_enum":{ForegroundColorEnum:[3,1,1,""]},"cpl.console.foreground_color_enum.ForegroundColorEnum":{"default":[3,2,1,""],blue:[3,2,1,""],cyan:[3,2,1,""],green:[3,2,1,""],grey:[3,2,1,""],magenta:[3,2,1,""],red:[3,2,1,""],white:[3,2,1,""],yellow:[3,2,1,""]},"cpl.console.spinner_thread":{SpinnerThread:[3,1,1,""]},"cpl.console.spinner_thread.SpinnerThread":{exit:[3,3,1,""],run:[3,3,1,""],stop_spinning:[3,3,1,""]},"cpl.database":{database_model:[4,0,0,"-"],database_settings:[4,0,0,"-"],database_settings_name_enum:[4,0,0,"-"]},"cpl.database.connection":{database_connection:[5,0,0,"-"],database_connection_abc:[5,0,0,"-"]},"cpl.database.connection.database_connection":{DatabaseConnection:[5,1,1,""]},"cpl.database.connection.database_connection.DatabaseConnection":{connect:[5,3,1,""],engine:[5,3,1,""],session:[5,3,1,""]},"cpl.database.connection.database_connection_abc":{DatabaseConnectionABC:[5,1,1,""]},"cpl.database.connection.database_connection_abc.DatabaseConnectionABC":{connect:[5,3,1,""],engine:[5,3,1,""],session:[5,3,1,""]},"cpl.database.context":{database_context:[6,0,0,"-"],database_context_abc:[6,0,0,"-"]},"cpl.database.context.database_context":{DatabaseContext:[6,1,1,""]},"cpl.database.context.database_context.DatabaseContext":{connect:[6,3,1,""],engine:[6,3,1,""],save_changes:[6,3,1,""],session:[6,3,1,""]},"cpl.database.context.database_context_abc":{DatabaseContextABC:[6,1,1,""]},"cpl.database.context.database_context_abc.DatabaseContextABC":{connect:[6,3,1,""],engine:[6,3,1,""],save_changes:[6,3,1,""],session:[6,3,1,""]},"cpl.database.database_settings":{DatabaseSettings:[4,1,1,""]},"cpl.database.database_settings.DatabaseSettings":{auth_plugin:[4,3,1,""],case_sensitive:[4,3,1,""],connection_string:[4,3,1,""],credentials:[4,3,1,""],echo:[4,3,1,""],encoding:[4,3,1,""],from_dict:[4,3,1,""]},"cpl.database.database_settings_name_enum":{DatabaseSettingsNameEnum:[4,1,1,""]},"cpl.database.database_settings_name_enum.DatabaseSettingsNameEnum":{auth_plugin:[4,2,1,""],case_sensitive:[4,2,1,""],connection_string:[4,2,1,""],credentials:[4,2,1,""],echo:[4,2,1,""],encoding:[4,2,1,""]},"cpl.dependency_injection":{service_collection:[7,0,0,"-"],service_collection_abc:[7,0,0,"-"],service_descriptor:[7,0,0,"-"],service_lifetime_enum:[7,0,0,"-"],service_provider:[7,0,0,"-"],service_provider_abc:[7,0,0,"-"]},"cpl.dependency_injection.service_collection":{ServiceCollection:[7,1,1,""]},"cpl.dependency_injection.service_collection.ServiceCollection":{add_db_context:[7,3,1,""],add_logging:[7,3,1,""],add_scoped:[7,3,1,""],add_singleton:[7,3,1,""],add_transient:[7,3,1,""],build_service_provider:[7,3,1,""]},"cpl.dependency_injection.service_collection_abc":{ServiceCollectionABC:[7,1,1,""]},"cpl.dependency_injection.service_collection_abc.ServiceCollectionABC":{add_db_context:[7,3,1,""],add_logging:[7,3,1,""],add_scoped:[7,3,1,""],add_singleton:[7,3,1,""],add_transient:[7,3,1,""],build_service_provider:[7,3,1,""]},"cpl.dependency_injection.service_descriptor":{ServiceDescriptor:[7,1,1,""]},"cpl.dependency_injection.service_descriptor.ServiceDescriptor":{implementation:[7,3,1,""],lifetime:[7,3,1,""],service_type:[7,3,1,""]},"cpl.dependency_injection.service_lifetime_enum":{ServiceLifetimeEnum:[7,1,1,""]},"cpl.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum":{"transient":[7,2,1,""],scoped:[7,2,1,""],singleton:[7,2,1,""]},"cpl.dependency_injection.service_provider":{ServiceProvider:[7,1,1,""]},"cpl.dependency_injection.service_provider.ServiceProvider":{build_service:[7,3,1,""],get_service:[7,3,1,""]},"cpl.dependency_injection.service_provider_abc":{ServiceProviderABC:[7,1,1,""]},"cpl.dependency_injection.service_provider_abc.ServiceProviderABC":{build_service:[7,3,1,""],get_service:[7,3,1,""]},"cpl.environment":{application_environment:[8,0,0,"-"],application_environment_abc:[8,0,0,"-"],environment_name_enum:[8,0,0,"-"]},"cpl.environment.application_environment":{ApplicationEnvironment:[8,1,1,""]},"cpl.environment.application_environment.ApplicationEnvironment":{application_name:[8,3,1,""],customer:[8,3,1,""],date_time_now:[8,3,1,""],end_time:[8,3,1,""],environment_name:[8,3,1,""],host_name:[8,3,1,""],runtime_directory:[8,3,1,""],set_runtime_directory:[8,3,1,""],set_working_directory:[8,3,1,""],start_time:[8,3,1,""],working_directory:[8,3,1,""]},"cpl.environment.application_environment_abc":{ApplicationEnvironmentABC:[8,1,1,""]},"cpl.environment.application_environment_abc.ApplicationEnvironmentABC":{application_name:[8,3,1,""],customer:[8,3,1,""],date_time_now:[8,3,1,""],end_time:[8,3,1,""],environment_name:[8,3,1,""],host_name:[8,3,1,""],runtime_directory:[8,3,1,""],set_runtime_directory:[8,3,1,""],set_working_directory:[8,3,1,""],start_time:[8,3,1,""],working_directory:[8,3,1,""]},"cpl.environment.environment_name_enum":{EnvironmentNameEnum:[8,1,1,""]},"cpl.environment.environment_name_enum.EnvironmentNameEnum":{development:[8,2,1,""],production:[8,2,1,""],staging:[8,2,1,""],testing:[8,2,1,""]},"cpl.logging":{logger_abc:[9,0,0,"-"],logger_service:[9,0,0,"-"],logging_level_enum:[9,0,0,"-"],logging_settings:[9,0,0,"-"],logging_settings_name_enum:[9,0,0,"-"]},"cpl.logging.logger_abc":{LoggerABC:[9,1,1,""]},"cpl.logging.logger_abc.LoggerABC":{debug:[9,3,1,""],error:[9,3,1,""],fatal:[9,3,1,""],header:[9,3,1,""],info:[9,3,1,""],trace:[9,3,1,""],warn:[9,3,1,""]},"cpl.logging.logger_service":{Logger:[9,1,1,""]},"cpl.logging.logger_service.Logger":{create:[9,3,1,""],debug:[9,3,1,""],error:[9,3,1,""],fatal:[9,3,1,""],header:[9,3,1,""],info:[9,3,1,""],trace:[9,3,1,""],warn:[9,3,1,""]},"cpl.logging.logging_level_enum":{LoggingLevelEnum:[9,1,1,""]},"cpl.logging.logging_level_enum.LoggingLevelEnum":{DEBUG:[9,2,1,""],ERROR:[9,2,1,""],FATAL:[9,2,1,""],INFO:[9,2,1,""],OFF:[9,2,1,""],TRACE:[9,2,1,""],WARN:[9,2,1,""]},"cpl.logging.logging_settings":{LoggingSettings:[9,1,1,""]},"cpl.logging.logging_settings.LoggingSettings":{console:[9,3,1,""],filename:[9,3,1,""],from_dict:[9,3,1,""],level:[9,3,1,""],path:[9,3,1,""]},"cpl.logging.logging_settings_name_enum":{LoggingSettingsNameEnum:[9,1,1,""]},"cpl.logging.logging_settings_name_enum.LoggingSettingsNameEnum":{console_level:[9,2,1,""],file_level:[9,2,1,""],filename:[9,2,1,""],path:[9,2,1,""]},"cpl.mailing":{email:[10,0,0,"-"],email_client_abc:[10,0,0,"-"],email_client_service:[10,0,0,"-"],email_client_settings:[10,0,0,"-"],email_client_settings_name_enum:[10,0,0,"-"]},"cpl.mailing.email":{EMail:[10,1,1,""]},"cpl.mailing.email.EMail":{add_header:[10,3,1,""],add_receiver:[10,3,1,""],body:[10,3,1,""],check_mail:[10,3,1,""],get_content:[10,3,1,""],header:[10,3,1,""],header_list:[10,3,1,""],receiver:[10,3,1,""],receiver_list:[10,3,1,""],subject:[10,3,1,""],transceiver:[10,3,1,""]},"cpl.mailing.email_client_abc":{EMailClientABC:[10,1,1,""]},"cpl.mailing.email_client_abc.EMailClientABC":{connect:[10,3,1,""],send_mail:[10,3,1,""]},"cpl.mailing.email_client_service":{EMailClient:[10,1,1,""]},"cpl.mailing.email_client_service.EMailClient":{connect:[10,3,1,""],create:[10,3,1,""],login:[10,3,1,""],send_mail:[10,3,1,""]},"cpl.mailing.email_client_settings":{EMailClientSettings:[10,1,1,""]},"cpl.mailing.email_client_settings.EMailClientSettings":{credentials:[10,3,1,""],from_dict:[10,3,1,""],host:[10,3,1,""],port:[10,3,1,""],user_name:[10,3,1,""]},"cpl.mailing.email_client_settings_name_enum":{EMailClientSettingsNameEnum:[10,1,1,""]},"cpl.mailing.email_client_settings_name_enum.EMailClientSettingsNameEnum":{credentials:[10,2,1,""],host:[10,2,1,""],port:[10,2,1,""],user_name:[10,2,1,""]},"cpl.time":{time_format_settings:[11,0,0,"-"],time_format_settings_names_enum:[11,0,0,"-"]},"cpl.time.time_format_settings":{TimeFormatSettings:[11,1,1,""]},"cpl.time.time_format_settings.TimeFormatSettings":{date_format:[11,3,1,""],date_time_format:[11,3,1,""],date_time_log_format:[11,3,1,""],from_dict:[11,3,1,""],time_format:[11,3,1,""]},"cpl.time.time_format_settings_names_enum":{TimeFormatSettingsNamesEnum:[11,1,1,""]},"cpl.time.time_format_settings_names_enum.TimeFormatSettingsNamesEnum":{date_format:[11,2,1,""],date_time_format:[11,2,1,""],date_time_log_format:[11,2,1,""],time_format:[11,2,1,""]},"cpl.utils":{credential_manager:[12,0,0,"-"],pip:[12,0,0,"-"],string:[12,0,0,"-"]},"cpl.utils.credential_manager":{CredentialManager:[12,1,1,""]},"cpl.utils.credential_manager.CredentialManager":{build_string:[12,3,1,""],decrypt:[12,3,1,""],encrypt:[12,3,1,""]},"cpl.utils.pip":{Pip:[12,1,1,""]},"cpl.utils.pip.Pip":{get_executable:[12,3,1,""],get_outdated:[12,3,1,""],get_package:[12,3,1,""],install:[12,3,1,""],reset_executable:[12,3,1,""],set_executable:[12,3,1,""],uninstall:[12,3,1,""]},"cpl.utils.string":{String:[12,1,1,""]},"cpl.utils.string.String":{convert_to_camel_case:[12,3,1,""],convert_to_snake_case:[12,3,1,""],first_to_lower:[12,3,1,""],first_to_upper:[12,3,1,""],random_string:[12,3,1,""]},cpl:{VersionInfo:[0,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"2020":0,"2021":0,"abstract":[1,2,5,6,7,8,9,10],"byte":12,"case":12,"char":[3,12],"class":[0,1,2,3,4,5,6,7,8,9,10,11,12],"default":3,"enum":[2,3,4,7,8,9,10,11],"function":[3,12],"int":[3,12],"new":3,"return":[2,3,4,5,6,7,8,9,10,11,12],"static":[2,10,12],"transient":7,"true":2,The:13,These:13,Useful:[3,12],abc:[1,2,3,5,6,7,8,9,10],about:13,activ:3,add:[2,7,10],add_configur:2,add_console_argu:2,add_db_context:7,add_environment_vari:2,add_head:10,add_json_fil:2,add_log:7,add_receiv:10,add_scop:7,add_singleton:7,add_transi:7,additional_argu:2,address:10,alia:0,alias:2,ani:3,app:[1,13],applic:[0,3,13,14],application_abc:[0,14],application_build:[0,14],application_builder_abc:[0,14],application_environ:[0,14],application_environment_abc:[0,9,10,14],application_nam:8,applicationabc:1,applicationbuild:1,applicationbuilderabc:1,applicationenviron:8,applicationenvironmentabc:[8,9,10],appset:1,arg:[1,3,6,12],argument:2,argument_error_funct:2,attribut:[2,4,9,10,11],auth_plugin:4,authplugin:4,background:3,background_color:3,background_color_enum:[0,14],backgroundcolorenum:3,banner:3,base64:12,base:[0,1,2,3,4,5,6,7,8,9,10,11,12],blue:3,bodi:10,bool:[2,3,10],build:[1,12],build_servic:7,build_service_provid:7,build_str:12,call:[1,3],callabl:[2,3,7],camel:12,can:13,case_sensit:4,casesensit:4,chang:6,check:10,check_mail:10,classmethod:[3,12],clear:3,close:3,collect:[2,3,7],color:3,color_reset:3,command:12,common:[13,14],complex:13,config:[1,7],configur:[0,1,4,7,9,10,11,14],configuration_abc:[0,1,7,14],configuration_model_abc:[0,4,9,10,11,14],configuration_variable_name_enum:[0,14],configurationabc:[1,2,7],configurationmodelabc:[2,4,9,10,11],configurationvariablenameenum:2,configure_configur:1,configure_servic:1,connect:[0,4,6,10,14],connection_str:[4,5,6],connectionstr:4,consol:[0,2,9,14],console_argu:[0,14],console_cal:[0,14],console_level:9,consoleargu:2,consolecal:3,consoleloglevel:9,contain:1,content:14,context:[0,4,7,14],convert:[2,4,9,10,11,12],convert_to_camel_cas:12,convert_to_snake_cas:12,copyright:0,creat:[1,7,9,10,12,13],credenti:[4,10,12],credential_manag:[0,14],credentialmanag:12,current:8,cursor:3,cursor_background_color:3,cursor_foreground_color:3,custom:[1,2,8],cyan:3,databas:[0,7,14],database_connect:[0,4,14],database_connection_abc:[0,4,14],database_context:[0,4,14],database_context_abc:[0,4,7,14],database_model:[0,14],database_set:[0,5,6,7,14],database_settings_name_enum:[0,14],databaseconnect:5,databaseconnectionabc:5,databasecontext:6,databasecontextabc:[6,7],databaseset:[4,5,6,7],databasesettingsnameenum:4,date_format:11,date_time_format:11,date_time_log_format:11,date_time_now:8,dateformat:11,datetimeformat:11,datetimelogformat:11,db_context:7,db_context_typ:7,db_set:7,debug:9,decod:12,decrypt:12,defin:2,dependency_inject:[0,1,14],desktop:13,detail:[0,13],develop:[8,13],dict:[2,4,9,10,11],directori:8,disabl:3,echo:4,edraft:14,effici:13,email:[0,14],email_client_abc:[0,14],email_client_servic:[0,14],email_client_set:[0,14],email_client_settings_name_enum:[0,14],emailcli:10,emailclientabc:10,emailclientset:10,emailclientsettingsnameenum:10,enabl:3,encod:[4,12],encrypt:12,end:3,end_tim:8,engin:[5,6],enterpris:13,entri:[1,3],enumer:[2,3,4,7,8,9,10,11],env:9,environ:[0,2,9,10,14],environment_nam:8,environment_name_enum:[0,14],environmentnameenum:8,error:[2,3,9],everyth:13,except:9,execut:12,exit:[3,9],fatal:9,field:0,file:2,file_level:9,fileloglevel:9,filenam:9,first:[12,13],first_to_low:12,first_to_upp:12,foreground:3,foreground_color:3,foreground_color_enum:[0,14],foregroundcolorenum:3,from:[1,2,13],from_dict:[2,4,9,10,11],get:12,get_configur:2,get_cont:10,get_execut:12,get_outd:12,get_packag:12,get_servic:7,given:[2,3,7,12],great:13,green:3,grei:3,handl:[3,12],has:3,header:[3,9,10],header_background_color:3,header_foreground_color:3,header_list:10,help:13,host:10,host_nam:8,implement:7,info:9,inform:9,input:3,instal:12,instanc:[1,7],instance_typ:7,interact:3,intern:7,invalid:2,is_value_token_opt:2,json:2,key_typ:2,known:2,kwarg:3,learn:13,length:12,level:9,librari:[13,14],licens:0,lifetim:7,line:3,list:[2,3,7,10,12],load:1,local:12,log:[0,10,14],logfil:9,logger:[7,9,10],logger_abc:[0,10,14],logger_servic:[0,14],loggerabc:[9,10],logging_level_enum:[0,14],logging_set:[0,14],logging_settings_name_enum:[0,14],logginglevelenum:9,loggingset:9,loggingsettingsnameenum:9,login:10,lower:12,magenta:3,mail:[0,14],mail_set:10,main:1,major:0,meant:13,menu:3,messag:[3,9],micro:0,minor:0,mit:0,modul:14,more:0,msg_len:3,name:[2,8,9],next:3,none:[2,3,7,9,10,12],number:0,object:[1,2,3,7,10,12],off:9,on_blu:3,on_cyan:3,on_default:3,on_green:3,on_grei:3,on_magenta:3,on_r:3,on_whit:3,on_yellow:3,option:[2,3,7,9,10,12],option_background_color:3,option_foreground_color:3,outdat:12,output:[2,3],packag:[12,13],page:13,param:[2,3,4,5,6,7,8,9,10,11,12],path:[2,9],pip:[0,14],platform:13,point:[1,3],port:10,posit:3,prefix:2,prepar:1,print:3,product:8,properti:[2,3,4,5,6,7,8,9,10,11],provid:[1,7],python:[13,14],random:12,random_str:12,read:[2,3],read_lin:3,receiv:10,receiver_list:10,red:3,reset:[3,12],reset_cursor_posit:3,reset_execut:12,run:[1,3],runtim:8,runtime_directori:8,save:[2,6],save_chang:6,scope:7,search_typ:2,see:0,select:3,send:10,send_mail:10,server:[10,13],servic:[1,7],service_collect:[0,14],service_collection_abc:[0,14],service_descriptor:[0,14],service_lifetime_enum:[0,14],service_provid:[0,14],service_provider_abc:[0,1,14],service_typ:7,servicecollect:7,servicecollectionabc:7,servicedescriptor:7,servicelifetimeenum:7,serviceprovid:7,serviceproviderabc:[1,7],session:[5,6],set:[1,2,3,4,8,9,10,11,12],set_background_color:3,set_cursor_posit:3,set_execut:12,set_foreground_color:3,set_hold_back:3,set_runtime_directori:8,set_working_directori:8,sh_cpl:14,show:3,shown:2,simpl:13,singleton:7,snake:12,sourc:12,spinner:3,spinner_background_color:3,spinner_foreground_color:3,spinner_thread:[0,14],spinnerthread:3,stage:8,standard:12,start_tim:8,startup:1,startup_abc:[0,14],startupabc:1,stderr:12,stdout:12,stop:3,stop_spin:3,str:[2,3,5,6,8,9,10,12],string:[0,3,5,6,9,10,14],subject:10,submodul:[0,14],system:12,tabl:[3,12],test:8,text_background_color:3,text_foreground_color:3,thi:[1,13],thread:3,time:[0,9,14],time_format:[9,11],time_format_set:[0,9,14],time_format_settings_names_enum:[0,14],timeformat:11,timeformatset:[9,11],timeformatsettingsnamesenum:11,to_list:2,token:2,trace:9,traceback:3,transceiv:10,tree:9,tupl:0,type:[1,2,7],understand:13,uninstal:12,union:[2,3,7],upper:12,use:[1,13],use_startup:1,used:1,user_nam:10,usernam:10,util:[0,14],valid:10,valu:[2,3,4,7,8,9,10,11],value_token:2,variabl:2,versioninfo:0,warn:9,when:3,white:3,work:8,working_directori:8,write:[3,9],write_at:3,write_lin:3,write_line_at:3,yellow:3,you:13,your:13},titles:["CPL","cpl.application","cpl.configuration","cpl.console","cpl.database","cpl.database.connection","cpl.database.context","cpl.dependency_injection","cpl.environment","cpl.logging","cpl.mailing","cpl.time","cpl.utils","Introduction to the CPL Docs","cpl"],titleterms:{applic:1,application_abc:1,application_build:1,application_builder_abc:1,application_environ:8,application_environment_abc:8,background_color_enum:3,common:0,configur:2,configuration_abc:2,configuration_model_abc:2,configuration_variable_name_enum:2,connect:5,consol:3,console_argu:2,console_cal:3,content:0,context:6,cpl:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],credential_manag:12,databas:[4,5,6],database_connect:5,database_connection_abc:5,database_context:6,database_context_abc:6,database_model:4,database_set:4,database_settings_name_enum:4,dependency_inject:7,doc:13,edraft:0,email:10,email_client_abc:10,email_client_servic:10,email_client_set:10,email_client_settings_name_enum:10,environ:8,environment_name_enum:8,foreground_color_enum:3,introduct:13,librari:0,log:9,logger_abc:9,logger_servic:9,logging_level_enum:9,logging_set:9,logging_settings_name_enum:9,mail:10,manual:13,modul:0,pip:12,python:0,service_collect:7,service_collection_abc:7,service_descriptor:7,service_lifetime_enum:7,service_provid:7,service_provider_abc:7,sh_cpl:0,spinner_thread:3,startup_abc:1,string:12,submodul:4,time:11,time_format_set:11,time_format_settings_names_enum:11,util:12}}) \ No newline at end of file +Search.setIndex({docnames:["cpl","cpl.application","cpl.configuration","cpl.console","cpl.database","cpl.database.connection","cpl.database.context","cpl.dependency_injection","cpl.environment","cpl.logging","cpl.mailing","cpl.time","cpl.utils","index","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["cpl.rst","cpl.application.rst","cpl.configuration.rst","cpl.console.rst","cpl.database.rst","cpl.database.connection.rst","cpl.database.context.rst","cpl.dependency_injection.rst","cpl.environment.rst","cpl.logging.rst","cpl.mailing.rst","cpl.time.rst","cpl.utils.rst","index.rst","modules.rst"],objects:{"cpl.application":{application_abc:[1,0,0,"-"],application_builder:[1,0,0,"-"],application_builder_abc:[1,0,0,"-"],startup_abc:[1,0,0,"-"]},"cpl.application.application_abc":{ApplicationABC:[1,1,1,""]},"cpl.application.application_abc.ApplicationABC":{configure:[1,2,1,""],main:[1,2,1,""],run:[1,2,1,""]},"cpl.application.application_builder":{ApplicationBuilder:[1,1,1,""]},"cpl.application.application_builder.ApplicationBuilder":{build:[1,2,1,""],use_startup:[1,2,1,""]},"cpl.application.application_builder_abc":{ApplicationBuilderABC:[1,1,1,""]},"cpl.application.application_builder_abc.ApplicationBuilderABC":{build:[1,2,1,""],use_startup:[1,2,1,""]},"cpl.application.startup_abc":{StartupABC:[1,1,1,""]},"cpl.application.startup_abc.StartupABC":{configure_configuration:[1,2,1,""],configure_services:[1,2,1,""]},"cpl.configuration":{configuration:[2,0,0,"-"],configuration_abc:[2,0,0,"-"],configuration_model_abc:[2,0,0,"-"],configuration_variable_name_enum:[2,0,0,"-"],console_argument:[2,0,0,"-"]},"cpl.configuration.configuration":{Configuration:[2,1,1,""]},"cpl.configuration.configuration.Configuration":{add_configuration:[2,2,1,""],add_console_argument:[2,2,1,""],add_console_arguments:[2,2,1,""],add_environment_variables:[2,2,1,""],add_json_file:[2,2,1,""],additional_arguments:[2,2,1,""],argument_error_function:[2,2,1,""],environment:[2,2,1,""],get_configuration:[2,2,1,""]},"cpl.configuration.configuration_abc":{ConfigurationABC:[2,1,1,""]},"cpl.configuration.configuration_abc.ConfigurationABC":{add_configuration:[2,2,1,""],add_console_argument:[2,2,1,""],add_console_arguments:[2,2,1,""],add_environment_variables:[2,2,1,""],add_json_file:[2,2,1,""],additional_arguments:[2,2,1,""],argument_error_function:[2,2,1,""],environment:[2,2,1,""],get_configuration:[2,2,1,""]},"cpl.configuration.configuration_model_abc":{ConfigurationModelABC:[2,1,1,""]},"cpl.configuration.configuration_model_abc.ConfigurationModelABC":{from_dict:[2,2,1,""]},"cpl.configuration.configuration_variable_name_enum":{ConfigurationVariableNameEnum:[2,1,1,""]},"cpl.configuration.configuration_variable_name_enum.ConfigurationVariableNameEnum":{customer:[2,3,1,""],environment:[2,3,1,""],name:[2,3,1,""],to_list:[2,2,1,""]},"cpl.configuration.console_argument":{ConsoleArgument:[2,1,1,""]},"cpl.configuration.console_argument.ConsoleArgument":{aliases:[2,2,1,""],console_arguments:[2,2,1,""],is_value_token_optional:[2,2,1,""],name:[2,2,1,""],token:[2,2,1,""],value_token:[2,2,1,""]},"cpl.console":{background_color_enum:[3,0,0,"-"],console:[3,0,0,"-"],console_call:[3,0,0,"-"],foreground_color_enum:[3,0,0,"-"],spinner_thread:[3,0,0,"-"]},"cpl.console.background_color_enum":{BackgroundColorEnum:[3,1,1,""]},"cpl.console.background_color_enum.BackgroundColorEnum":{"default":[3,3,1,""],blue:[3,3,1,""],cyan:[3,3,1,""],green:[3,3,1,""],grey:[3,3,1,""],magenta:[3,3,1,""],red:[3,3,1,""],white:[3,3,1,""],yellow:[3,3,1,""]},"cpl.console.console":{Console:[3,1,1,""]},"cpl.console.console.Console":{background_color:[3,3,1,""],banner:[3,2,1,""],clear:[3,2,1,""],close:[3,2,1,""],color_reset:[3,2,1,""],disable:[3,2,1,""],enable:[3,2,1,""],error:[3,2,1,""],foreground_color:[3,3,1,""],read:[3,2,1,""],read_line:[3,2,1,""],reset_cursor_position:[3,2,1,""],select:[3,2,1,""],set_background_color:[3,2,1,""],set_cursor_position:[3,2,1,""],set_foreground_color:[3,2,1,""],set_hold_back:[3,2,1,""],spinner:[3,2,1,""],table:[3,2,1,""],write:[3,2,1,""],write_at:[3,2,1,""],write_line:[3,2,1,""],write_line_at:[3,2,1,""]},"cpl.console.console_call":{ConsoleCall:[3,1,1,""]},"cpl.console.console_call.ConsoleCall":{"function":[3,2,1,""],args:[3,2,1,""]},"cpl.console.foreground_color_enum":{ForegroundColorEnum:[3,1,1,""]},"cpl.console.foreground_color_enum.ForegroundColorEnum":{"default":[3,3,1,""],blue:[3,3,1,""],cyan:[3,3,1,""],green:[3,3,1,""],grey:[3,3,1,""],magenta:[3,3,1,""],red:[3,3,1,""],white:[3,3,1,""],yellow:[3,3,1,""]},"cpl.console.spinner_thread":{SpinnerThread:[3,1,1,""]},"cpl.console.spinner_thread.SpinnerThread":{exit:[3,2,1,""],run:[3,2,1,""],stop_spinning:[3,2,1,""]},"cpl.database":{database_model:[4,0,0,"-"],database_settings:[4,0,0,"-"],database_settings_name_enum:[4,0,0,"-"]},"cpl.database.connection":{database_connection:[5,0,0,"-"],database_connection_abc:[5,0,0,"-"]},"cpl.database.connection.database_connection":{DatabaseConnection:[5,1,1,""]},"cpl.database.connection.database_connection.DatabaseConnection":{connect:[5,2,1,""],engine:[5,2,1,""],session:[5,2,1,""]},"cpl.database.connection.database_connection_abc":{DatabaseConnectionABC:[5,1,1,""]},"cpl.database.connection.database_connection_abc.DatabaseConnectionABC":{connect:[5,2,1,""],engine:[5,2,1,""],session:[5,2,1,""]},"cpl.database.context":{database_context:[6,0,0,"-"],database_context_abc:[6,0,0,"-"]},"cpl.database.context.database_context":{DatabaseContext:[6,1,1,""]},"cpl.database.context.database_context.DatabaseContext":{connect:[6,2,1,""],engine:[6,2,1,""],save_changes:[6,2,1,""],session:[6,2,1,""]},"cpl.database.context.database_context_abc":{DatabaseContextABC:[6,1,1,""]},"cpl.database.context.database_context_abc.DatabaseContextABC":{connect:[6,2,1,""],engine:[6,2,1,""],save_changes:[6,2,1,""],session:[6,2,1,""]},"cpl.database.database_settings":{DatabaseSettings:[4,1,1,""]},"cpl.database.database_settings.DatabaseSettings":{auth_plugin:[4,2,1,""],case_sensitive:[4,2,1,""],connection_string:[4,2,1,""],credentials:[4,2,1,""],echo:[4,2,1,""],encoding:[4,2,1,""],from_dict:[4,2,1,""]},"cpl.database.database_settings_name_enum":{DatabaseSettingsNameEnum:[4,1,1,""]},"cpl.database.database_settings_name_enum.DatabaseSettingsNameEnum":{auth_plugin:[4,3,1,""],case_sensitive:[4,3,1,""],connection_string:[4,3,1,""],credentials:[4,3,1,""],echo:[4,3,1,""],encoding:[4,3,1,""]},"cpl.dependency_injection":{service_collection:[7,0,0,"-"],service_collection_abc:[7,0,0,"-"],service_descriptor:[7,0,0,"-"],service_lifetime_enum:[7,0,0,"-"],service_provider:[7,0,0,"-"],service_provider_abc:[7,0,0,"-"]},"cpl.dependency_injection.service_collection":{ServiceCollection:[7,1,1,""]},"cpl.dependency_injection.service_collection.ServiceCollection":{add_db_context:[7,2,1,""],add_logging:[7,2,1,""],add_scoped:[7,2,1,""],add_singleton:[7,2,1,""],add_transient:[7,2,1,""],build_service_provider:[7,2,1,""]},"cpl.dependency_injection.service_collection_abc":{ServiceCollectionABC:[7,1,1,""]},"cpl.dependency_injection.service_collection_abc.ServiceCollectionABC":{add_db_context:[7,2,1,""],add_logging:[7,2,1,""],add_scoped:[7,2,1,""],add_singleton:[7,2,1,""],add_transient:[7,2,1,""],build_service_provider:[7,2,1,""]},"cpl.dependency_injection.service_descriptor":{ServiceDescriptor:[7,1,1,""]},"cpl.dependency_injection.service_descriptor.ServiceDescriptor":{implementation:[7,2,1,""],lifetime:[7,2,1,""],service_type:[7,2,1,""]},"cpl.dependency_injection.service_lifetime_enum":{ServiceLifetimeEnum:[7,1,1,""]},"cpl.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum":{"transient":[7,3,1,""],scoped:[7,3,1,""],singleton:[7,3,1,""]},"cpl.dependency_injection.service_provider":{ServiceProvider:[7,1,1,""]},"cpl.dependency_injection.service_provider.ServiceProvider":{build_service:[7,2,1,""],get_service:[7,2,1,""]},"cpl.dependency_injection.service_provider_abc":{ServiceProviderABC:[7,1,1,""]},"cpl.dependency_injection.service_provider_abc.ServiceProviderABC":{build_service:[7,2,1,""],get_service:[7,2,1,""]},"cpl.environment":{application_environment:[8,0,0,"-"],application_environment_abc:[8,0,0,"-"],environment_name_enum:[8,0,0,"-"]},"cpl.environment.application_environment":{ApplicationEnvironment:[8,1,1,""]},"cpl.environment.application_environment.ApplicationEnvironment":{application_name:[8,2,1,""],customer:[8,2,1,""],date_time_now:[8,2,1,""],end_time:[8,2,1,""],environment_name:[8,2,1,""],host_name:[8,2,1,""],runtime_directory:[8,2,1,""],set_runtime_directory:[8,2,1,""],set_working_directory:[8,2,1,""],start_time:[8,2,1,""],working_directory:[8,2,1,""]},"cpl.environment.application_environment_abc":{ApplicationEnvironmentABC:[8,1,1,""]},"cpl.environment.application_environment_abc.ApplicationEnvironmentABC":{application_name:[8,2,1,""],customer:[8,2,1,""],date_time_now:[8,2,1,""],end_time:[8,2,1,""],environment_name:[8,2,1,""],host_name:[8,2,1,""],runtime_directory:[8,2,1,""],set_runtime_directory:[8,2,1,""],set_working_directory:[8,2,1,""],start_time:[8,2,1,""],working_directory:[8,2,1,""]},"cpl.environment.environment_name_enum":{EnvironmentNameEnum:[8,1,1,""]},"cpl.environment.environment_name_enum.EnvironmentNameEnum":{development:[8,3,1,""],production:[8,3,1,""],staging:[8,3,1,""],testing:[8,3,1,""]},"cpl.logging":{logger_abc:[9,0,0,"-"],logger_service:[9,0,0,"-"],logging_level_enum:[9,0,0,"-"],logging_settings:[9,0,0,"-"],logging_settings_name_enum:[9,0,0,"-"]},"cpl.logging.logger_abc":{LoggerABC:[9,1,1,""]},"cpl.logging.logger_abc.LoggerABC":{debug:[9,2,1,""],error:[9,2,1,""],fatal:[9,2,1,""],header:[9,2,1,""],info:[9,2,1,""],trace:[9,2,1,""],warn:[9,2,1,""]},"cpl.logging.logger_service":{Logger:[9,1,1,""]},"cpl.logging.logger_service.Logger":{create:[9,2,1,""],debug:[9,2,1,""],error:[9,2,1,""],fatal:[9,2,1,""],header:[9,2,1,""],info:[9,2,1,""],trace:[9,2,1,""],warn:[9,2,1,""]},"cpl.logging.logging_level_enum":{LoggingLevelEnum:[9,1,1,""]},"cpl.logging.logging_level_enum.LoggingLevelEnum":{DEBUG:[9,3,1,""],ERROR:[9,3,1,""],FATAL:[9,3,1,""],INFO:[9,3,1,""],OFF:[9,3,1,""],TRACE:[9,3,1,""],WARN:[9,3,1,""]},"cpl.logging.logging_settings":{LoggingSettings:[9,1,1,""]},"cpl.logging.logging_settings.LoggingSettings":{console:[9,2,1,""],filename:[9,2,1,""],from_dict:[9,2,1,""],level:[9,2,1,""],path:[9,2,1,""]},"cpl.logging.logging_settings_name_enum":{LoggingSettingsNameEnum:[9,1,1,""]},"cpl.logging.logging_settings_name_enum.LoggingSettingsNameEnum":{console_level:[9,3,1,""],file_level:[9,3,1,""],filename:[9,3,1,""],path:[9,3,1,""]},"cpl.mailing":{email:[10,0,0,"-"],email_client_abc:[10,0,0,"-"],email_client_service:[10,0,0,"-"],email_client_settings:[10,0,0,"-"],email_client_settings_name_enum:[10,0,0,"-"]},"cpl.mailing.email":{EMail:[10,1,1,""]},"cpl.mailing.email.EMail":{add_header:[10,2,1,""],add_receiver:[10,2,1,""],body:[10,2,1,""],check_mail:[10,2,1,""],get_content:[10,2,1,""],header:[10,2,1,""],header_list:[10,2,1,""],receiver:[10,2,1,""],receiver_list:[10,2,1,""],subject:[10,2,1,""],transceiver:[10,2,1,""]},"cpl.mailing.email_client_abc":{EMailClientABC:[10,1,1,""]},"cpl.mailing.email_client_abc.EMailClientABC":{connect:[10,2,1,""],send_mail:[10,2,1,""]},"cpl.mailing.email_client_service":{EMailClient:[10,1,1,""]},"cpl.mailing.email_client_service.EMailClient":{connect:[10,2,1,""],create:[10,2,1,""],login:[10,2,1,""],send_mail:[10,2,1,""]},"cpl.mailing.email_client_settings":{EMailClientSettings:[10,1,1,""]},"cpl.mailing.email_client_settings.EMailClientSettings":{credentials:[10,2,1,""],from_dict:[10,2,1,""],host:[10,2,1,""],port:[10,2,1,""],user_name:[10,2,1,""]},"cpl.mailing.email_client_settings_name_enum":{EMailClientSettingsNameEnum:[10,1,1,""]},"cpl.mailing.email_client_settings_name_enum.EMailClientSettingsNameEnum":{credentials:[10,3,1,""],host:[10,3,1,""],port:[10,3,1,""],user_name:[10,3,1,""]},"cpl.time":{time_format_settings:[11,0,0,"-"],time_format_settings_names_enum:[11,0,0,"-"]},"cpl.time.time_format_settings":{TimeFormatSettings:[11,1,1,""]},"cpl.time.time_format_settings.TimeFormatSettings":{date_format:[11,2,1,""],date_time_format:[11,2,1,""],date_time_log_format:[11,2,1,""],from_dict:[11,2,1,""],time_format:[11,2,1,""]},"cpl.time.time_format_settings_names_enum":{TimeFormatSettingsNamesEnum:[11,1,1,""]},"cpl.time.time_format_settings_names_enum.TimeFormatSettingsNamesEnum":{date_format:[11,3,1,""],date_time_format:[11,3,1,""],date_time_log_format:[11,3,1,""],time_format:[11,3,1,""]},"cpl.utils":{credential_manager:[12,0,0,"-"],pip:[12,0,0,"-"],string:[12,0,0,"-"]},"cpl.utils.credential_manager":{CredentialManager:[12,1,1,""]},"cpl.utils.credential_manager.CredentialManager":{build_string:[12,2,1,""],decrypt:[12,2,1,""],encrypt:[12,2,1,""]},"cpl.utils.pip":{Pip:[12,1,1,""]},"cpl.utils.pip.Pip":{get_executable:[12,2,1,""],get_outdated:[12,2,1,""],get_package:[12,2,1,""],install:[12,2,1,""],reset_executable:[12,2,1,""],set_executable:[12,2,1,""],uninstall:[12,2,1,""]},"cpl.utils.string":{String:[12,1,1,""]},"cpl.utils.string.String":{convert_to_camel_case:[12,2,1,""],convert_to_snake_case:[12,2,1,""],first_to_lower:[12,2,1,""],first_to_upper:[12,2,1,""],random_string:[12,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute"},terms:{"abstract":[1,2,5,6,7,8,9,10],"byte":12,"case":12,"char":[3,12],"class":[1,2,3,4,5,6,7,8,9,10,11,12],"default":3,"enum":[2,3,4,7,8,9,10,11],"function":[3,12],"int":[3,12],"new":3,"return":[2,3,4,5,6,7,8,9,10,11,12],"static":[2,10,12],"transient":7,"true":2,The:13,These:13,Useful:[3,12],abc:[1,2,3,5,6,7,8,9,10],about:13,activ:3,add:[2,7,10],add_configur:2,add_console_argu:2,add_db_context:7,add_environment_vari:2,add_head:10,add_json_fil:2,add_log:7,add_receiv:10,add_scop:7,add_singleton:7,add_transi:7,additional_argu:2,address:10,alias:2,ani:3,app:[1,13],applic:[0,3,13,14],application_abc:[0,14],application_build:[0,14],application_builder_abc:[0,14],application_environ:[0,14],application_environment_abc:[0,9,10,14],application_nam:8,applicationabc:1,applicationbuild:1,applicationbuilderabc:1,applicationenviron:8,applicationenvironmentabc:[8,9,10],appset:1,arg:[1,3,6,12],argument:2,argument_error_funct:2,attribut:[2,4,9,10,11],auth_plugin:4,authplugin:4,background:3,background_color:3,background_color_enum:[0,14],backgroundcolorenum:3,banner:3,base64:12,base:[1,2,3,4,5,6,7,8,9,10,11,12],blue:3,bodi:10,bool:[2,3,10],build:[1,12],build_servic:7,build_service_provid:7,build_str:12,call:[1,3],callabl:[2,3,7],camel:12,can:13,case_sensit:4,casesensit:4,chang:6,check:10,check_mail:10,classmethod:[3,12],clear:3,close:3,collect:[2,3,7],color:3,color_reset:3,command:12,common:13,complex:13,config:[1,7],configur:[0,1,4,7,9,10,11,14],configuration_abc:[0,1,7,14],configuration_model_abc:[0,4,9,10,11,14],configuration_variable_name_enum:[0,14],configurationabc:[1,2,7],configurationmodelabc:[2,4,9,10,11],configurationvariablenameenum:2,configure_configur:1,configure_servic:1,connect:[0,4,6,10,14],connection_str:[4,5,6],connectionstr:4,consol:[0,2,9,14],console_argu:[0,14],console_cal:[0,14],console_level:9,consoleargu:2,consolecal:3,consoleloglevel:9,contain:1,context:[0,4,7,14],convert:[2,4,9,10,11,12],convert_to_camel_cas:12,convert_to_snake_cas:12,creat:[1,7,9,10,12,13],credenti:[4,10,12],credential_manag:[0,14],credentialmanag:12,current:8,cursor:3,cursor_background_color:3,cursor_foreground_color:3,custom:[1,2,8],cyan:3,databas:[0,7,14],database_connect:[0,4,14],database_connection_abc:[0,4,14],database_context:[0,4,14],database_context_abc:[0,4,7,14],database_model:[0,14],database_set:[0,5,6,7,14],database_settings_name_enum:[0,14],databaseconnect:5,databaseconnectionabc:5,databasecontext:6,databasecontextabc:[6,7],databaseset:[4,5,6,7],databasesettingsnameenum:4,date_format:11,date_time_format:11,date_time_log_format:11,date_time_now:8,dateformat:11,datetimeformat:11,datetimelogformat:11,db_context:7,db_context_typ:7,db_set:7,debug:9,decod:12,decrypt:12,defin:2,dependency_inject:[0,1,14],desktop:13,detail:13,develop:[8,13],dict:[2,4,9,10,11],directori:8,disabl:3,echo:4,effici:13,email:[0,14],email_client_abc:[0,14],email_client_servic:[0,14],email_client_set:[0,14],email_client_settings_name_enum:[0,14],emailcli:10,emailclientabc:10,emailclientset:10,emailclientsettingsnameenum:10,enabl:3,encod:[4,12],encrypt:12,end:3,end_tim:8,engin:[5,6],enterpris:13,entri:[1,3],enumer:[2,3,4,7,8,9,10,11],env:9,environ:[0,2,9,10,14],environment_nam:8,environment_name_enum:[0,14],environmentnameenum:8,error:[2,3,9],everyth:13,except:9,execut:12,exit:[3,9],fatal:9,file:2,file_level:9,fileloglevel:9,filenam:9,first:[12,13],first_to_low:12,first_to_upp:12,foreground:3,foreground_color:3,foreground_color_enum:[0,14],foregroundcolorenum:3,from:[1,2,13],from_dict:[2,4,9,10,11],get:12,get_configur:2,get_cont:10,get_execut:12,get_outd:12,get_packag:12,get_servic:7,given:[2,3,7,12],great:13,green:3,grei:3,handl:[3,12],has:3,header:[3,9,10],header_background_color:3,header_foreground_color:3,header_list:10,help:13,host:10,host_nam:8,implement:7,info:9,inform:9,input:3,instal:12,instanc:[1,7],instance_typ:7,interact:3,intern:7,invalid:2,is_value_token_opt:2,json:2,key_typ:2,known:2,kwarg:3,learn:13,length:12,level:9,librari:13,lifetim:7,line:3,list:[2,3,7,10,12],load:1,local:12,log:[0,10,14],logfil:9,logger:[7,9,10],logger_abc:[0,10,14],logger_servic:[0,14],loggerabc:[9,10],logging_level_enum:[0,14],logging_set:[0,14],logging_settings_name_enum:[0,14],logginglevelenum:9,loggingset:9,loggingsettingsnameenum:9,login:10,lower:12,magenta:3,mail:[0,14],mail_set:10,main:1,meant:13,menu:3,messag:[3,9],msg_len:3,name:[2,8,9],next:3,none:[2,3,7,9,10,12],object:[1,2,3,7,10,12],off:9,on_blu:3,on_cyan:3,on_default:3,on_green:3,on_grei:3,on_magenta:3,on_r:3,on_whit:3,on_yellow:3,option:[2,3,7,9,10,12],option_background_color:3,option_foreground_color:3,outdat:12,output:[2,3],packag:[12,13],page:13,param:[2,3,4,5,6,7,8,9,10,11,12],path:[2,9],pip:[0,14],platform:13,point:[1,3],port:10,posit:3,prefix:2,prepar:1,print:3,product:8,properti:[2,3,4,5,6,7,8,9,10,11],provid:[1,7],python:13,random:12,random_str:12,read:[2,3],read_lin:3,receiv:10,receiver_list:10,red:3,reset:[3,12],reset_cursor_posit:3,reset_execut:12,run:[1,3],runtim:8,runtime_directori:8,save:[2,6],save_chang:6,scope:7,search_typ:2,select:3,send:10,send_mail:10,server:[10,13],servic:[1,7],service_collect:[0,14],service_collection_abc:[0,14],service_descriptor:[0,14],service_lifetime_enum:[0,14],service_provid:[0,14],service_provider_abc:[0,1,14],service_typ:7,servicecollect:7,servicecollectionabc:7,servicedescriptor:7,servicelifetimeenum:7,serviceprovid:7,serviceproviderabc:[1,7],session:[5,6],set:[1,2,3,4,8,9,10,11,12],set_background_color:3,set_cursor_posit:3,set_execut:12,set_foreground_color:3,set_hold_back:3,set_runtime_directori:8,set_working_directori:8,show:3,shown:2,simpl:13,singleton:7,snake:12,sourc:12,spinner:3,spinner_background_color:3,spinner_foreground_color:3,spinner_thread:[0,14],spinnerthread:3,stage:8,standard:12,start_tim:8,startup:1,startup_abc:[0,14],startupabc:1,stderr:12,stdout:12,stop:3,stop_spin:3,str:[2,3,5,6,8,9,10,12],string:[0,3,5,6,9,10,14],subject:10,submodul:[0,14],system:12,tabl:[3,12],test:8,text_background_color:3,text_foreground_color:3,thi:[1,13],thread:3,time:[0,9,14],time_format:[9,11],time_format_set:[0,9,14],time_format_settings_names_enum:[0,14],timeformat:11,timeformatset:[9,11],timeformatsettingsnamesenum:11,to_list:2,token:2,trace:9,traceback:3,transceiv:10,tree:9,type:[1,2,7],understand:13,uninstal:12,union:[2,3,7],upper:12,use:[1,13],use_startup:1,used:1,user_nam:10,usernam:10,util:[0,14],valid:10,valu:[2,3,4,7,8,9,10,11],value_token:2,variabl:2,warn:9,when:3,white:3,work:8,working_directori:8,write:[3,9],write_at:3,write_lin:3,write_line_at:3,yellow:3,you:13,your:13},titles:["CPL","cpl.application","cpl.configuration","cpl.console","cpl.database","cpl.database.connection","cpl.database.context","cpl.dependency_injection","cpl.environment","cpl.logging","cpl.mailing","cpl.time","cpl.utils","Introduction to the CPL Docs","cpl"],titleterms:{applic:1,application_abc:1,application_build:1,application_builder_abc:1,application_environ:8,application_environment_abc:8,background_color_enum:3,configur:2,configuration_abc:2,configuration_model_abc:2,configuration_variable_name_enum:2,connect:5,consol:3,console_argu:2,console_cal:3,context:6,cpl:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],credential_manag:12,databas:[4,5,6],database_connect:5,database_connection_abc:5,database_context:6,database_context_abc:6,database_model:4,database_set:4,database_settings_name_enum:4,dependency_inject:7,doc:13,email:10,email_client_abc:10,email_client_servic:10,email_client_set:10,email_client_settings_name_enum:10,environ:8,environment_name_enum:8,foreground_color_enum:3,introduct:13,log:9,logger_abc:9,logger_servic:9,logging_level_enum:9,logging_set:9,logging_settings_name_enum:9,mail:10,manual:13,pip:12,service_collect:7,service_collection_abc:7,service_descriptor:7,service_lifetime_enum:7,service_provid:7,service_provider_abc:7,spinner_thread:3,startup_abc:1,string:12,submodul:4,time:11,time_format_set:11,time_format_settings_names_enum:11,util:12}}) \ No newline at end of file diff --git a/docs/source/cpl.rst b/docs/source/cpl.rst index d795b28b..6afbf38c 100644 --- a/docs/source/cpl.rst +++ b/docs/source/cpl.rst @@ -15,10 +15,3 @@ CPL cpl.time cpl.utils -Module contents ---------------- - -.. automodule:: cpl - :members: - :undoc-members: - :show-inheritance: diff --git a/src/cpl/application/application_builder_abc.py b/src/cpl/application/application_builder_abc.py index c316807d..13c0e2d3 100644 --- a/src/cpl/application/application_builder_abc.py +++ b/src/cpl/application/application_builder_abc.py @@ -19,7 +19,7 @@ class ApplicationBuilderABC(ABC): Parameter --------- startup: Type[:class:`cpl.application.startup_abc.StartupABC`] - Type of :class:`cpl.application.startup_abc.StartupABC` + Startup class to use """ pass diff --git a/src/cpl/configuration/configuration.py b/src/cpl/configuration/configuration.py index 4c7edc7b..0aaf67ca 100644 --- a/src/cpl/configuration/configuration.py +++ b/src/cpl/configuration/configuration.py @@ -18,9 +18,7 @@ from cpl.environment.environment_name_enum import EnvironmentNameEnum class Configuration(ConfigurationABC): def __init__(self): - """ - Representation of configuration - """ + r"""Representation of configuration""" ConfigurationABC.__init__(self) self._application_environment = ApplicationEnvironment() @@ -51,11 +49,12 @@ class Configuration(ConfigurationABC): @staticmethod def _print_info(name: str, message: str): - """ - Prints an info message - :param name: - :param message: - :return: + r"""Prints an info message + + Parameter + --------- + name: :class:`str` + message: :class:`str` """ Console.set_foreground_color(ForegroundColorEnum.green) Console.write_line(f'[{name}] {message}') @@ -63,11 +62,12 @@ class Configuration(ConfigurationABC): @staticmethod def _print_warn(name: str, message: str): - """ - Prints a warning - :param name: - :param message: - :return: + r"""Prints a warning + + Parameter + --------- + name: :class:`str` + message: :class:`str` """ Console.set_foreground_color(ForegroundColorEnum.yellow) Console.write_line(f'[{name}] {message}') @@ -75,22 +75,24 @@ class Configuration(ConfigurationABC): @staticmethod def _print_error(name: str, message: str): - """ - Prints an error - :param name: - :param message: - :return: + r"""Prints an error + + Parameter + --------- + name: :class:`str` + message: :class:`str` """ Console.set_foreground_color(ForegroundColorEnum.red) Console.write_line(f'[{name}] {message}') Console.set_foreground_color(ForegroundColorEnum.default) def _set_variable(self, name: str, value: any): - """ - Sets variable to given value - :param name: - :param value: - :return: + r"""Sets variable to given value + + Parameter + --------- + name: :class:`str` + value: :class:`any` """ if name == ConfigurationVariableNameEnum.environment.value: self._application_environment.environment_name = EnvironmentNameEnum(value) @@ -106,12 +108,21 @@ class Configuration(ConfigurationABC): def _validate_argument_by_argument_type(self, argument: str, argument_type: ConsoleArgument, next_arguments: list[str] = None) -> bool: - """ - Validate argument by argument type - :param argument: - :param argument_type: - :param next_arguments: - :return: + r"""Validate argument by argument type + + Parameter + --------- + argument: :class:`str` + argument_type: :class:`cpl.configuration.console_argument.ConsoleArgument` + next_arguments: list[:class:`str`] + + Returns + ------- + Object of :class:`bool` + + Raises + ------ + Exception: An error occurred getting an argument for a command """ argument_name = '' value = '' @@ -240,6 +251,33 @@ class Configuration(ConfigurationABC): return result + def _load_json_file(self, file: str, output: bool) -> dict: + r"""Reads the json file + + Parameter + --------- + file: :class:`str` + Name of the file + output: :class:`bool` + Specifies whether an output should take place + + Returns + ------- + Object of :class:`dict` + """ + try: + # open config file, create if not exists + with open(file, encoding='utf-8') as cfg: + # load json + json_cfg = json.load(cfg) + if output: + self._print_info(__name__, f'Loaded config file: {file}') + + return json_cfg + except Exception as e: + self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') + return {} + def add_environment_variables(self, prefix: str): for variable in ConfigurationVariableNameEnum.to_list(): var_name = f'{prefix}{variable}' @@ -325,31 +363,11 @@ class Configuration(ConfigurationABC): configuration.from_dict(value) self.add_configuration(sub, configuration) - def _load_json_file(self, file: str, output: bool) -> dict: - """ - Reads the json file - :param file: - :param output: - :return: - """ - try: - # open config file, create if not exists - with open(file, encoding='utf-8') as cfg: - # load json - json_cfg = json.load(cfg) - if output: - self._print_info(__name__, f'Loaded config file: {file}') - - return json_cfg - except Exception as e: - self._print_error(__name__, f'Cannot load config file: {file}! -> {e}') - return {} - def add_configuration(self, key_type: Union[str, type], value: ConfigurationModelABC): self._config[key_type] = value - def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[ - str, Callable[ConfigurationModelABC]]: + def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> \ + Union[str, Callable[ConfigurationModelABC]]: if type(search_type) is str: if search_type == ConfigurationVariableNameEnum.environment.value: return self._application_environment.environment_name diff --git a/src/cpl/configuration/configuration_abc.py b/src/cpl/configuration/configuration_abc.py index 0d0e7ed7..0aaf7f17 100644 --- a/src/cpl/configuration/configuration_abc.py +++ b/src/cpl/configuration/configuration_abc.py @@ -11,9 +11,7 @@ class ConfigurationABC(ABC): @abstractmethod def __init__(self): - """ - ABC of configuration - """ + r"""ABC for the :class:`cpl.configuration.configuration.Configuration`""" pass @property @@ -34,58 +32,73 @@ class ConfigurationABC(ABC): @abstractmethod def add_environment_variables(self, prefix: str): - """ - Reads the environment variables - :param prefix: - :return: + r"""Reads the environment variables + + Parameter + --------- + prefix: :class:`str` """ pass @abstractmethod def add_console_argument(self, argument: ConsoleArgument): - """ - Adds console argument to known console arguments - :param argument: - :return: + r"""Adds console argument to known console arguments + + Parameter + --------- + argument: :class:`cpl.configuration.console_argument.ConsoleArgument` """ pass @abstractmethod def add_console_arguments(self, error: bool = None): - """ - Reads the console arguments - :param error: defines is invalid argument error will be shown or not - :return: + r"""Reads the console arguments + + Parameter + --------- + error: :class:`bool` + Defines is invalid argument error will be shown or not """ pass @abstractmethod def add_json_file(self, name: str, optional: bool = None, output: bool = True, path: str = None): - """ - Reads and saves settings from given json file - :param name: - :param optional: - :param output: - :param path: - :return: + r"""Reads and saves settings from given json file + + Parameter + --------- + name: :class:`str` + Name of the file + optional: :class:`str` + Specifies whether an error should occur if the file was not found + output: :class:`bool` + Specifies whether an output should take place + path: :class:`str` + Path in which the file should be stored """ pass @abstractmethod - def add_configuration(self, key_type: Union[str, type], value: object): - """ - Add configuration object - :param key_type: - :param value: - :return: + def add_configuration(self, key_type: Union[str, type], value: ConfigurationModelABC): + r"""Add configuration object + + Parameter + --------- + key_type: Union[:class:`str`, :class:`type`] + value: :class:`cpl.configuration.configuration_model_abc.ConfigurationModelABC` """ pass @abstractmethod def get_configuration(self, search_type: Union[str, Type[ConfigurationModelABC]]) -> Union[str, Callable[ConfigurationModelABC]]: - """ - Returns value in configuration by given type - :param search_type: - :return: + r"""Returns value from configuration by given type + + Parameter + --------- + search_type: Union[:class:`str`, Type[:class:`cpl.configuration.configuration_model_abc.ConfigurationModelABC`]] + + Returns + ------- + Object of Union[:class:`str`, Callable[:class:`cpl.configuration.configuration_model_abc.ConfigurationModelABC`]] """ pass diff --git a/src/cpl/configuration/configuration_model_abc.py b/src/cpl/configuration/configuration_model_abc.py index bcc6ab37..8c1e6849 100644 --- a/src/cpl/configuration/configuration_model_abc.py +++ b/src/cpl/configuration/configuration_model_abc.py @@ -5,16 +5,15 @@ class ConfigurationModelABC(ABC): @abstractmethod def __init__(self): - """ - ABC for settings representation - """ + r"""ABC for settings representation""" pass @abstractmethod def from_dict(self, settings: dict): - """ - Converts attributes to dict - :param settings: - :return: + r"""Converts attributes to dict + + Parameter + --------- + settings: :class:`dict` """ pass diff --git a/src/cpl/configuration/console_argument.py b/src/cpl/configuration/console_argument.py index bc8a4e13..807f74ae 100644 --- a/src/cpl/configuration/console_argument.py +++ b/src/cpl/configuration/console_argument.py @@ -8,14 +8,16 @@ class ConsoleArgument: is_value_token_optional: bool = None, console_arguments: list['ConsoleArgument'] = None ): - """ - Representation of an console argument - :param token: - :param name: - :param aliases: - :param value_token: - :param is_value_token_optional: - :param console_arguments: + r"""Representation of an console argument + + Parameter + --------- + token: :class:`str` + name: :class:`str` + aliases: list[:class:`str`] + value_token: :class:`str` + is_value_token_optional: :class:`bool` + console_arguments: List[:class:`cpl.configuration.console_argument.ConsoleArgument`] """ self._token = token self._name = name