Joitain Python-kirjastoja
Hissuksiin olen tutustunut joihinkin Python-kirjastoihin. Tässä niistä yhteenvetona muutamia muistiinpanoja.
CherryPy
CherryPy on pieni Pythonilla toteutettu web-kehikko (web framework), joka tarjoaa pääasiassa HTTP-pyynnön käsittelyn ja pyyntöä vastaavan python-koodin kutsumisen. Jos web-sovelluksen toteuttaa MVC-mallin mukaisesti, tämä CherryPyn tukema osuus vastaa kontrollerin toteutusta.
Oman kontrollerin voi toteutaa funktiona tai luokan metodina ja sovelluksen voi toteuttaa ripustamalla näitä kontrollereita hierarkisesti toisiinsa.
root = MainPage() root.hello = HelloWorld()
Tällöin URL:iin http://localhost:8080/
viittaamalla CherryPy
kutsuu MainPage
-luokan index
-metodia ja URL:iin
http://localhost:8080/hello/
viittamalla HelloWorld
-luokan
index
-metodia.
CherryPy sisältää myös joukon työkaluja (tools) eri tarkoituksiin. Esim. staticdir-työkalulla voi sivustoltaan palauttaa staattista sisältöä (esim. css-tiedostot tai kuvat). CherryPy:ssä on myös HTTP-palvelin ja cherryd-skirpti, jolla web-sovellustaan voi ajaa.
docutils
http://docutils.sourceforge.net/
Docutils-kirjastoa käytetään reStructuredText-muotoillun tekstin muuntamiseksi esim. HTML:ksi. Kirjaston mukana tulee joukko skriptejä (esim. rst2html), joilla muunnoksen voi tehdä komentoriviltä.
Kirjastoa voi käyttää myös suoraan koodista:
import docutils.core doc = """ ================== Dokumentin otsikko ================== Luku 1 ====== Tekstiä """ parts = docutils.core.publish_parts(source=doc, writer_name='html') print(parts['title']) print(parts['body'])
Pygments
Pygments-kirjastoa käytetään korostamaan ohjelmakoodia. Sillä tuotetaan koodista esim. HTML-sivu, jossa koodista on merkitty esim. varatut sanat ja muuttujat. Tyylisivuilla nämä näiden esitysmuoto voidaan määritellä sitten halutuksi.
Tähän kirjastoon en juurikaan tutustunut, mutta docutils osaa käyttää sitä, kun reStructuredText-dokumenttiin kirjoittaa koodilohkoja.
.. code:: python print("Hello world")
Mako
Mako on nk. template engine, jolla voi tuottaa esim. HTML-sivun mallin pohjalta. Pohjaan voi lisätä Makon ohjausrakenteita (if, for, ...) ja Python-koodia. Mako ei rajoitu pelkästään HTML:n tuottamiseen, vaan sillä voi tuottaa mitä tahansa tekstimuotoista tiedostoa.
Mako on yksi niistä kirjastoista, joista on jo Python3-versio.
Flup
https://pypi.python.org/pypi/flup/
Flup on kokoelma WSGI-työkaluja. Flup tarjoaa mm. HTTP-palvelimen ja FastCGI-WSGI-gatewayn.
Tämän kirjaston tilasta minulla ei ole oikein kunnon käsitystä. Kirjaston kotisivu (https://www.saddi.com/software/flup/ tai http://trac.saddi.com/flup) ei tunnu enää oikein vastaavan...
Kirjastosta löytyy kuitenkin Python3-kehityshaara. Sekin tosin näytti vaativan 2to3-muunnoksen ennen kuin sain sen toimimaan.
Nose
https://pypi.python.org/pypi/nose/1.2.1 http://readthedocs.org/docs/nose/
Nose on yksikkötestaustyökalu. Se on laajentaa (tai korvaa) Pythonin standardikirjasossa olevan unittest-moduulin. Nose sisältää unittest-moduulia siistimmät (makuasia?) assert-funktiot ja ohjelman testien löytämiseen ja ajamiseen.
Ystävällisin terveisin
Timo Kankare
Kommentit