Hyppää sisältöön

Joitain Python-kirjastoja

Hissuksiin olen tutustunut joihinkin Python-kirjastoihin. Tässä niistä yhteenvetona muutamia muistiinpanoja.

CherryPy

http://cherrypy.org/

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

http://pygments.org/

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

http://www.makotemplates.org/

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