summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-18 04:01:28 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-18 04:01:28 +0000
commit6bca8aeb8172e105cb6a2c53510cb80e2acfde1e (patch)
tree579a72f6ab5d9aab7703b9c841a40713d8b6ae4a
parent4141de22a4819353cf608fc4a5e2c54e21046a71 (diff)
automatic import of python-pspring
-rw-r--r--.gitignore1
-rw-r--r--python-pspring.spec414
-rw-r--r--sources1
3 files changed, 416 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..36a7408 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pspring-0.0.39.tar.gz
diff --git a/python-pspring.spec b/python-pspring.spec
new file mode 100644
index 0000000..a088fff
--- /dev/null
+++ b/python-pspring.spec
@@ -0,0 +1,414 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pspring
+Version: 0.0.39
+Release: 1
+Summary: A framework inspired by spring for python
+License: TBD
+URL: https://github.com/vasudevan-palani/pspring
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ff/97/17ed7f27b971305852623c891fed144d9fe02b89e94c790d3a201a91b5e1/pspring-0.0.39.tar.gz
+BuildArch: noarch
+
+
+%description
+# pspring
+
+This is a lightweight framework to enable python developers to quickly develop apps with annotations/decorators. Inspired by Spring Framework of Java, the framework provides the ability for IOC ( Inversion of control ) and Autowiring the beans.
+
+The default environment variables can always be found `defaultvars.py` file
+
+Below is the index the annotations/decorators supported by this module
+
+* `@Bean(name="")`
+
+ This decorator will register the class or method ( which returns an instance of bean ) to the pspring application context. You can provide an optional `name` attribute to register the bean with a qualified name. Providing no name would register the bean for its type ( and its base classes )
+
+
+* `@Autowired(name=beanname)`
+
+ This decorator is the heard of dependency injection and will autowire the arguments of a method ( especially used in `__init__` constructor ). You can provide a list of name value pairs where, `name` is the argument name in the method definition for which a bean named `beanname` would be injected with that qualifier.
+
+## Configuration Framework
+
+Configuring applications can get complicated with environment variables, default variables and various source of configurations ( like secrets, encrypted variables etc ).
+
+pspring brings a configuration framework which can be used exhaustively for developing cloud applications. The idea in Configuration framework is to provide a standard interface for applications to fetch properties.
+
+The two classes which forms the backbone of this framework are `Configuration` and `ConfigurationProvider`. During the application start up, the framework needs to be initialized with a list of ConfigurationProviders as shown below
+
+```python
+
+from pspsring import Configuration, ConfigurationProvider
+
+config = {
+ "firstname" : "dave",
+ "lastname" : "picaso"
+}
+
+# A simple dictionary based config provider
+class DictionaryConfigurationProvider(ConfigurationProvider):
+ def getProperty(propertyName):
+ return config.get(propertyName)
+
+Configuration.initialize([
+ DictionaryConfigurationProvider()
+])
+
+config = Configuration.getConfig(__name__)
+
+# will print 'dave'
+print(config.getProperty("firstname"))
+
+
+```
+
+Within a module, the configuration provides a means for namespace to avoid property name conflicts.
+
+Example:
+```python
+
+from pspsring import Configuration
+config = Configuration.getConfig(__name__)
+
+print(config.getProperty("firstname"))
+
+```
+
+In the above code, we create a configiration accessor instance by passing in the module name ( __name__ ). This will create a namespace under which the property lives. For Eg: if the file is saved under the package as com/example/application.py, the property name will be actually referenced as `com.example.application.firstname`.
+
+when getProperty method is invoked
+
+ 1) the property is looked up in environment variables
+ 2) the property is searched in the given list of ConfigurationProviders during initialization
+ 3) the property is searched in the defaults
+ 4) Search the property one above the hierarchy in the namespace starting from step 1. ( Eg: com.example.firstname )
+
+The above search sequence is pursued until the property is found. If the property is not found,then `None` is returned.
+
+pspring along with pspring-aws provides a wealth of ConfigurationProviders ( SecretsMgrConfigProvider, DynamodbConfigProvider, RealTimeSecretsMgrConfigProvider etc...) that can be used with aws.
+
+## Usage
+
+The context of pspring should be initialized before any dependency injection is expected. A sample of code is show below
+
+```python
+import sys,os
+
+from pspring import *
+
+config = Configuration.getConfig(__name__)
+
+@Bean(name="loggerBeanName")
+class Logger():
+ def __init__():
+ pass
+
+ def sayHi(self,name):
+ print("Hi "+str(name));
+
+class MyApp():
+ @Autowired(mylogger="loggerBeanName")
+ def __init__(self,mylogger:Logger):
+ self.logger = mylogger
+
+os.environ["name"] = "dave"
+
+Configuration.initialize([])
+
+ApplicationContext.initialize()
+
+
+app = MyApp()
+
+# prints "Hi dave"
+app.logger.sayHi(config.getProperty("name"))
+```
+
+
+
+
+%package -n python3-pspring
+Summary: A framework inspired by spring for python
+Provides: python-pspring
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pspring
+# pspring
+
+This is a lightweight framework to enable python developers to quickly develop apps with annotations/decorators. Inspired by Spring Framework of Java, the framework provides the ability for IOC ( Inversion of control ) and Autowiring the beans.
+
+The default environment variables can always be found `defaultvars.py` file
+
+Below is the index the annotations/decorators supported by this module
+
+* `@Bean(name="")`
+
+ This decorator will register the class or method ( which returns an instance of bean ) to the pspring application context. You can provide an optional `name` attribute to register the bean with a qualified name. Providing no name would register the bean for its type ( and its base classes )
+
+
+* `@Autowired(name=beanname)`
+
+ This decorator is the heard of dependency injection and will autowire the arguments of a method ( especially used in `__init__` constructor ). You can provide a list of name value pairs where, `name` is the argument name in the method definition for which a bean named `beanname` would be injected with that qualifier.
+
+## Configuration Framework
+
+Configuring applications can get complicated with environment variables, default variables and various source of configurations ( like secrets, encrypted variables etc ).
+
+pspring brings a configuration framework which can be used exhaustively for developing cloud applications. The idea in Configuration framework is to provide a standard interface for applications to fetch properties.
+
+The two classes which forms the backbone of this framework are `Configuration` and `ConfigurationProvider`. During the application start up, the framework needs to be initialized with a list of ConfigurationProviders as shown below
+
+```python
+
+from pspsring import Configuration, ConfigurationProvider
+
+config = {
+ "firstname" : "dave",
+ "lastname" : "picaso"
+}
+
+# A simple dictionary based config provider
+class DictionaryConfigurationProvider(ConfigurationProvider):
+ def getProperty(propertyName):
+ return config.get(propertyName)
+
+Configuration.initialize([
+ DictionaryConfigurationProvider()
+])
+
+config = Configuration.getConfig(__name__)
+
+# will print 'dave'
+print(config.getProperty("firstname"))
+
+
+```
+
+Within a module, the configuration provides a means for namespace to avoid property name conflicts.
+
+Example:
+```python
+
+from pspsring import Configuration
+config = Configuration.getConfig(__name__)
+
+print(config.getProperty("firstname"))
+
+```
+
+In the above code, we create a configiration accessor instance by passing in the module name ( __name__ ). This will create a namespace under which the property lives. For Eg: if the file is saved under the package as com/example/application.py, the property name will be actually referenced as `com.example.application.firstname`.
+
+when getProperty method is invoked
+
+ 1) the property is looked up in environment variables
+ 2) the property is searched in the given list of ConfigurationProviders during initialization
+ 3) the property is searched in the defaults
+ 4) Search the property one above the hierarchy in the namespace starting from step 1. ( Eg: com.example.firstname )
+
+The above search sequence is pursued until the property is found. If the property is not found,then `None` is returned.
+
+pspring along with pspring-aws provides a wealth of ConfigurationProviders ( SecretsMgrConfigProvider, DynamodbConfigProvider, RealTimeSecretsMgrConfigProvider etc...) that can be used with aws.
+
+## Usage
+
+The context of pspring should be initialized before any dependency injection is expected. A sample of code is show below
+
+```python
+import sys,os
+
+from pspring import *
+
+config = Configuration.getConfig(__name__)
+
+@Bean(name="loggerBeanName")
+class Logger():
+ def __init__():
+ pass
+
+ def sayHi(self,name):
+ print("Hi "+str(name));
+
+class MyApp():
+ @Autowired(mylogger="loggerBeanName")
+ def __init__(self,mylogger:Logger):
+ self.logger = mylogger
+
+os.environ["name"] = "dave"
+
+Configuration.initialize([])
+
+ApplicationContext.initialize()
+
+
+app = MyApp()
+
+# prints "Hi dave"
+app.logger.sayHi(config.getProperty("name"))
+```
+
+
+
+
+%package help
+Summary: Development documents and examples for pspring
+Provides: python3-pspring-doc
+%description help
+# pspring
+
+This is a lightweight framework to enable python developers to quickly develop apps with annotations/decorators. Inspired by Spring Framework of Java, the framework provides the ability for IOC ( Inversion of control ) and Autowiring the beans.
+
+The default environment variables can always be found `defaultvars.py` file
+
+Below is the index the annotations/decorators supported by this module
+
+* `@Bean(name="")`
+
+ This decorator will register the class or method ( which returns an instance of bean ) to the pspring application context. You can provide an optional `name` attribute to register the bean with a qualified name. Providing no name would register the bean for its type ( and its base classes )
+
+
+* `@Autowired(name=beanname)`
+
+ This decorator is the heard of dependency injection and will autowire the arguments of a method ( especially used in `__init__` constructor ). You can provide a list of name value pairs where, `name` is the argument name in the method definition for which a bean named `beanname` would be injected with that qualifier.
+
+## Configuration Framework
+
+Configuring applications can get complicated with environment variables, default variables and various source of configurations ( like secrets, encrypted variables etc ).
+
+pspring brings a configuration framework which can be used exhaustively for developing cloud applications. The idea in Configuration framework is to provide a standard interface for applications to fetch properties.
+
+The two classes which forms the backbone of this framework are `Configuration` and `ConfigurationProvider`. During the application start up, the framework needs to be initialized with a list of ConfigurationProviders as shown below
+
+```python
+
+from pspsring import Configuration, ConfigurationProvider
+
+config = {
+ "firstname" : "dave",
+ "lastname" : "picaso"
+}
+
+# A simple dictionary based config provider
+class DictionaryConfigurationProvider(ConfigurationProvider):
+ def getProperty(propertyName):
+ return config.get(propertyName)
+
+Configuration.initialize([
+ DictionaryConfigurationProvider()
+])
+
+config = Configuration.getConfig(__name__)
+
+# will print 'dave'
+print(config.getProperty("firstname"))
+
+
+```
+
+Within a module, the configuration provides a means for namespace to avoid property name conflicts.
+
+Example:
+```python
+
+from pspsring import Configuration
+config = Configuration.getConfig(__name__)
+
+print(config.getProperty("firstname"))
+
+```
+
+In the above code, we create a configiration accessor instance by passing in the module name ( __name__ ). This will create a namespace under which the property lives. For Eg: if the file is saved under the package as com/example/application.py, the property name will be actually referenced as `com.example.application.firstname`.
+
+when getProperty method is invoked
+
+ 1) the property is looked up in environment variables
+ 2) the property is searched in the given list of ConfigurationProviders during initialization
+ 3) the property is searched in the defaults
+ 4) Search the property one above the hierarchy in the namespace starting from step 1. ( Eg: com.example.firstname )
+
+The above search sequence is pursued until the property is found. If the property is not found,then `None` is returned.
+
+pspring along with pspring-aws provides a wealth of ConfigurationProviders ( SecretsMgrConfigProvider, DynamodbConfigProvider, RealTimeSecretsMgrConfigProvider etc...) that can be used with aws.
+
+## Usage
+
+The context of pspring should be initialized before any dependency injection is expected. A sample of code is show below
+
+```python
+import sys,os
+
+from pspring import *
+
+config = Configuration.getConfig(__name__)
+
+@Bean(name="loggerBeanName")
+class Logger():
+ def __init__():
+ pass
+
+ def sayHi(self,name):
+ print("Hi "+str(name));
+
+class MyApp():
+ @Autowired(mylogger="loggerBeanName")
+ def __init__(self,mylogger:Logger):
+ self.logger = mylogger
+
+os.environ["name"] = "dave"
+
+Configuration.initialize([])
+
+ApplicationContext.initialize()
+
+
+app = MyApp()
+
+# prints "Hi dave"
+app.logger.sayHi(config.getProperty("name"))
+```
+
+
+
+
+%prep
+%autosetup -n pspring-0.0.39
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-pspring -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.39-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..85b9dec
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+4c84eef0f21e8e0ad23e2fbd05f40536 pspring-0.0.39.tar.gz