Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > cz.comp.lang.python > #3110

PyFormat 0.1.0 released

Newsgroups cz.comp.lang.python
Date 2016-08-22 13:30 -0700
Message-ID <9c794255-6876-450b-aec5-d7fcbea74037@googlegroups.com> (permalink)
Subject PyFormat 0.1.0 released
From Pavel Schön <pavel@schon.cz>

Show all headers | View raw


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.

Back to cz.comp.lang.python | Previous | NextNext in thread | Find similar


Thread

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

csiph-web