Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Publicaciones sobre python (publicaciones antiguas, página 83)

New rst2pdf feature: --strip-elements-with-class

First new fea­tu­re in rs­t2­pdf in a long long ti­me, but it was ea­sy to do, and the­re was an ac­tual user nee­ding it.

This ex­po­ses func­tio­na­li­ty rs­t2ht­ml al­ready ha­d, so tha­t's pro­ba­bly why it was ea­sy to do ;-)

In any ca­se, what is it and what is it good fo­r?

If you ma­rk so­me­thing wi­th a cla­ss, you can now omit it from the ou­tpu­t:

.. class:: ignored

This will not be in the output if you use --strip-elements-with-class=ignored

And it's use­fu­l, for exam­ple, so you can keep sli­des and pre­sen­ta­tion no­tes in the sa­me fi­le. You just put your no­tes in a cla­ss you strip when pro­du­cing the sli­des.

Sin­ce so­me cla­s­ses are au­to­ma­ti­ca­lly as­sig­ned for ad­mo­ni­tion­s, this is ex­tra sim­ple:

.. note:: This is a note admonition.

   Note admonitions always have the note class. So you can strip them easily.

And if you do­n't strip the­m, they wi­ll look pre­tty.

Nikola v5 Released

A new ver­sion of Niko­la is ou­t! You can get it at the usual pla­ce.

This ver­sion is not com­ple­te­ly ba­ckwar­ds com­pa­ti­ble, thus the new ma­jor ver­sion num­be­r, but swi­tching to it should be ea­s­y-is­h. If you are using ver­sion 4.0.3:

  1. Re­­mo­­­ve your do­­­do­­.­­py

  2. Use niko­la build ins­tead of doit from now on

  3. use niko­la ser­ve ins­tead of doit ser­ve, niko­la new_­post ins­tead of doit new_­post, and so on. So­me other doit ta­sk are al­so con­verted in­to niko­la co­m­mand you can get the list using niko­la help

The in­te­gra­tion of doit in­to Niko­la is not do­ne in a ve­ry ni­ce wa­y, tha­t's sti­ll on­going wo­rk, but it should be Good Enou­gh To Wo­rk (T­M).

Ho­pe you en­joy this re­lea­se!


  • Te­m­­pla­­tes now know their na­­me from te­m­­pla­­te_­­na­­me in their co­n­­tex­­t.

  • Ma­­de most of Niko­­­la in­­to Ya­p­sy plu­­gi­n­s.

  • Re­­cu­r­­se ga­­lle­­rie­s/ and ren­­der ea­­ch fo­l­­der as a ga­­lle­­r­­y.

  • Brea­­d­­crumbs and fo­l­­der li­nks in ima­­ge ga­­lle­­rie­s.


  • Fixed doc in­s­­ta­­lla­­tion

  • Put we­­ba­sse­­ts ca­­che in ca­­che/we­­ba­sse­­ts

  • Up­­da­­te to doit 0.17

  • Do­­n't crash on in­­co­m­­ple­­te tran­s­­la­­tions

  • Fixed Is­­sue 160: ren­­de­­r_­­tags di­d­n't ca­­ll scan_­­po­s­­ts()

  • Fixed Is­­sue 161: we­­ba­sse­­ts se­­tting USE_­­BUN­D­­LES was ig­­no­­­red (fix by sche­­tti­­no­­72)

  • Fixed Is­­sue 153: in­­dex.­­txt was being ig­­no­­­red in ga­­lle­­rie­s.

Nikola is Pluginificated.

Yes, I know that's not a re­al word.

So, the git mas­ter of Niko­la now has plug­ins. In fac­t, not on­ly does it have plu­g­in­s, but is ba­si­cal­ly made of plug­ins.

You see, the code used to most­ly be in­side a class (called Niko­la), and ... it had grown. That class had grown up to around 2000 lines of code. Which is com­plete­ly ridicu­lous.

So, us­ing Yap­sy I turned the code in­side out: al­most all the code that was in that mon­ster class was moved in­to plug­ins and the class turned in­to a smart plug­in load­er.

This has brought sev­er­al ad­van­tages:

  • Now you can ex­­tend Niko­la for your own pur­­pos­es. Just cre­ate a plug­in fold­er in your site, and put the ex­­tra func­­tion­al­i­­ty there.

  • Sup­­port for whole cat­e­­gories of things is now mod­­u­lar. Want to sup­­port a dif­fer­­ent markup? A dif­fer­­ent tem­­plate sys­tem? Just write a plug­in.

  • Want to add com­­plete­­ly new func­­tions to Niko­la? Like, say, a way to im­­port da­­ta from an­oth­er blog tool, or some­thing like plan­et soft­­ware? Well, just add a "com­­mand plug­in".

What has changed for the user?

  • You can delete do­ from your site.

  • Use niko­la build in­stead of doit

  • Use niko­la serve in­stead of doit serve

Some mi­nor things still need do­ing in this area (no­table, fix­ing the doc­s), but the main refac­tor­ing is there.

Taxes, Game Theory, and Python (Part 1 of 2)

Be­fore I gave up on be­com­ing an ed­u­cat­ed man, I stud­ied math. And to this day it piss­es me that noone has fig­ured out how to make math in­ter­est­ing to the math­-a­verse. Here's a small at­temp­t.

Let's con­sid­er the fol­low­ing sce­nar­i­o, based com­plete­ly on things I know, not things I do ;-)

Sup­pose that in a city called San Isidro, there is a house. Hous­es in San Isidro pay a mu­nic­i­pal tax, in ex­change for the ser­vice of garbage col­lec­tion, street sweep­ing, tree trim­ming, and street light­ing.

It's a very small tax, but let's say it's $100 a month be­cause it's a nice, easy to han­dle num­ber.

Al­so, San Isidro is in a coun­try called Ar­genti­na. In that coun­try there are sev­er­al laws that af­fect the home own­er­s:

  1. You can't sell a house if you owe any tax­es.

  2. The own­er has a 1% chance of wan­t­ing to sell the house each month.

  3. Debts ex­pire af­ter 5 years.

  4. If you are sued and you lose, you pay they oth­­er guy's lawyer fees.

  5. Lawyer fees are capped to 25% of the mon­ey be­ing dis­­put­ed.

  6. Lawyers are re­luc­­tant to help you sue some­one if they get very lit­­tle mon­ey (de­fined as less than $2000)

  7. If sued by the city for owed tax­es, the own­er al­ways los­es.

  8. Un­­paid tax­es ac­crue 2% com­­pound in­­ter­est mon­th­­ly. So, if you don't pay your $100, you will owe $102, then $104.04, $106.0128 etc.

With all those el­e­ments in place, let's play a game called "Tax Golf"!

The game is played by an in­de­ter­mined num­ber of play­ers called own­ers and one spe­cial play­er called city.

The game is played to 100 "month­s" or un­til all prop­er­ty has been sol­d.

The goal of the game, for the own­er­s, is to pay as lit­tle mon­ey as they can. The score is cal­cu­lat­ed like this: amount of mon­ey you paid di­vid­ed by the time you owned the house.

The own­er with the low­est score is the win­ner.

The goal of the game for the city, is to get as much mon­ey as he can. He's not com­pet­ing against the play­er­s, for him it's a sort of soli­taire where he com­petes against his past per­for­mance.

This, my friends is math. Math is a tool that helps you (a­mong oth­er things) do the right thing in this sort of com­pli­cat­ed, ar­bi­trary, re­al life sce­nari­o.

So, what's a good strat­e­gy for a own­er, and for the city?

In a sec­ond post next wednes­day, I will give some an­swers to those ques­tion­s, us­ing python.

Improved Importer and a Question

Thanks to the co­op­er­a­tion of Hu­mi­tos who gave me his word­press back­up, I did some im­prove­ments in the word­press.­com im­port fea­ture of Niko­la, my stat­ic web­site/blog gen­er­a­tor

So, if you were to try to use nikola_wordpress_importer from master now, it would:

  1. Not crash ;-)

  2. Down­load at­­tach­­ments

  3. Fix links to at­­tach­­ments so they work on the new site

How­ev­er, I am now un­sure of what ex­act­ly is in word­press.­com's ex­port XML file. The posts them­selves are in this for­m:

Muchas gracias Nico por hacer el video este. Groso, quedó muy bueno.


Two things jump to me:

  1. That's not HTML

  2. WTF is that youtube thing?

I am hav­ing some suc­cess pro­cess­ing it as mark­down, since that han­dles the para­graph breaks and some oth­er stuff. Maybe the youtube em­bed­ding is done with a mark­down ex­ten­sion?

Any­one knows?

Contents © 2000-2024 Roberto Alsina