Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > cz.comp.lang.python > #3110 > unrolled thread
| Started by | Pavel Schön <pavel@schon.cz> |
|---|---|
| First post | 2016-08-22 13:30 -0700 |
| Last post | 2016-08-23 11:40 +0200 |
| Articles | 15 — 6 participants |
Back to article view | Back to cz.comp.lang.python
PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-22 13:30 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-22 14:43 -0700
Re: [python] PyFormat 0.1.0 released Lumír Balhar <frenzy.madness@gmail.com> - 2016-08-22 23:14 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 00:12 -0700
Re: [python] PyFormat 0.1.0 released Ondrej Tuma <konference@webjet.cz> - 2016-08-23 11:05 +0200
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 02:59 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-24 01:39 -0700
Re: [python] PyFormat 0.1.0 released Honza Král <honza.kral@gmail.com> - 2016-08-24 16:05 +0200
Re: [python] PyFormat 0.1.0 released Ken Mijime <kenaco666@gmail.com> - 2016-08-23 20:54 +0200
Re: [python] PyFormat 0.1.0 released Honza Král <honza.kral@gmail.com> - 2016-08-23 12:40 +0200
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 12:09 -0700
Re: PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 02:01 -0700
Re: [python] PyFormat 0.1.0 released Ken Mijime <kenaco666@gmail.com> - 2016-08-23 11:08 +0200
Re: [python] PyFormat 0.1.0 released Ondrej Tuma <konference@webjet.cz> - 2016-08-23 11:09 +0200
Re: [python] PyFormat 0.1.0 released Petr Messner <petr.messner@gmail.com> - 2016-08-23 11:40 +0200
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-22 13:30 -0700 |
| Subject | PyFormat 0.1.0 released |
| Message-ID | <9c794255-6876-450b-aec5-d7fcbea74037@googlegroups.com> |
Zdravím,
chtěl bych zde uvést nový projekt "PyFormat", který zpřístupňuje třídu boost::format z balíku C++ knihoven Boost.org. Pokud někdo používáte Boost, jistě znáte i boost::format.
Modul PyFormat funguje pro Python 2.x a 3.x a podporuje byte stringy i unicode stringy.
Mezi killer feature patří fakt, že formátovací string je syntakticky validován a zkompilován během inicializace a ne až při vyhodnocení, kdy už může být pozdě.
Dále je třeba zmínit, že format objekt lze hodnotami plnit postupně a ne nutně najednou. (operátor % vrací self)
Pomocí bitmasky lze konfigurovat, které chyby budou raisnuty a které ignorovány (např. nesprávný počet argumentů).
Nevýhoda je, že boost::format je relativně pomalý, takže se nedivte, pokud budou výsledky horší než u nativního formátování v pythonu. Ale cíl projektu není překonat nativní formátování co do rychlosti, ale co do features a robustnosti a poskytnout kompatibilní vrstvu pro další projekt, který má boost::format na vstupu-ale o tom zas jindy.
Třídy v modulu:
----------------
Format: bytestringy, Python2: __str__, Python3: __bytes__
UFormat: unicode stringy, Python2: __unicode__, Python3: __str__
Základy použití modulu:
---------------------------
>>> from pyformat import Format as F, UFormat as U
>>> fmt = U('%s %s %s')
>>> print(fmt % 'a' % 'b' % 'c')
a b c
>>> print(fmt % 1 % 2 % 3)
1 2 3
Klonování:
---------------
from pyformat import Format as F, UFormat as U
tmpl = U('foo %s') # parsed only once
def foo(i):
fmt = tmpl.clone() # clone parsed object (copy.copy() also works)
print(fmt % i)
foo(1)
foo(2)
foo(3)
Prohození:
-------------
>>> fmt1, fmt2 = U('first'), U('second')
>>> fmt1.swap(fmt2)
Projekt včetně popisu dalších featur je ke stažení na https://github.com/pavelschon/PyFormat
Budu rád za každý bug report a pull request.
[toc] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-22 14:43 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <b48e578b-509b-4f66-a098-581ac0722641@googlegroups.com> |
| In reply to | #3110 |
> Je super vidět boost::python v praxi.
To jsem rád.
> Jen instalace by možná byla lepší pomocí setup.py a trochu obecnější, než Debian balíček. Byly s tím setup.py nějaké problémy, nebo je to v todo listu, nebo se to zatím nezkoušelo? :)
setup.py se zkoušelo také, ale je problém s detekcí libboost_python. (každá distribuce to má jinde a jinak pojmenované (debian: libboost_python-py27.so resp. libboost_python-py34.so )
make install by měl také fungovat.
Co se týče balíčků, tak CMake umí generovat i rpm, ale nemám to jak otestovat, tak jsem to tam radši nedal. Klidně pošli pull request pro rpm i setup.py :)
> >>> fmt1, fmt2 = U('first'), U('second')
>
> >>> fmt1.swap(fmt2)
>
> swap operátor v Pythonu? Interjazyková prasárna :)
>
haha, ale tady je to myšlěno zcela vážně :) Dovedu si představit využití třeba s coroutinami...
[toc] | [prev] | [next] | [standalone]
| From | Lumír Balhar <frenzy.madness@gmail.com> |
|---|---|
| Date | 2016-08-22 23:14 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <a53bf7f4-5f73-47f9-9578-a152e0d48ff5@googlegroups.com> |
| In reply to | #3111 |
Dne pondělí 22. srpna 2016 23:43:41 UTC+2 Pavel Schön napsal(a):
> > Je super vidět boost::python v praxi.
> To jsem rád.
>
> > Jen instalace by možná byla lepší pomocí setup.py a trochu obecnější, než Debian balíček. Byly s tím setup.py nějaké problémy, nebo je to v todo listu, nebo se to zatím nezkoušelo? :)
>
> setup.py se zkoušelo také, ale je problém s detekcí libboost_python. (každá distribuce to má jinde a jinak pojmenované (debian: libboost_python-py27.so resp. libboost_python-py34.so )
>
> make install by měl také fungovat.
>
> Co se týče balíčků, tak CMake umí generovat i rpm, ale nemám to jak otestovat, tak jsem to tam radši nedal. Klidně pošli pull request pro rpm i setup.py :)
S tvorbou RPM balíčku rád pomůžu. Je už nějak připraven a je ho třeba jen otestovat?
>
> > >>> fmt1, fmt2 = U('first'), U('second')
> >
> > >>> fmt1.swap(fmt2)
> >
> > swap operátor v Pythonu? Interjazyková prasárna :)
> >
>
> haha, ale tady je to myšlěno zcela vážně :) Dovedu si představit využití třeba s coroutinami...
[toc] | [prev] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-23 00:12 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <f23d8e1c-0b9f-4c32-a6ce-9f8ff0e7fa13@googlegroups.com> |
| In reply to | #3112 |
> S tvorbou RPM balíčku rád pomůžu. Je už nějak připraven a je ho třeba jen otestovat? Super, připraveno to není, ale až budu mít chvilku, tak přidám rpm do CMakeLists.txt.
[toc] | [prev] | [next] | [standalone]
| From | Ondrej Tuma <konference@webjet.cz> |
|---|---|
| Date | 2016-08-23 11:05 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.7.1471943108.13667.python@py.cz> |
| In reply to | #3113 |
[Multipart message — attachments visible in raw view] — view raw
Hoj, +1 Ještě doplním, že existují nástroje, které vyrábí distribuční balíky právě pomocí setup.py, nebo alespoň tvorba takových balíků je obvykle standardní, resp. jednoduchá. Ondra PS: Vždy mě zamrzí, když narazím na nějakou knihovnu, která není v pypi a kvůli ní nejde můj projekt z pypi kompletně nainstalovat. V Tue, 23 Aug 2016 08:39:10 +0000 Ales Zoulek <ales.zoulek@gmail.com> napsáno: > Ahoj, > > rekl bych, ze pokud chcete, aby byl projekt trosku uspesnejsi a > rozsiril se mezi ostatni pythonare, tak je zvlast v pocatcich opravdu > dulezitejsi uchodit pres `setup.py` / `pip install`. A pak casem > teprve resit rpmka. > > Mejte se, > > A. > > On Tue, Aug 23, 2016 at 9:15 AM Pavel Schön <pavel@schon.cz> wrote: > > > > S tvorbou RPM balíčku rád pomůžu. Je už nějak připraven a je ho > > > třeba > > jen otestovat? > > > > Super, připraveno to není, ale až budu mít chvilku, tak přidám rpm > > do CMakeLists.txt. > > _______________________________________________ > > Python mailing list > > python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > Visit: http://www.py.cz > > -- Ondřej Tůma <mcbig@zeropage.cz> www: http://ipv6.mcbig.cz jabber: mcbig@jabber.cz twitter: mcbig_cz
[toc] | [prev] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-23 02:59 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <4ea5b2fc-14cc-4469-a811-b3650bec6d85@googlegroups.com> |
| In reply to | #3115 |
Ahoj, > PS: Vždy mě zamrzí, když narazím na nějakou knihovnu, která > není v pypi a kvůli ní nejde můj projekt z pypi kompletně nainstalovat Já jsem asi pravý opak, vždycky me vytočí, když nějaký balík není v distribuci a musím ho instalovat přes pip (nebo ještě hůře cpan/npm/gem). Ale na druhou stranu chápu, že doba pokročila a každý moderní jazyk chce mít svůj package manager a proto ten setup.py vytvořím.
[toc] | [prev] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-24 01:39 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <ce26a279-542f-450b-924e-13fb66d5b099@googlegroups.com> |
| In reply to | #3116 |
> muzu se zeptat v cem to je, nebo bude, lepsi nez str.format nebo string.Template? Jasně že můžeš, šlo o to vytvořit kompatibilní layer pro jiný projekt, který používá boost::format. Přítomnost funkcí jako parse(), swap(), clone(), clear() časem snad i modify_item() otevírá možnosti pro různé algoritmy, které si mohou Format objekt předávat a různě s ním manipulovat, než dojde k finálnímu vyhodnocení na string. Nehledě na to, že případná chyba ve formátovacim stringu je odhalena okamžitě-v konstruktoru nebo v parse(). > Jedine co vidim je moznost osetrit chyby a partial evaluace.To mi > prijde jednodussi dodelat nad str.format a/nebo string.Template Když je to tak jednoduché, proč už to někdo neudělal? > Samozrejme pokud je cil vyzkouset si cpp + boost tak nic proti, ale jinak mi to prijde docela krok zpet... Souhlasím, je to hračka, nehodí se to na vše, ale spíš pro speciální použití.
[toc] | [prev] | [next] | [standalone]
| From | Honza Král <honza.kral@gmail.com> |
|---|---|
| Date | 2016-08-24 16:05 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.16.1472091549.13667.python@py.cz> |
| In reply to | #3118 |
>> Jedine co vidim je moznost osetrit chyby a partial evaluace.To mi >> prijde jednodussi dodelat nad str.format a/nebo string.Template > > Když je to tak jednoduché, proč už to někdo neudělal? treba proto, ze to lidem prislo zbytecne a nebo to resi pomoci standardnich pythonu nastroju jako je funtools.partial napriklad. Ja jsem treba na zadny use case pro neco takoveho nenarazil. Tim samozrejme nerikam, ze neexistuje, jen ze davat do souvislosti jednoduchost a existenci v tomhle smeru proste nedava smysl. Napsat funkci na nasobeni jakehokoliv objektu cislem 42 je jeste jednodussi a take to nikdo neudelal :-) ale jak jsem rikal - proti gustu... --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | Ken Mijime <kenaco666@gmail.com> |
|---|---|
| Date | 2016-08-23 20:54 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.14.1472008705.13667.python@py.cz> |
| In reply to | #3116 |
To nieje o tom že by každý chcel mať svoj pkg manager. Skôr ide o to že repa rôznych distier s ich pravidlami sú občas krutoprísne pomalé #hi_debian. Takto máš k dispozícii repo s najnovšími updatmi, oslobodené od distier a ich politík, jednoduché, čisté riešenie. Plus práca s virtualenvs a pip/gem/npm(ok, npm asi nie) v danom jazyku je pohodlná. On 23.08.2016 11:59, Pavel Schön wrote: > Ahoj, > >> PS: Vždy mě zamrzí, když narazím na nějakou knihovnu, která >> není v pypi a kvůli ní nejde můj projekt z pypi kompletně nainstalovat > Já jsem asi pravý opak, vždycky me vytočí, když nějaký balík není v distribuci a musím ho instalovat přes pip (nebo ještě hůře cpan/npm/gem). > Ale na druhou stranu chápu, že doba pokročila a každý moderní jazyk chce mít svůj package manager a proto ten setup.py vytvořím. > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | Honza Král <honza.kral@gmail.com> |
|---|---|
| Date | 2016-08-23 12:40 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.12.1471965483.13667.python@py.cz> |
| In reply to | #3116 |
Ahoj, > ...cíl projektu není překonat nativní formátování co do rychlosti, ale co do features a robustnosti... muzu se zeptat v cem to je, nebo bude, lepsi nez str.format nebo string.Template? Jedine co vidim je moznost osetrit chyby a partial evaluace. To mi prijde jednodussi dodelat nad str.format a/nebo string.Template - bylo by to rychlejsi a o mnoho robustnejsi, nehlede na pure python reseni. Mozna jen chybi ukazky v dokumentaci? Samozrejme pokud je cil vyzkouset si cpp + boost tak nic proti, ale jinak mi to prijde docela krok zpet... Diky Honza Král E-Mail: honza.kral@gmail.com Phone: +420 606 678585 2016-08-23 12:15 GMT+02:00 Petr Messner <petr.messner@gmail.com>: > Python moduly jako distribuční balíčky jsou dobré akorát pro ostatní > distribuční aplikace. > > Když píšu/nasazuju svoji aplikaci, tak to dnes asi každý řeší přes > venv/virtualenv a tam mu stejně ty distribuční Python moduly ani nelezou. > > Prostě - když spustím apt-get install dropbox, tak chci, aby používal > závislosti z dalších .deb balíčků. Když ale programuju něco svého, tak přes > venv a závislosti z pypi, už jen proto, aby ostatní v týmu nemuseli používat > stejný OS. > > PM > > Dne 23. srpna 2016 11:59 Pavel Schön <pavel@schon.cz> napsal(a): > >> Ahoj, >> >> > PS: Vždy mě zamrzí, když narazím na nějakou knihovnu, která >> > není v pypi a kvůli ní nejde můj projekt z pypi kompletně nainstalovat >> >> Já jsem asi pravý opak, vždycky me vytočí, když nějaký balík není v >> distribuci a musím ho instalovat přes pip (nebo ještě hůře cpan/npm/gem). >> Ale na druhou stranu chápu, že doba pokročila a každý moderní jazyk chce >> mít svůj package manager a proto ten setup.py vytvořím. >> _______________________________________________ >> Python mailing list >> python@py.cz >> http://www.py.cz/mailman/listinfo/python >> >> Visit: http://www.py.cz > > > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-23 12:09 -0700 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <4e630f03-73f9-4221-94c1-3492e96f1fbf@googlegroups.com> |
| In reply to | #3113 |
Čau, přidal jsem tam setup.py, takže ještě jednou :-) https://github.com/pavelschon/PyFormat
[toc] | [prev] | [next] | [standalone]
| From | Pavel Schön <pavel@schon.cz> |
|---|---|
| Date | 2016-08-23 02:01 -0700 |
| Message-ID | <0aa972e7-0aa0-4927-9f0a-01fa30543b0f@googlegroups.com> |
| In reply to | #3110 |
Jak pip vyřeší závislost na g++, boost apod.? Nebo by pip měl distribuovat již binárku?
[toc] | [prev] | [next] | [standalone]
| From | Ken Mijime <kenaco666@gmail.com> |
|---|---|
| Date | 2016-08-23 11:08 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.8.1471943284.13667.python@py.cz> |
| In reply to | #3114 |
To je otázka. Môžeš si to pribaliť ako binárku, alebo očakávať na nejakom štandardnom mieste/dvoch(/lib, /usr/lib). Ak to tam nebude, je to userspace problem. Hlavne nech je to spomenuté v README. On 23.08.2016 11:01, Pavel Schön wrote: > Jak pip vyřeší závislost na g++, boost apod.? Nebo by pip měl distribuovat již binárku? > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [next] | [standalone]
| From | Ondrej Tuma <konference@webjet.cz> |
|---|---|
| Date | 2016-08-23 11:09 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.9.1471947473.13667.python@py.cz> |
| In reply to | #3114 |
[Multipart message — attachments visible in raw view] — view raw
V Tue, 23 Aug 2016 02:01:49 -0700 (PDT) Pavel Schön <pavel@schon.cz> napsáno: > Jak pip vyřeší závislost na g++, boost apod.? Nebo by pip měl > distribuovat již binárku? Závislost vysloveně nevyřeší, binárku distribuovat přes pip jde. Pokud jde o C/C++ knihovny, tak s tím se tak nějak počítá, u python knihoven už je to ale škoda. A je celkem obvyklé, že kompilované pythoní knihovny (zejména ty oblíbené) v distribucích už jsou, a setup.py/pip je detekuje, takže závislost splněná pak je. I když ano, to je zrovna příklad PyFormatu :-D -- Ondřej Tůma <mcbig@zeropage.cz> www: http://ipv6.mcbig.cz jabber: mcbig@jabber.cz twitter: mcbig_cz
[toc] | [prev] | [next] | [standalone]
| From | Petr Messner <petr.messner@gmail.com> |
|---|---|
| Date | 2016-08-23 11:40 +0200 |
| Subject | Re: [python] PyFormat 0.1.0 released |
| Message-ID | <mailman.10.1471958279.13667.python@py.cz> |
| In reply to | #3114 |
Pokud jde o header-only knihovnu (v boostu jich pár je), tak se ještě nabízí možnost distribuovat ji spolu s Python modulem. Někdy se takhle řeší celé knihovny, ale kompilovat boost bych takhle nechtěl :) Petr Messner 23. 8. 2016 v 11:09, Ondrej Tuma <konference@webjet.cz>: > V Tue, 23 Aug 2016 02:01:49 -0700 (PDT) > Pavel Schön <pavel@schon.cz> napsáno: > >> Jak pip vyřeší závislost na g++, boost apod.? Nebo by pip měl >> distribuovat již binárku? > > Závislost vysloveně nevyřeší, binárku distribuovat přes pip jde. > Pokud jde o C/C++ knihovny, tak s tím se tak nějak počítá, u python > knihoven už je to ale škoda. > > A je celkem obvyklé, že kompilované pythoní knihovny (zejména ty > oblíbené) v distribucích už jsou, a setup.py/pip je detekuje, takže > závislost splněná pak je. I když ano, to je zrovna příklad PyFormatu :-D > > -- > Ondřej Tůma <mcbig@zeropage.cz> > www: http://ipv6.mcbig.cz jabber: mcbig@jabber.cz twitter: mcbig_cz > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz --- news://freenews.netfront.net/ - complaints: news@netfront.net ---
[toc] | [prev] | [standalone]
Back to top | Article view | cz.comp.lang.python
csiph-web