%global _empty_manifest_terminate_build 0 Name: python-hs-formation Version: 5.4.0 Release: 1 Summary: A generic functional middleware infrastructure for Python. License: MIT URL: https://github.com/HiredScorelabs/hs-formation Source0: https://mirrors.nju.edu.cn/pypi/web/packages/25/ec/5f838aea3e1ebc7b1d19e475cd17a40d06cad440c8b5e7c5d16694952201/hs-formation-5.4.0.tar.gz BuildArch: noarch Requires: python3-toolz Requires: python3-cytoolz Requires: python3-requests Requires: python3-pybreaker Requires: python3-xmltodict Requires: python3-lxml Requires: python3-attrs Requires: python3-aiohttp Requires: python3-aiobreaker %description # Formation A generic functional middleware infrastructure for Python. Take a look: ```py from datetime.datetime import now from hs_formation import wrap from requests import get def log(ctx, call): print("started") ctx = call(ctx) print("ended") return ctx def timeit(ctx, call): started = now() ctx = call(ctx) ended = now() - started ctx['duration'] = ended return ctx def to_requests(ctx): get(ctx['url']) return ctx fancy_get = wrap(to_requests, middleware=[log, timeit]) fancy_get({'url':'https://google.com'}) ``` ## Quick Start Install using pip/pipenv/etc. (we recommend [poetry](https://github.com/sdispater/poetry) for sane dependency management): ``` $ poetry add formation ``` ## Best Practices A `context` object is a loose bag of objects. With that freedom comes responsibility and opinion. For example, this is how Formation models a `requests` integration, with data flowing inside `context`: * It models a `FormationHttpRequest` which abstracts the essentials of making an HTTP request (later shipped to `requests` itself in the way that it likes) * It tucks `FormationHttpRequest` under the `fmtn.req` key. * Additional information regarding such a request is kept _alongside_ `fmtn.req`. For example a request id is kept in the `req.id` key. This creates a flat (good thing) dict to probe. The reason additional data does not have the `fmtn` prefix is that you can always build your own that uses a different prefix (which you cant say about internal Formation inner workings). ### added support for async http client via aio_http You can use this via ```for_aio_http``` ### Thanks: To all [Contributors](https://github.com/jondot/formation/graphs/contributors) - you make this happen, thanks! # Copyright Copyright (c) 2018 [@jondot](http://twitter.com/jondot). See [LICENSE](LICENSE.txt) for further details. %package -n python3-hs-formation Summary: A generic functional middleware infrastructure for Python. Provides: python-hs-formation BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-hs-formation # Formation A generic functional middleware infrastructure for Python. Take a look: ```py from datetime.datetime import now from hs_formation import wrap from requests import get def log(ctx, call): print("started") ctx = call(ctx) print("ended") return ctx def timeit(ctx, call): started = now() ctx = call(ctx) ended = now() - started ctx['duration'] = ended return ctx def to_requests(ctx): get(ctx['url']) return ctx fancy_get = wrap(to_requests, middleware=[log, timeit]) fancy_get({'url':'https://google.com'}) ``` ## Quick Start Install using pip/pipenv/etc. (we recommend [poetry](https://github.com/sdispater/poetry) for sane dependency management): ``` $ poetry add formation ``` ## Best Practices A `context` object is a loose bag of objects. With that freedom comes responsibility and opinion. For example, this is how Formation models a `requests` integration, with data flowing inside `context`: * It models a `FormationHttpRequest` which abstracts the essentials of making an HTTP request (later shipped to `requests` itself in the way that it likes) * It tucks `FormationHttpRequest` under the `fmtn.req` key. * Additional information regarding such a request is kept _alongside_ `fmtn.req`. For example a request id is kept in the `req.id` key. This creates a flat (good thing) dict to probe. The reason additional data does not have the `fmtn` prefix is that you can always build your own that uses a different prefix (which you cant say about internal Formation inner workings). ### added support for async http client via aio_http You can use this via ```for_aio_http``` ### Thanks: To all [Contributors](https://github.com/jondot/formation/graphs/contributors) - you make this happen, thanks! # Copyright Copyright (c) 2018 [@jondot](http://twitter.com/jondot). See [LICENSE](LICENSE.txt) for further details. %package help Summary: Development documents and examples for hs-formation Provides: python3-hs-formation-doc %description help # Formation A generic functional middleware infrastructure for Python. Take a look: ```py from datetime.datetime import now from hs_formation import wrap from requests import get def log(ctx, call): print("started") ctx = call(ctx) print("ended") return ctx def timeit(ctx, call): started = now() ctx = call(ctx) ended = now() - started ctx['duration'] = ended return ctx def to_requests(ctx): get(ctx['url']) return ctx fancy_get = wrap(to_requests, middleware=[log, timeit]) fancy_get({'url':'https://google.com'}) ``` ## Quick Start Install using pip/pipenv/etc. (we recommend [poetry](https://github.com/sdispater/poetry) for sane dependency management): ``` $ poetry add formation ``` ## Best Practices A `context` object is a loose bag of objects. With that freedom comes responsibility and opinion. For example, this is how Formation models a `requests` integration, with data flowing inside `context`: * It models a `FormationHttpRequest` which abstracts the essentials of making an HTTP request (later shipped to `requests` itself in the way that it likes) * It tucks `FormationHttpRequest` under the `fmtn.req` key. * Additional information regarding such a request is kept _alongside_ `fmtn.req`. For example a request id is kept in the `req.id` key. This creates a flat (good thing) dict to probe. The reason additional data does not have the `fmtn` prefix is that you can always build your own that uses a different prefix (which you cant say about internal Formation inner workings). ### added support for async http client via aio_http You can use this via ```for_aio_http``` ### Thanks: To all [Contributors](https://github.com/jondot/formation/graphs/contributors) - you make this happen, thanks! # Copyright Copyright (c) 2018 [@jondot](http://twitter.com/jondot). See [LICENSE](LICENSE.txt) for further details. %prep %autosetup -n hs-formation-5.4.0 %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-hs-formation -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 5.4.0-1 - Package Spec generated