On 26/11/2013 14:36, Giovanni Porcari wrote:

Il giorno 26/nov/2013, alle ore 12:43, Manlio Perillo 
<manlio.peri...@gmail.com> ha scritto:

Gli unici formati di file che conosco in cui il tipo è manifesto (o meglio, in 
cui il tipo è specificato da chi scrive il file di configurazione) sono YAML e 
JSON.  La differenza tra YAML e JSON è che il primo è estendibile.


Il difetto maggiore che trovo in JSON è la mancata tipizzazione
di date e datetime.

Si, questa è una limitazione abbastanza irritante.
Io infatti per i files di configurazione uso YAML, con un decoder custom che implementa diverse estensioni (come ad esempio, specificare un file, directory, un locale, un engine sqlalchemy, pkg resources, e così via).

Ecco un esempio:

paths:
  template: &template !pkg_resource_path app:templates
  static: !pkg_resource_path app:static
  flatpages: &flatpages !pkg_resource_path app:flatpages
  media: &media !make_dir [media]
  tmp: &tmp !make_dir [tmp]
  template_cache: &template_cache !make_dir [*tmp, mako_modules]

defs:
  charset: &charset utf-8

  lookup: &lookup !make_template
    directories: [*template, *flatpages]
    module_directory: *template_cache
    output_encoding: *charset
    default_filters: [unicode, h, trim]

  engine: &engine !make_engine
    url: postgresql://x:y@localhost/z
    echo: false

python:
  logger: !make_global_logger
    filename: "/tmp/app.log"
    level: DEBUG

Il decoder produce un dizionario a cui si può accedere, ad esempio, con:

conf['python.logger'], conf['paths.template'] e così via.

> [...]



Ciao  Manlio
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a