%global _empty_manifest_terminate_build 0
Name: python-pymacaron
Version: 2.0.345
Release: 1
Summary: REST microservice framework based on Flask, OpenAPI, gunicorn and celery, deployable towards GKE and Beanstalk
License: BSD
URL: https://github.com/pymacaron/pymacaron
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/18/13/dd652706c6bead1829fc075855591c8b6057e6260df5ff98b233aac392c6/pymacaron-2.0.345.tar.gz
BuildArch: noarch
%description

# Pymacaron
Python microservice framework based on Flask, OpenAPI and Celery, deployable
on GKE and Beanstalk
PyMacaron's documentation is available at
[http://pymacaron.com/](http://pymacaron.com/).
This page dives deeper into internal implementation details.
## Deep dive
### Built-in endpoints
The following endpoints are built-in into every pymacaron instance, based
on [this swagger specification](https://github.com/pymacaron/pymacaron/blob/master/pymacaron/ping.yaml):
```
# Assuming you did in a separate terminal:
# $ python server.py --port 8080
$ curl http://127.0.0.1:8080/ping
{}
$ curl http://127.0.0.1:8080/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
$ curl http://127.0.0.1:8080/auth/version
{
"error_description": "There is no Authorization header in the HTTP request",
"error_id": "17f900c8-b456-4a64-8b2b-83c7d36353f6",
"status": 401,
"error": "AUTHORIZATION_HEADER_MISSING"
}
$ curl -H "Authorization: Bearer eyJpc3M[...]y8kNg" http://127.0.0.1:8080/auth/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
```
### Loading api clients from a standalone script
It may come very handy within a standalone script to be able to call REST apis
through the pymacaron framework, to get object marshalling and error
handling out of the box. It is done as follows:
```python
import flask
from pymacaron import apipool
from pymacaron.exceptions import is_error
# Declare a Flask app and mock its context
app = flask.Flask(__name__)
with app.test_request_context(''):
# Then load client libraries against a given set of libraries
api = API(app)
api.load_clients(apis=['login', 'search'])
# And you can now call those apis seamlessly!
result = ApiPool.login.client.do_login(
ApiPool.login.model.LoginData(
name='foobar',
password='youdontwanttoknow'
)
)
if is_error(result):
log.error("Oops. Failed to login user")
```
## Author
Erwan Lemonnier
[github.com/pymacaron](https://github.com/pymacaron)
[github.com/erwan-lemonnier](https://github.com/erwan-lemonnier)
[www.linkedin.com/in/erwan-lemonnier/](https://www.linkedin.com/in/erwan-lemonnier/)
%package -n python3-pymacaron
Summary: REST microservice framework based on Flask, OpenAPI, gunicorn and celery, deployable towards GKE and Beanstalk
Provides: python-pymacaron
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-pymacaron

# Pymacaron
Python microservice framework based on Flask, OpenAPI and Celery, deployable
on GKE and Beanstalk
PyMacaron's documentation is available at
[http://pymacaron.com/](http://pymacaron.com/).
This page dives deeper into internal implementation details.
## Deep dive
### Built-in endpoints
The following endpoints are built-in into every pymacaron instance, based
on [this swagger specification](https://github.com/pymacaron/pymacaron/blob/master/pymacaron/ping.yaml):
```
# Assuming you did in a separate terminal:
# $ python server.py --port 8080
$ curl http://127.0.0.1:8080/ping
{}
$ curl http://127.0.0.1:8080/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
$ curl http://127.0.0.1:8080/auth/version
{
"error_description": "There is no Authorization header in the HTTP request",
"error_id": "17f900c8-b456-4a64-8b2b-83c7d36353f6",
"status": 401,
"error": "AUTHORIZATION_HEADER_MISSING"
}
$ curl -H "Authorization: Bearer eyJpc3M[...]y8kNg" http://127.0.0.1:8080/auth/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
```
### Loading api clients from a standalone script
It may come very handy within a standalone script to be able to call REST apis
through the pymacaron framework, to get object marshalling and error
handling out of the box. It is done as follows:
```python
import flask
from pymacaron import apipool
from pymacaron.exceptions import is_error
# Declare a Flask app and mock its context
app = flask.Flask(__name__)
with app.test_request_context(''):
# Then load client libraries against a given set of libraries
api = API(app)
api.load_clients(apis=['login', 'search'])
# And you can now call those apis seamlessly!
result = ApiPool.login.client.do_login(
ApiPool.login.model.LoginData(
name='foobar',
password='youdontwanttoknow'
)
)
if is_error(result):
log.error("Oops. Failed to login user")
```
## Author
Erwan Lemonnier
[github.com/pymacaron](https://github.com/pymacaron)
[github.com/erwan-lemonnier](https://github.com/erwan-lemonnier)
[www.linkedin.com/in/erwan-lemonnier/](https://www.linkedin.com/in/erwan-lemonnier/)
%package help
Summary: Development documents and examples for pymacaron
Provides: python3-pymacaron-doc
%description help

# Pymacaron
Python microservice framework based on Flask, OpenAPI and Celery, deployable
on GKE and Beanstalk
PyMacaron's documentation is available at
[http://pymacaron.com/](http://pymacaron.com/).
This page dives deeper into internal implementation details.
## Deep dive
### Built-in endpoints
The following endpoints are built-in into every pymacaron instance, based
on [this swagger specification](https://github.com/pymacaron/pymacaron/blob/master/pymacaron/ping.yaml):
```
# Assuming you did in a separate terminal:
# $ python server.py --port 8080
$ curl http://127.0.0.1:8080/ping
{}
$ curl http://127.0.0.1:8080/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
$ curl http://127.0.0.1:8080/auth/version
{
"error_description": "There is no Authorization header in the HTTP request",
"error_id": "17f900c8-b456-4a64-8b2b-83c7d36353f6",
"status": 401,
"error": "AUTHORIZATION_HEADER_MISSING"
}
$ curl -H "Authorization: Bearer eyJpc3M[...]y8kNg" http://127.0.0.1:8080/auth/version
{
"apis":["ping"],
"name": "helloworld",
"pym_env":"staging",
"version": "220120-2219-3820-a6f45b",
}
```
### Loading api clients from a standalone script
It may come very handy within a standalone script to be able to call REST apis
through the pymacaron framework, to get object marshalling and error
handling out of the box. It is done as follows:
```python
import flask
from pymacaron import apipool
from pymacaron.exceptions import is_error
# Declare a Flask app and mock its context
app = flask.Flask(__name__)
with app.test_request_context(''):
# Then load client libraries against a given set of libraries
api = API(app)
api.load_clients(apis=['login', 'search'])
# And you can now call those apis seamlessly!
result = ApiPool.login.client.do_login(
ApiPool.login.model.LoginData(
name='foobar',
password='youdontwanttoknow'
)
)
if is_error(result):
log.error("Oops. Failed to login user")
```
## Author
Erwan Lemonnier
[github.com/pymacaron](https://github.com/pymacaron)
[github.com/erwan-lemonnier](https://github.com/erwan-lemonnier)
[www.linkedin.com/in/erwan-lemonnier/](https://www.linkedin.com/in/erwan-lemonnier/)
%prep
%autosetup -n pymacaron-2.0.345
%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-pymacaron -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Wed May 31 2023 Python_Bot - 2.0.345-1
- Package Spec generated