From 4adf6bc834d82465173676dfec45de13f78d468a Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Mon, 17 May 2021 17:22:28 +0200 Subject: [PATCH] Added docs for cpl.dependency_injection --- .../doctrees/cpl.database.connection.doctree | Bin 23089 -> 25687 bytes .../doctrees/cpl.database.context.doctree | Bin 25554 -> 28065 bytes docs/build/doctrees/cpl.database.doctree | Bin 28648 -> 29017 bytes .../doctrees/cpl.dependency_injection.doctree | Bin 85835 -> 115112 bytes docs/build/doctrees/environment.pickle | Bin 126993 -> 126993 bytes docs/build/html/cpl.database.connection.html | 5 + docs/build/html/cpl.database.context.html | 5 + docs/build/html/cpl.database.html | 1 + docs/build/html/cpl.dependency_injection.html | 146 ++++++++++++------ docs/build/html/searchindex.js | 2 +- .../service_collection.py | 1 + .../service_collection_abc.py | 59 +++---- .../service_descriptor.py | 7 + .../dependency_injection/service_provider.py | 8 + .../service_provider_abc.py | 34 ++-- 15 files changed, 182 insertions(+), 86 deletions(-) diff --git a/docs/build/doctrees/cpl.database.connection.doctree b/docs/build/doctrees/cpl.database.connection.doctree index b9e161acbb649ad35843eca895a6726799c2aaa1..de400c608da9be7206ee36170bbfb94172cc4d27 100644 GIT binary patch delta 3320 zcmai0eQZ?hd{HPw&P-@%(+E;=hE+YBIx>ybqZI4^~vd-IAp&49l$fN~pIlIye~G3%3+s&R#7_1%}C|MO*S0 z$uv?;P?|)i&!X?)9`%ozBHeixarDWQ$3}7~J(YvnVtdmVrOuS^&9X}9N8Lr+P*MA0DX_Fw`Qm|kI#WrXmwW{zoDJIKT-6b7$7dIx3- zl`{@A6qMGdX6y>*uT%a({%Y3hD7%5i4tUp5$geSo*Hy8PG{NP%LUs+@1;r%(s;-fJ zr3GoI-w0C$#q7&$t6$ewu@nl{cweRXOf{)4ag~1Ek>Q@0T1wURbSK3qgHx@=P_#OX z*zCEwN|+(yF$NP`oKWh|gX^J#)@5AFBadel%u;ezbE)auNC5*4_lTV+P02-D7+=Ss zt=PxwIUFl?@errIlSRU&0|$;>t6;(FU$VZ?vn9HRRSMvX;s@TrT+< zD|E^^#{1H~ceW45M<^QQNs-tC)e;{M)`BP85SsKx2{=kXgYpG^LYVR zW|XZSUD-V+G3smMFw$I;JC?oMaI(A{Zn~GSU%`j&mFyxsaC_O=l&$m-I`P^h8FsY)|m5j?KLXs6kG23LQ!#iWh^jiR1)jV5J7REu$xEEpH%h z*VIyd6+?{eMoa0y_cIRiA@r{fq2eTE0v@hGjp2 zzKjhXgTJhQhP{(s2TF3@G9~!}CE4ax%|gb)ig7f@!=>)S^D#!Q+}g=MPU%ypY-b-p z+~3Hi;IiM#K7nO{e7Ib^p8X#GLi|e;o%NjCln)V!7>7jQuhIuNPxD9p!#S^$^sD#N zJVx$l+4O{GfB#{Phcm<$us7Duk)thJCyOKJ%W*@#$2#Q}TeoKW@hnD={~mHn)`7$w?Tm{wJG+ z?X_RSiQr2-BvF^}4N|JTb~)p%617R*1~SmwWE=jTag4G(2tudKU6Mwbhcp3FCPzVO zK@okBGvRKN2aqw{gfF2C9Muy~W=i`hX7tmvGqwvR8_K9N%<2VP=)?tW3ige%cL9ur z-RhU{?EILG!*r_$eiBmPosIWd4P4pc%5duYl!#NjM`@)mK}%!x+g-G`cR&4 zD6|1VOJy=y@&~TRg4w@jYZkTPjtIX8AMXcL2eC*XKx7xDwYCnl(a&CD3If|c0{bQf zrk)7${g|{b=$Ts=F;ZPX;So658e!w9i<>Qsx62xBwr5ycY+hh*o zXM|-DjQ2>s2*%T4f9`Q&61{uJv|FM^OZS_Mt9k7I?V_H#;B>gaR3VO}TH2PHxYL~4 zvHhGW@^@1Hj)rH5bUJ8wNYe*63@5DdDBguf2V#TtxD})w(KI8PR%BT9kenQ-HqikM z9bu*0j1yPl64p8n9{b}E+UW?45_{9bN?fDsl&)=IqF{7OYQaPo{T-p#hYgx&` z=-4)AU{7b1y@BF#zK^wZ_Z{p=Le=VvEHfq?wdVC3x7i`M*gqx0V0^ delta 2690 zcmZuzX-rgC6z0Bp17in-kwuspU>HYM6_7;{I}G3wK#)z0D8h_D9v4|;Nu;T*{!n8& zjgm8_f2yr9{xQ)6r%k9tR8muI|5T~er7f+Nwx+4YCT)|Zu|4O`8$jUCeea%omhYbB zd++PpZ0IAVJ*+*QSU;q_5(ZUrt~WGFFG=+bPT4ZF?6WRQ?p2`^2y5Z`ebLl-p+j?|doLsuy5GPf`Jj0{cu z79mcC^n87AwQwbL#~^)KiZ?lS9h0UQIOEc#X$B3O&C(wXGV>hrb5s?W!{SZSzYH$t z<)om9Zy*bY1r(a1`#u29KTZ<8=052Ae2mC2%zj8LoU@ZO#i-8N4Gt34r z;%rg76vaq_Zx=*)gc2w;So9C* z$i(lf`z7PP{TSx2BrBwbcK$4bvm{CH4s7n~aJF@Ncs+b$wX!Do&ziuhy$LHi7&{0j zZ8^F=3XeuGnD_-K+p^ek6ldC~Bm75r9tJ%YyB)UwC3w~c^_C_TujD1RAq#F{9M%{+DQVZDl42&D7s$T0J zz0QL%0+z%o?41ZS)4}1i3F(>-(Y3jDvxxqp$crHQhvbB)+bWRD8o!=)-+pIruL@j8 zVwd;G>OLk#Xhbi@r|XyjlG8uOwQ=nP+{u{2x9RO^@F=rF+Db~m7oN2E!Lg4q8fIO(u@VzAxy+z zI5aauRFvajZ-R5Z5zge;Y{y9_sKKK|xr3apeQOGfiakd?M?5r>T7_Elghq_cQB?Gg z4g+xJ=I9TiNQ@3|g>$*TqSvte)bI0cW4LplUmHyN~q%lRpox>PSk9wn>=^@h* z0n_2Z@QHDKEJ1VYx(7C>HS?!s93un?&3IE3dy0T(xoVQ)5TOaKdIiVA)DQbppUqmm z=AtD`8ktQo@|4alqmhYkgrV0{h^FjU>0+^>8hLbvdFglYudrw-v+2f4@P`XU-!aJD zbX@w8!Szk;QmstX#u{PI=2+&$+l0fV@HMPK%|Ie+hf8@mYjQD)S{@9&2)U_SISGTWSkN_2uSBXKIAbeS1G-ZG>+=98^}&aLmTlWNp3AL9+u*(~E7Bflv@szVrZ z*h1!zU8RT`t}@-6sO7@x_l==CmFh}o1S;3%fu$rnWQ20+qdIIBWE;Df*;{n;MP~aB z$z6Dr6Eq@?!qUV=mzp_+2Sc(Qw57vrK+Ns4(snk91DizALC`9j3-qT;2%_@0!e6}*z< z9jy#!(gxaP2-;3UQx#wyz0Lz@g%{f@SSy%|EYMw}gR|8?;Fs%gjU&W1*N~FxgV;b& z7D=j;J{72ZW31o{T@5nAXo#CyoSfdZw|@)K^MDu21e(;=fF!SC$~ zbeCUQ=TV2A)TtggO?EOOZs)_a5Y_Mr>P>1YZYAeQ-lDxHm>e63o(l~tH70I^zZ;$M zY7!7hb?Sn`cpC0-dX4nJ9}@g`$bjojwzz1Yd<^lcEuj9$$QV5an6q6jAxG%>H51>0 zuP9#yA2`e8og|+hfHW|`Rl%1I*Rrf)6u1L>yZU?fwRptnxaIwAoh_a+ndV!K@8>x( K)j)XjrvCvEVBbgp diff --git a/docs/build/doctrees/cpl.database.context.doctree b/docs/build/doctrees/cpl.database.context.doctree index be4cce9d2d9d27eb5f3bc6a3fc13273034e434dc..a2cc61faa2f6b9d36879e90bfff4f1ea02e0040c 100644 GIT binary patch delta 4051 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 delta 3227 zcmaKueNa?Y6u>=iKlqT%T|iJ5kp+ZZJ{IId!Vne&QPh=E##GjAS;@ym!4jr&Y}B!4 zs$oW*v!*$v)R^U%I{GHd#z|^QEg7?#{-}vmtYo4Yhsh}&ChMMepT3pW{@C;Go_jui z_ug|qz8{34%V64K+BML5-1LYQujQ93zuD{{Jqh@UztHrZY-cT4k#Gx52}PN==pT$5 zCxdK|Q&<-@r+T|vTIJN|Lryu(7h*mPOs+>yMm&BTABQ&*KbHJ}h51z$f4CoB^<|Im zF|Y1i7ijAUu|1fdln(op#-wc^ozyd*P+}(m;J3*l^$9)1XAx2#Q38`)ARQC=j)fcZ ze9ny5xrPmqc!P@`^Sah9xpQ@h?I+dmBzn>9YEquH=L1M+%PN)bfHII01Ne4|Ah^S= zw82}Y{|^4PI{0m=L(-^#7!9}AAxgM!B#4JeFCdnu*#W#NM1zF06W+sohXq^HE3wNV zSQ-dGEJSkzmO8ZM(L($P^;nSavDAl~>nK|&WrX>7f%F0;cDfm0FQLGzSf6zbtyzNL zRXyap)ErX^J5_>n*%tv-0t`3T3Hm8h1cFPX?^WEcH2}Y=*$1&d=LYV|5!naza5t$r zCi{S5%bN;tSxtR8+*VIL$q+ep3hBk*Q{0z8DmL)VP$Cr=@TmJVUMV~ZjktY=Guq4T z_?BqEGc#%-z*Q4*a#4cIuc`T`yG2gwfwa(zp{*g>A|}~P4r&iuj7>!z=~)9-S5L!} zMJtQDRDIyyZj#gaj#|l;0XfqblC${F=?itsIqYs`1MaU$#T`}AG4r??4_!;qR84k` z&=k-|)JZip$IO!p`-JfJqoUW}@22A^gfmlWPbRy6-?4qmNHme_ppS366R^M34ZS?~H1t7Pmk;h{7Y6kqU`WM)Z`)YD5 zeR_tF5$}{F;c!iH^cSSHvvYi&^02Qa3YX702O)ISj&ezJKd-J8hVRazblr$QHJ!&J za~ttUUD0&9m#$L;QP{WD6!+gmgEZ#(;8*t5$AI)RjjhV^bGQ$cR+(BRQ%xLPJ%eHb zU0qMNwRCs2YNg_!u3kQ-mubenR1?}+2tBK6anJlS8tk@)4ynvUrvwx$&IRd!BMn8F zL|M%JHOe|_j@f>0>|NNvA%_=E0IATVLKcR*=#Xth5*czGbv*!b*!#H(`IfXz0B%-Z zY0L#&(kK8o>)Ccva}3}{0vt~jqt;GO4muj9;Ks*Bq)mc$Q@FoQ`#vE>raeVn51?&c zdg|W#Pr>bvTTpJQl)e(=7nFe}JK(`4L4HBcJV4Dc^Swb`5%@-e6R{&`x0LJq(`%$fDOUIAJNF{qcZ?s7 z7%dh@g2`qlkJRHt>%*x^-s*D_Tvl#Ax!=%qid;@|A-Bu2yju>jC@O6uiR09Fl#A}3 zn2rE{9zM6ebpu`7jJ&*ZyI0=rRqeg1t+!iFqu!G^#Fl^qE85>2Pl4pU@`o%v3VVH1 zP+B`J+7ZQdDLp&z>tzA-+Y0d1+Qel(Iwt8c&5n?uw=KI(g5H>{jvhbs!ecv0&`XOA zkf2u&bJ49v_qs~UVhNtcE0Rt&@ISaUI|1G87LFBIrz|29sy%-7l#wCb7i^FOoubT5 zJCaT+wvhxK3G6Hh+F~r8=7p-4ts)Ur0v#`bv^q+CX{1?W40aa4iR%MWmr(KNi1le2 sGuNv_r)!zsDgEm+GwJ^CF|KXvXbmke(o@DSEDv(MwmWh$@u|9h0al!`x&QzG diff --git a/docs/build/doctrees/cpl.dependency_injection.doctree b/docs/build/doctrees/cpl.dependency_injection.doctree index 23b7d476eea4627c5544ad81d1764fe6977da377..291c24b34331a460ef9ac47e7bc8cec60772ceeb 100644 GIT binary patch literal 115112 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 KQ0F_$i*X()?`%8%I?25>_#b3xIhgC5t) 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 diff --git a/docs/build/html/cpl.database.connection.html b/docs/build/html/cpl.database.connection.html index 60a29905..49d10b06 100644 --- a/docs/build/html/cpl.database.connection.html +++ b/docs/build/html/cpl.database.connection.html @@ -189,6 +189,10 @@
class cpl.database.connection.database_connection.DatabaseConnection(database_settings: cpl.database.database_settings.DatabaseSettings)

Bases: cpl.database.connection.database_connection_abc.DatabaseConnectionABC

+

Representation of the database connection

+
+
connect(connection_string: str)
@@ -220,6 +224,7 @@
class cpl.database.connection.database_connection_abc.DatabaseConnectionABC

Bases: abc.ABC

+

ABC for the cpl.database.connection.database_connection.DatabaseConnection

abstract connect(connection_string: str)
diff --git a/docs/build/html/cpl.database.context.html b/docs/build/html/cpl.database.context.html index 99bf126d..43573f79 100644 --- a/docs/build/html/cpl.database.context.html +++ b/docs/build/html/cpl.database.context.html @@ -189,6 +189,10 @@
class cpl.database.context.database_context.DatabaseContext(database_settings: cpl.database.database_settings.DatabaseSettings)

Bases: cpl.database.context.database_context_abc.DatabaseContextABC

+

Representation of the database context

+
+
connect(connection_string: str)
@@ -226,6 +230,7 @@
class cpl.database.context.database_context_abc.DatabaseContextABC(*args)

Bases: abc.ABC

+

ABC for the cpl.database.context.database_context.DatabaseContext

abstract connect(connection_string: str)
diff --git a/docs/build/html/cpl.database.html b/docs/build/html/cpl.database.html index 20a2e1d6..3b467d36 100644 --- a/docs/build/html/cpl.database.html +++ b/docs/build/html/cpl.database.html @@ -203,6 +203,7 @@
class cpl.database.database_settings.DatabaseSettings

Bases: cpl.configuration.configuration_model_abc.ConfigurationModelABC

+

Represents settings for the database connection

property auth_plugin
diff --git a/docs/build/html/cpl.dependency_injection.html b/docs/build/html/cpl.dependency_injection.html index c480dd0d..eb1b5b1d 100644 --- a/docs/build/html/cpl.dependency_injection.html +++ b/docs/build/html/cpl.dependency_injection.html @@ -183,13 +183,15 @@
class cpl.dependency_injection.service_collection.ServiceCollection(config: cpl.configuration.configuration_abc.ConfigurationABC)

Bases: cpl.dependency_injection.service_collection_abc.ServiceCollectionABC

+

Representation of the collection of services

add_db_context(db_context_type: Type[cpl.database.context.database_context_abc.DatabaseContextABC], db_settings: cpl.database.database_settings.DatabaseSettings)
-

Adds database context -:param db_context: -:param db_settings: -:return:

+

Adds database context

+
+
@@ -201,34 +203,40 @@
add_scoped(service_type: Type, service: Optional[Callable] = None)
-

Adds a service with scoped lifetime -:param service_type: -:param service: -:return:

+

Adds a service with scoped lifetime

+
+

service_type: Type +service: Callable

+
add_singleton(service_type: Union[type, object], service: Optional[Union[type, object]] = None)
-

Adds a service with singleton lifetime -:param service_type: -:param service: -:return:

+

Adds a service with singleton lifetime

+
+

service_type: Type +service: Callable

+
add_transient(service_type: type, service: Optional[type] = None)
-

Adds a service with transient lifetime -:param service_type: -:param service: -:return:

+

Adds a service with transient lifetime

+
+

service_type: Type +service: Callable

+
build_service_provider()cpl.dependency_injection.service_provider_abc.ServiceProviderABC

Creates instance of the service provider

+
+
@@ -240,13 +248,15 @@
class cpl.dependency_injection.service_collection_abc.ServiceCollectionABC

Bases: abc.ABC

+

ABC for the class cpl.dependency_injection.service_collection.ServiceCollection

abstract add_db_context(db_context: Type[cpl.database.context.database_context_abc.DatabaseContextABC], db_settings: cpl.database.database_settings.DatabaseSettings)
-

Adds database context -:param db_context: -:param db_settings: -:return:

+

Adds database context

+
+
@@ -258,34 +268,40 @@
abstract add_scoped(service_type: Type, service: Optional[collections.abc.Callable] = None)
-

Adds a service with scoped lifetime -:param service_type: -:param service: -:return:

+

Adds a service with scoped lifetime

+
+

service_type: Type +service: Callable

+
abstract add_singleton(service_type: Type, service: Optional[collections.abc.Callable] = None)
-

Adds a service with singleton lifetime -:param service_type: -:param service: -:return:

+

Adds a service with singleton lifetime

+
+

service_type: Type +service: Callable

+
abstract add_transient(service_type: Type, service: Optional[collections.abc.Callable] = None)
-

Adds a service with transient lifetime -:param service_type: -:param service: -:return:

+

Adds a service with transient lifetime

+
+

service_type: Type +service: Callable

+
abstract build_service_provider()cpl.dependency_injection.service_provider_abc.ServiceProviderABC

Creates instance of the service provider

+
+
@@ -297,6 +313,11 @@
class cpl.dependency_injection.service_descriptor.ServiceDescriptor(implementation: Optional[Union[type, object]], lifetime: cpl.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum)

Bases: object

+

Descriptor of a service

+
+

implementation: Union[type, Optional[object]] +lifetime: cpl.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum

+
property implementation
@@ -346,20 +367,40 @@
class cpl.dependency_injection.service_provider.ServiceProvider(service_descriptors: list, config: cpl.configuration.configuration_abc.ConfigurationABC, db_context: Optional[cpl.database.context.database_context_abc.DatabaseContextABC])

Bases: cpl.dependency_injection.service_provider_abc.ServiceProviderABC

+

Provider for the services

+
+
build_service(service_type: type)object
-

Creates instance of given type -:param service_type: -:return:

+

Creates instance of given type

+
+
+
instance_type: Type

The type of the searched instance

+
+
+
+
+

Object of the given type

+
get_service(service_type: type)Optional[collections.abc.Callable[object]]
-

Returns instance of given type -:param instance_type: -:return:

+

Returns instance of given type

+
+
+
instance_type: Type

The type of the searched instance

+
+
+
+
+

Object of type Optional[Callable[object]]

+
@@ -371,20 +412,35 @@
class cpl.dependency_injection.service_provider_abc.ServiceProviderABC

Bases: abc.ABC

+

ABC for the class cpl.dependency_injection.service_provider.ServiceProvider

-abstract build_service(service_type: type)object
-

Creates instance of given type -:param service_type: -:return:

+abstract build_service(service_type: Type)object +

Creates instance of given type

+
+
+
instance_type: Type

The type of the searched instance

+
+
+
+
+

Object of the given type

+
abstract get_service(instance_type: Type)Optional[collections.abc.Callable[object]]
-

Returns instance of given type -:param instance_type: -:return:

+

Returns instance of given type

+
+
+
instance_type: Type

The type of the searched instance

+
+
+
+
+

Object of type Optional[Callable[object]]

+
diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 330b9295..dba2ca15 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.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,7,8,9,10,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,3],argument_error_funct:2,attribut:[2,4,9,10,11],auth_plugin:4,authplugin:4,back:3,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],befor:3,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,charact:3,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,9,10,11,12],convert_to_camel_cas:12,convert_to_snake_cas:12,coordin:3,core:[5,6],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,3,4,9,10,11],directori:8,disabl:3,doc:[5,6],echo:4,effici:13,element:3,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,found:2,from:[1,2,4,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,4,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,hold:3,host:10,host_nam:8,html:[5,6],http:[5,6],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,keyword:3,known:2,kwarg:3,last:3,learn:13,length:[3,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],occur:2,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,org:[5,6],outdat:12,output:[2,3],packag:[12,13],page:13,param:[7,8,9,10,12],path:[2,9],pip:[0,14],place:2,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,repres: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:2,search_typ:2,see:[5,6],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,should:2,show:3,shown:2,simpl:13,singleton:7,snake:12,sourc:12,specifi:2,spinner:3,spinner_background_color:3,spinner_foreground_color:3,spinner_thread:[0,14],spinnerthread:3,sqlalchemi:[5,6],stage:8,standard:12,start_tim:8,startup:1,startup_abc:[0,14],startupabc:1,stderr:12,stdout:12,stop:3,stop_spin:3,store:2,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],take:2,termin:3,test:8,text:3,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,whether:2,which:[2,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 +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,7,8,9,10,12],"static":[2,10,12],"transient":7,"true":2,The:[7,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,3],argument_error_funct:2,attribut:[2,4,9,10,11],auth_plugin:4,authplugin:4,back:3,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],befor:3,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,charact:3,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,9,10,11,12],convert_to_camel_cas:12,convert_to_snake_cas:12,coordin:3,core:[5,6],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],descriptor:7,desktop:13,detail:13,develop:[8,13],dict:[2,3,4,9,10,11],directori:8,disabl:3,doc:[5,6],echo:4,effici:13,element:3,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,found:2,from:[1,2,4,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,4,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,hold:3,host:10,host_nam:8,html:[5,6],http:[5,6],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,keyword:3,known:2,kwarg:3,last:3,learn:13,length:[3,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],occur:2,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,org:[5,6],outdat:12,output:[2,3],packag:[12,13],page:13,param:[8,9,10,12],path:[2,9],pip:[0,14],place:2,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,repres:[3,4],represent:[5,6,7],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:[2,7],search_typ:2,see:[5,6],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,should:2,show:3,shown:2,simpl:13,singleton:7,snake:12,sourc:12,specifi:2,spinner:3,spinner_background_color:3,spinner_foreground_color:3,spinner_thread:[0,14],spinnerthread:3,sqlalchemi:[5,6],stage:8,standard:12,start_tim:8,startup:1,startup_abc:[0,14],startupabc:1,stderr:12,stdout:12,stop:3,stop_spin:3,store:2,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],take:2,termin:3,test:8,text:3,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,whether:2,which:[2,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/src/cpl/dependency_injection/service_collection.py b/src/cpl/dependency_injection/service_collection.py index 157a012c..5b96e1ff 100644 --- a/src/cpl/dependency_injection/service_collection.py +++ b/src/cpl/dependency_injection/service_collection.py @@ -14,6 +14,7 @@ from cpl.utils.credential_manager import CredentialManager class ServiceCollection(ServiceCollectionABC): + r"""Representation of the collection of services""" def __init__(self, config: ConfigurationABC): ServiceCollectionABC.__init__(self) diff --git a/src/cpl/dependency_injection/service_collection_abc.py b/src/cpl/dependency_injection/service_collection_abc.py index c77ac6b6..74d259f3 100644 --- a/src/cpl/dependency_injection/service_collection_abc.py +++ b/src/cpl/dependency_injection/service_collection_abc.py @@ -8,64 +8,67 @@ from cpl.dependency_injection.service_provider_abc import ServiceProviderABC class ServiceCollectionABC(ABC): + r"""ABC for the class :class:`cpl.dependency_injection.service_collection.ServiceCollection`""" @abstractmethod def __init__(self): - """ - ABC for service providing - """ pass @abstractmethod def add_db_context(self, db_context: Type[DatabaseContextABC], db_settings: DatabaseSettings): - """ - Adds database context - :param db_context: - :param db_settings: - :return: + r"""Adds database context + + Parameter + --------- + db_context: Type[:class:`cpl.database.context.database_context_abc.DatabaseContextABC`] + db_settings: :class:`cpl.database.database_settings.DatabaseSettings` """ pass @abstractmethod def add_logging(self): - """ - Adds the CPL internal logger - """ + r"""Adds the CPL internal logger""" pass @abstractmethod def add_transient(self, service_type: Type, service: Callable = None): - """ - Adds a service with transient lifetime - :param service_type: - :param service: - :return: + r"""Adds a service with transient lifetime + + Parameter + --------- + service_type: :class:`Type` + service: :class:`Callable` """ pass @abstractmethod def add_scoped(self, service_type: Type, service: Callable = None): - """ - Adds a service with scoped lifetime - :param service_type: - :param service: - :return: + r"""Adds a service with scoped lifetime + + Parameter + --------- + service_type: :class:`Type` + service: :class:`Callable` """ pass @abstractmethod def add_singleton(self, service_type: Type, service: Callable = None): - """ - Adds a service with singleton lifetime - :param service_type: - :param service: - :return: + r"""Adds a service with singleton lifetime + + Parameter + --------- + service_type: :class:`Type` + service: :class:`Callable` """ pass @abstractmethod def build_service_provider(self) -> ServiceProviderABC: - """ - Creates instance of the service provider + r"""Creates instance of the service provider + + Returns + ------- + Object of type :class:`cpl.dependency_injection.service_provider_abc.ServiceProviderABC` """ pass diff --git a/src/cpl/dependency_injection/service_descriptor.py b/src/cpl/dependency_injection/service_descriptor.py index 845089ac..a1f384cb 100644 --- a/src/cpl/dependency_injection/service_descriptor.py +++ b/src/cpl/dependency_injection/service_descriptor.py @@ -4,6 +4,13 @@ from cpl.dependency_injection.service_lifetime_enum import ServiceLifetimeEnum class ServiceDescriptor: + r"""Descriptor of a service + + Parameter + --------- + implementation: Union[:class:`type`, Optional[:class:`object`]] + lifetime: :class:`cpl.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum` + """ def __init__(self, implementation: Union[type, Optional[object]], lifetime: ServiceLifetimeEnum): diff --git a/src/cpl/dependency_injection/service_provider.py b/src/cpl/dependency_injection/service_provider.py index c4c8b2df..54964c0b 100644 --- a/src/cpl/dependency_injection/service_provider.py +++ b/src/cpl/dependency_injection/service_provider.py @@ -12,6 +12,14 @@ from cpl.environment.application_environment_abc import ApplicationEnvironmentAB class ServiceProvider(ServiceProviderABC): + r"""Provider for the services + + Parameter + --------- + service_descriptors: list[:class:`cpl.dependency_injection.service_descriptor.ServiceDescriptor`] + config: :class:`cpl.configuration.configuration_abc.ConfigurationABC` + db_context: Optional[:class:`cpl.database.context.database_context_abc.DatabaseContextABC`] + """ def __init__(self, service_descriptors: list[ServiceDescriptor], config: ConfigurationABC, db_context: Optional[DatabaseContextABC]): ServiceProviderABC.__init__(self) diff --git a/src/cpl/dependency_injection/service_provider_abc.py b/src/cpl/dependency_injection/service_provider_abc.py index 042b0355..570035ad 100644 --- a/src/cpl/dependency_injection/service_provider_abc.py +++ b/src/cpl/dependency_injection/service_provider_abc.py @@ -4,28 +4,38 @@ from typing import Type, Optional class ServiceProviderABC(ABC): + r"""ABC for the class :class:`cpl.dependency_injection.service_provider.ServiceProvider`""" @abstractmethod def __init__(self): - """ - ABC for service providing - """ pass @abstractmethod - def build_service(self, service_type: type) -> object: - """ - Creates instance of given type - :param service_type: - :return: + def build_service(self, service_type: Type) -> object: + r"""Creates instance of given type + + Parameter + --------- + instance_type: :class:`Type` + The type of the searched instance + + Returns + ------- + Object of the given type """ pass @abstractmethod def get_service(self, instance_type: Type) -> Optional[Callable[object]]: - """ - Returns instance of given type - :param instance_type: - :return: + r"""Returns instance of given type + + Parameter + --------- + instance_type: :class:`Type` + The type of the searched instance + + Returns + ------- + Object of type Optional[Callable[:class:`object`]] """ pass