~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/util/configobj/docs/configobj.txt

  • Committer: Andrew Bennetts
  • Date: 2008-03-27 06:10:18 UTC
  • mfrom: (3309 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3320.
  • Revision ID: andrew.bennetts@canonical.com-20080327061018-dxztpxyv6yoeg3am
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
----------------------------------------
8
8
 
9
9
:Authors: Michael Foord, Nicola Larosa
10
 
:Version: ConfigObj 4.4.0
11
 
:Date: 2007/02/04
 
10
:Version: ConfigObj 4.5.2
 
11
:Date: 2008/02/24
12
12
:Homepage: `ConfigObj Homepage`_
13
13
:Sourceforge: Sourceforge_
14
14
:Development: `SVN Repository`_
24
24
   :keywords: python, script, module, config, configuration, data, persistence,
25
25
              developer, configparser
26
26
 
 
27
 
27
28
.. contents:: ConfigObj Manual
28
29
.. sectnum::
29
30
 
 
31
 
30
32
Introduction
31
33
============
32
34
 
45
47
    - repeated sections
46
48
    - and allowing default values
47
49
 
48
 
* All comments in the file are preserved
49
 
* The order of keys/sections is preserved
50
 
* No external dependencies
 
50
* When writing out config files, ConfigObj preserves all comments and the order of members and sections
 
51
* Many useful methods and options for working with configuration files (like the 'reload' method)
51
52
* Full Unicode support
52
 
* A powerful ``unrepr`` mode for storing basic datatypes
53
53
 
54
 
ConfigObj has a barrage of doctests [#]_ built into it, testing almost every
55
 
feature. Run ``python configobj_test.py -v`` to see them in action.
56
54
 
57
55
For support and bug reports please use the ConfigObj `Mailing List`_.
58
56
 
59
57
 
60
 
.. _ConfigObj for Data Persistence: http://www.voidspace.org.uk/python/articles/configobj_for_data_persistence.shtml
61
 
.. _ConfigPersist.py: http://www.voidspace.org.uk/python/configpersist.html
62
 
 
63
 
 
64
58
Downloading
65
59
===========
66
60
 
67
 
The current version is **4.4.0**, dated 4th February 2007. ConfigObj 4 is
 
61
The current version is **4.5.2**, dated 24th February 2008. ConfigObj 4 is
68
62
now stable. We still expect to pick up a few bugs along the way though [#]_.
69
63
{sm;:-)}
70
64
 
80
74
 
81
75
* configobj.zip_ from Voidspace
82
76
 
83
 
    This also contains validate.py_ , the `API Docs`_ and `this document`_.
 
77
    This also contains validate.py_  and `this document`_.
84
78
 
85
79
* The latest development version can be obtained from the `Subversion
86
80
  Repository`_.
92
86
Documentation
93
87
-------------
94
88
 
95
 
*configobj.zip* contains `this document`_ and full `API Docs`_, generated by
96
 
the EpyDoc_ program.
97
 
 
98
 
* You can view `this document`_ online as the `ConfigObj Homepage`_.
99
 
 
100
 
* You can also browse the `API Docs`_ online.
 
89
*configobj.zip* also contains `this document`_.
 
90
 
 
91
* You can view `this document`_ online at the `ConfigObj Homepage`_.
 
92
 
101
93
 
102
94
Pythonutils
103
95
-----------
106
98
various other useful modules, and is required by many of the `Voidspace Python
107
99
Projects`_.
108
100
 
 
101
 
109
102
Development Version
110
103
-------------------
111
104
 
113
106
from the `Subversion Repository <http://svn.pythonutils.python-hosting.com/trunk/pythonutils/>`_.
114
107
 
115
108
.. _configobj.py: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj.py
116
 
.. _configobj.zip: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj-4.4.0.zip
 
109
.. _configobj.zip: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj-4.5.2.zip
117
110
.. _validate.py: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=validate.py
118
 
.. _API Docs: http://www.voidspace.org.uk/python/configobj-api/
119
111
.. _this document:
120
112
.. _configobj homepage: http://www.voidspace.org.uk/python/configobj.html
121
113
.. _Sourceforge: http://sourceforge.net/projects/configobj
122
 
.. _EpyDoc: http://epydoc.sourceforge.net
123
114
.. _pythonutils: http://www.voidspace.org.uk/python/pythonutils.html
124
 
.. _Voidspace Python Projects: http://www.voidspace.org.uk/python
 
115
.. _Voidspace Python Projects: http://www.voidspace.org.uk/python/index.shtml
125
116
 
126
117
 
127
118
 
128
119
ConfigObj in the Real World
129
120
===========================
130
121
    
131
 
Projects that use **ConfigObj** include :
 
122
**ConfigObj** is widely used. Projects using it include:
132
123
 
133
124
* `Bazaar <http://bazaar-ng.org>`_.
134
125
 
144
135
   A Python and `wxPython <http://www.wxpython.org>`_ 
145
136
   {acro;PIM;Personal Information Manager}, being developed by the 
146
137
   `OSAFoundation <http://www.osafoundation.org/>`_.
147
 
 
148
 
* `CryptoBox <https://systemausfall.org/trac/cryptobox/wiki/CryptoBox/en>`_
149
 
 
150
 
   A very interesting looking Debian based Live-CD which supports storing 
151
 
   data using an encrypted harddisk; usable even by non technical users.
152
 
 
153
 
* `Simple64 <http://ubuntuforums.org/showthread.php?t=266290>`_
154
 
 
155
 
    A Ubuntu tool which provides a GUI to install a host of applications.
156
 
 
157
 
* `Debian-cd-ng <http://wiki.debian.org/debian-cd-ng>`_
158
 
 
159
 
    *Debian-cd-ng* recommends ConfigObj for parsing the Debian-cd configuration files.
160
 
 
161
 
* `NeuroImaging in Python <http://projects.scipy.org/neuroimaging/ni/wiki>`_
162
 
 
163
 
    BrainSTAT is a project with the ultimate goal to produce a
164
 
    platform-independent python environment for the analysis of brain
165
 
    imaging data.
166
 
    
167
 
* `Gruik <http://www.tracos.org/gruik/wiki>`_
168
 
 
169
 
    Gruik is a free software network packet sniffer.
 
138
 
 
139
* `matplotlib <http://matplotlib.sourceforge.net/>`_
 
140
 
 
141
        A 2D plotting library.
 
142
 
 
143
* `IPython <http://ipython.scipy.org/moin/>`_
 
144
 
 
145
    IPython is an enhanced interactive Python shell. IPython uses ConfigObj in a module called 'TConfig' that combines it with enthought `Traits <http://code.enthought.com/traits/>`_: `tconfig <http://ipython.scipy.org/ipython/ipython/browser/ipython/branches/saw/sandbox/tconfig>`_.
 
146
    
 
147
* `Elisa - the Fluendo Mediacenter <http://elisa.fluendo.com/>`_    
 
148
    
 
149
    Elisa is an open source cross-platform media center solution designed to be simple for people not particularly familiar with computers.
170
150
 
171
151
 
172
152
Getting Started
175
155
The outstanding feature of using ConfigObj is simplicity. Most functions can be
176
156
performed with single line commands.
177
157
 
 
158
 
178
159
Reading a Config File
179
160
---------------------
180
161
 
215
196
 
216
197
    {-coloring}
217
198
 
 
199
 
218
200
Writing a Config File
219
201
---------------------
220
202
 
264
246
    Keywords and section names can only be strings [#]_. Attempting to set
265
247
    anything else will raise a ``ValueError``.
266
248
 
 
249
 
267
250
Config Files
268
251
------------
269
252
 
325
308
 
326
309
    {-coloring}
327
310
 
 
311
 
328
312
infile
329
313
------
330
314
 
348
332
  ``filename`` attribute of your ConfigObj will be ``None``. All keys must be
349
333
  strings. In this case, the order of values and sections is arbitrary.
350
334
 
 
335
 
351
336
options
352
337
-------
353
338
 
504
489
    If ``write_empty_values`` is ``True``, empty strings are written as
505
490
    empty values. See `Empty Values`_ for more details.
506
491
 
 
492
 
507
493
Methods
508
494
-------
509
495
 
513
499
 
514
500
In addition, the following `Section Methods`_ may be useful :
515
501
 
516
 
* *encode*
517
 
* *decode*
518
 
* *walk*
519
 
* *merge*
520
 
* *dict* 
521
 
* *as_bool*
522
 
* *as_float*
523
 
* *as_int*
 
502
* 'restore_default'
 
503
* 'restore_defaults'
 
504
* 'walk'
 
505
* 'merge'
 
506
* 'dict'
 
507
* 'as_bool'
 
508
* 'as_float'
 
509
* 'as_int'
524
510
 
525
511
Read about Sections_ for details of all the methods.
526
512
 
533
519
    
534
520
    You would typically use this to create a default ConfigObj and then merge
535
521
    in user settings. This way users only need to specify values that are
536
 
    different from the default.
 
522
    different from the default. You can use configspecs and validation to
 
523
    achieve the same thing of course.
537
524
    
538
525
 
539
526
The public methods available on ConfigObj are :
540
527
 
541
528
* 'write'
542
529
* 'validate'
 
530
* 'reset'
 
531
* 'reload'
 
532
 
543
533
 
544
534
write
545
535
~~~~~
569
559
'final_comment'. Comment lines and inline comments are written with each
570
560
key/value.
571
561
 
 
562
 
572
563
validate
573
564
~~~~~~~~
574
565
 
590
581
    test = config.validate(val)
591
582
    if test == True:
592
583
        print 'Succeeded.'
593
 
 
594
584
    {-coloring}
595
585
 
596
586
The validate method uses the `validate 
598
588
validation.
599
589
    
600
590
This method validates the ConfigObj against the configspec. By doing type
601
 
conversion as well, it can abstract away the config file altogether and present
 
591
conversion as well it can abstract away the config file altogether and present
602
592
the config *data* to your application (in the types it expects it to be).
603
593
 
604
594
If the ``configspec`` attribute of the ConfigObj is ``None``, it raises a
621
611
    find this blog entry helpful :
622
612
    `Transforming Values with ConfigObj <http://www.voidspace.org.uk/python/weblog/arch_d7_2006_03_04.shtml#e257>`_.
623
613
 
624
 
    There is also a module to assist in auto-generating configspecs called
625
 
    ConfigPersist.py_. Its use is explained in `ConfigObj for Data Persistence`_.
626
614
 
627
615
The ``copy`` parameter fills in missing values from the configspec (default
628
616
values), *without* marking the values as defaults. It also causes comments to
640
628
    {+coloring}
641
629
    from configobj import ConfigObj
642
630
    configspec = ConfigObj(configspecfilename, encoding='UTF8',
643
 
        list_values=False)
 
631
                           list_values=False)
644
632
    config = ConfigObj(filename, configspec=configspec)
645
633
    {-coloring}
 
634
    
646
635
 
647
636
Return Value
648
637
############
668
657
Even if ``preserve_errors`` is ``True``, missing keys or sections will still be
669
658
represented by a ``False`` in the results dictionary.
670
659
 
 
660
 
671
661
Mentioning Default Values
672
662
#########################
673
663
 
713
703
Writing invalid default values is a *guaranteed* way of confusing your users.
714
704
Default values **must** pass the check.
715
705
 
 
706
 
716
707
Mentioning Repeated Sections
717
708
############################
718
709
 
774
765
within configspecs, ``DEFAULT`` sections are not processed by
775
766
validation; even in copy mode.
776
767
 
 
768
 
 
769
reload
 
770
~~~~~~
 
771
 
 
772
If a ConfigObj instance was loaded from the filesystem, then this method will reload it. It
 
773
will also reuse any configspec you supplied at instantiation (including reloading it from
 
774
the filesystem if you passed it in as a filename).
 
775
 
 
776
If the ConfigObj does not have a filename attribute pointing to a file, then a ``ReloadError`` 
 
777
will be raised.
 
778
 
 
779
 
 
780
reset
 
781
~~~~~
 
782
 
 
783
This method takes no arguments and doesn't return anything. It restores a ConfigObj
 
784
instance to a freshly created state.
 
785
 
 
786
 
777
787
Attributes
778
788
----------
779
789
 
790
800
* default_encoding
791
801
* unrepr
792
802
* write_empty_values
 
803
* newlines
793
804
 
794
805
.. note::
795
806
 
803
814
* create_empty
804
815
* file_error
805
816
 
 
817
 
806
818
interpolation
807
819
~~~~~~~~~~~~~
808
820
 
812
824
If ``interpolation`` is set to ``False``, then interpolation is *not* done when
813
825
you fetch values.
814
826
 
 
827
 
815
828
stringify
816
829
~~~~~~~~~
817
830
 
822
835
If stringify is unset (``False``) then attempting to set a value to a non
823
836
string (or a list of strings) will raise a ``TypeError``.
824
837
 
 
838
 
825
839
BOM
826
840
~~~
827
841
 
834
848
 
835
849
For UTF16 encodings, a BOM is *always* written.
836
850
 
 
851
 
837
852
initial_comment
838
853
~~~~~~~~~~~~~~~
839
854
 
844
859
 
845
860
The write method puts these lines before it starts writing out the members.
846
861
 
 
862
 
847
863
final_comment
848
864
~~~~~~~~~~~~~
849
865
 
855
871
The ``write`` method puts these lines after it finishes writing out the
856
872
members.
857
873
 
 
874
 
858
875
list_values
859
876
~~~~~~~~~~~
860
877
 
882
899
        ``list_values=False``. This means that files written by **ConfigObj**
883
900
        *could* now be incompatible - and need the quotes removing by hand.
884
901
 
 
902
 
885
903
encoding
886
904
~~~~~~~~
887
905
 
901
919
 
902
920
If this value is ``None`` then ``sys.defaultencoding`` is used instead.
903
921
 
 
922
 
904
923
unrepr
905
924
~~~~~~
906
925
 
911
930
This preserves basic Python data-types when read back in. See `unrepr mode`_
912
931
for more details.
913
932
 
 
933
 
914
934
write_empty_values
915
935
~~~~~~~~~~~~~~~~~~
916
936
 
918
938
empty values. See `Empty Values`_ for more details.
919
939
 
920
940
 
 
941
newlines
 
942
~~~~~~~~
 
943
 
 
944
When a config file is read, ConfigObj records the type of newline separators in the
 
945
file and uses this separator when writing. It defaults to ``None``, and ConfigObj
 
946
uses the system default (``os.sep``) if write is called without newlines having
 
947
been set.
 
948
 
 
949
 
921
950
The Config File Format
922
951
======================
923
952
 
1142
1171
 
1143
1172
* 'values'
1144
1173
 
 
1174
 
1145
1175
Section Attributes
1146
1176
------------------
1147
1177
 
1171
1201
    Setting any of these values in the section removes them from the defaults
1172
1202
    list.
1173
1203
 
 
1204
* default_values
 
1205
 
 
1206
    This attribute is a dictionary mapping keys to the default values for the
 
1207
    keys. By default it is an empty dictionary and is populated when you
 
1208
    validate the ConfigObj.
 
1209
 
1174
1210
* scalars, sections
1175
1211
 
1176
1212
    These attributes are normal lists, representing the order that members,
1222
1258
 
1223
1259
    See the validation_ section for full details of how to write configspecs.
1224
1260
 
 
1261
 
1225
1262
Section Methods
1226
1263
---------------
1227
1264
 
1338
1375
    
1339
1376
    It raises a ``ValueError`` if the conversion can't be done.
1340
1377
    
 
1378
* **restore_default**
 
1379
 
 
1380
    ``restore_default(key)``
 
1381
    
 
1382
    Restore (and return) the default value for the specified key.
 
1383
    
 
1384
    This method will only work for a ConfigObj that was created
 
1385
    with a configspec and has been validated.
 
1386
    
 
1387
    If there is no default value for this key, ``KeyError`` is raised.
 
1388
 
 
1389
* **restore_defaults**
 
1390
    
 
1391
    ``restore_defaults()``
 
1392
 
 
1393
    Recursively restore default values to all members
 
1394
    that have them.
 
1395
    
 
1396
    This method will only work for a ConfigObj that was created
 
1397
    with a configspec and has been validated.
 
1398
    
 
1399
    It doesn't delete or modify entries without default values.
 
1400
 
 
1401
 
1341
1402
Walking a Section
1342
1403
-----------------
1343
1404
 
1586
1647
* ``UnreprError``
1587
1648
 
1588
1649
    An error occurred when parsing a value in `unrepr mode`_.
 
1650
    
 
1651
* ``ReloadError``
 
1652
 
 
1653
    ``reload`` was called on a ConfigObj instance that doesn't have a valid 
 
1654
    filename attribute.
1589
1655
 
1590
1656
When parsing a configspec, ConfigObj will stop on the first error it
1591
1657
encounters.  It will raise a ``ConfigspecError``. This will have an ``error``
1638
1704
    find this blog entry helpful :
1639
1705
    `Transforming Values with ConfigObj <http://www.voidspace.org.uk/python/weblog/arch_d7_2006_03_04.shtml#e257>`_.
1640
1706
 
1641
 
    There is also a module to assist in auto-generating configspecs called
1642
 
    ConfigPersist.py_. Its use is explained in `ConfigObj for Data Persistence`_.
1643
 
 
1644
1707
Validation is done through a combination of the configspec_ and a ``Validator``
1645
1708
object. For this you need *validate.py* [#]_. See downloading_ if you don't
1646
1709
have a copy.
1659
1722
application configuration (boolean, integers, floats, etc) and the text format
1660
1723
of your config file.
1661
1724
 
 
1725
 
1662
1726
configspec
1663
1727
----------
1664
1728
 
1720
1784
 
1721
1785
.. _validate.py documentation: http://www.voidspace.org.uk/python/validate.html
1722
1786
 
 
1787
 
1723
1788
Type Conversion
1724
1789
---------------
1725
1790
 
1734
1799
set the stringify_ attribute to ``False``. If this is the case, attempting to
1735
1800
set a value to a non-string will raise an error.
1736
1801
 
 
1802
 
1737
1803
Default Values
1738
1804
--------------
1739
1805
 
1836
1902
    config.write()
1837
1903
    {-coloring}
1838
1904
 
 
1905
 
1839
1906
Validation and Interpolation
1840
1907
----------------------------
1841
1908
 
1849
1916
overwritten. If validation changes type - the value has to be overwritten, and
1850
1917
any interpolation references are lost {sm;:-(}.
1851
1918
 
 
1919
 
1852
1920
SimpleVal
1853
1921
---------
1854
1922
 
1929
1997
    key2 =     # a comment
1930
1998
    {-coloring}
1931
1999
 
 
2000
 
1932
2001
unrepr mode
1933
2002
===========
1934
2003
 
1970
2039
parsed using the `compiler package <http://docs.python.org/lib/compiler.html>`_
1971
2040
which discards comments.
1972
2041
 
 
2042
 
1973
2043
String Interpolation
1974
2044
====================
1975
2045
 
2124
2194
 
2125
2195
    {-coloring}
2126
2196
 
2127
 
Backwards Compatibility
2128
 
=======================
2129
 
 
2130
 
There have been a lot of changes since ConfigObj 3. The core parser is now
2131
 
based on regular expressions, and is a lot faster and smaller. There is now no
2132
 
difference in the way we treat flat files and non-flatfiles, that is, no empty
2133
 
sections. This means some of the code can be a lot simpler, less code does
2134
 
more of the work [#]_.
2135
 
 
2136
 
There have been other simplifications: for example we only have eight options
2137
 
instead of seventeen.
2138
 
 
2139
 
Most config files created for ConfigObj 3 will be read with no changes and many
2140
 
programs will work without having to alter code. Some of the changes do break
2141
 
backwards compatibility: for example, code that uses the previous options will
2142
 
now raise an error. It should be very easy to fix these, though.
2143
 
 
2144
 
Below is a list of all the changes that affect backwards compatibility. This
2145
 
doesn't include details of method signatures that have changed, because almost
2146
 
all of them have.
2147
 
 
2148
 
Incompatible Changes
2149
 
--------------------
2150
 
 
2151
 
(I have removed a lot of needless complications: this list is probably not
2152
 
conclusive, many option/attribute/method names have changed.)
2153
 
 
2154
 
Case sensitive.
2155
 
 
2156
 
The only valid divider is '='.
2157
 
 
2158
 
Line continuations with ``\`` removed.
2159
 
 
2160
 
No recursive lists in values.
2161
 
 
2162
 
No empty sections.
2163
 
 
2164
 
No distinction between flatfiles and non flatfiles.
2165
 
 
2166
 
Change in list syntax: use commas to indicate list, not parentheses (square
2167
 
brackets and parentheses are no longer recognised as lists).
2168
 
 
2169
 
';' is no longer valid for comments, and no multiline comments.
2170
 
 
2171
 
No attribute-style access to values.
2172
 
 
2173
 
Empty values not allowed: use '' or "".
2174
 
 
2175
 
In ConfigObj 3, setting a non-flatfile member to ``None`` would initialise it
2176
 
as an empty section.
2177
 
 
2178
 
The escape entities '&mjf-lf;' and '&mjf-quot;' have gone, replaced by triple
2179
 
quote, multiple line values.
2180
 
 
2181
 
The ``newline``, ``force_return``, and ``default`` options have gone.
2182
 
 
2183
 
``fileerror`` and ``createempty`` options have become ``file_error`` and
2184
 
``create_empty``.
2185
 
 
2186
 
Partial configspecs (for specifying the order members should be written out,
2187
 
and which should be present) have gone. The configspec is no longer used to
2188
 
specify order for the ``write`` method.
2189
 
 
2190
 
Infinite loops in string interpolation are now detected and raise an error
2191
 
``InterpolationLoopError``.
2192
 
 
2193
 
Specifying a value for interpolation which doesn't exist now raises a
2194
 
``MissingInterpolationOption`` error (instead of merely being ignored).
2195
 
 
2196
 
The ``writein`` method has been removed.
2197
 
 
2198
 
The comments attribute is now a list (``inline_comments`` equates to the old
2199
 
comments attribute).
2200
2197
 
2201
2198
ConfigObj 3
2202
 
-----------
 
2199
===========
2203
2200
 
2204
2201
ConfigObj 3 is now deprecated in favour of ConfigObj 4. I can fix bugs in
2205
2202
ConfigObj 3 if needed, though.
2221
2218
Particularly thanks to Nicola Larosa for help on the config file spec, the
2222
2219
validation system and the doctests.
2223
2220
 
2224
 
*validate.py* was originally written by Michael Foord and `Mark Andrews`_.
 
2221
*validate.py* was originally written by Michael Foord and Mark Andrews.
2225
2222
 
2226
2223
Thanks to others for input and bugfixes.
2227
2224
 
2235
2232
Of course if it does, let us know and we'll fix the problem so it doesn't
2236
2233
happen to anyone else {sm;:-)}. ::
2237
2234
 
2238
 
    Copyright (c) 2004 - 2006, Michael Foord & Nicola Larosa
 
2235
    Copyright (c) 2004 - 2008, Michael Foord & Nicola Larosa
2239
2236
    All rights reserved.
2240
2237
 
2241
2238
    Redistribution and use in source and binary forms, with or without
2326
2323
of the current section, before moving on to the current section's parent and
2327
2324
so on up the tree.
2328
2325
 
2329
 
Logically a 'DEFAULT' section should apply to all subsections of the *same
2330
 
parent* - this means that checking the 'DEFAULT' subsection in the
2331
 
*current section* is not necessarily logical ?
2332
 
 
2333
2326
Does it matter that we don't support the ':' divider, which is supported
2334
2327
by ``ConfigParser`` ?
2335
2328
 
2344
2337
=========
2345
2338
 
2346
2339
This is an abbreviated changelog showing the major releases up to version 4.
2347
 
From version 4 it lists all releases and changes. *More* data on individual
2348
 
changes may be found in the source code or the CHANGELOG file.
 
2340
From version 4 it lists all releases and changes.
 
2341
 
 
2342
 
 
2343
2008/02/05 - Version 4.5.2
 
2344
--------------------------
 
2345
 
 
2346
Distribution updated to include version 0.3.2 of validate_. This means that
 
2347
``None`` as a default value win configspecs works.
 
2348
 
 
2349
 
 
2350
2008/02/05 - Version 4.5.1
 
2351
--------------------------
 
2352
 
 
2353
Distribution updated to include version 0.3.1 of validate_. This means that
 
2354
Unicode configspecs now work.
 
2355
 
 
2356
 
 
2357
2008/02/05 - Version 4.5.0
 
2358
--------------------------
 
2359
 
 
2360
ConfigObj will now guarantee that files will be written terminated with a
 
2361
newline.
 
2362
 
 
2363
ConfigObj will no longer attempt to import the ``validate`` module, until/unless 
 
2364
you call ``ConfigObj.validate`` with ``preserve_errors=True``. This makes it 
 
2365
faster to import.
 
2366
 
 
2367
New methods ``restore_default`` and ``restore_defaults``. ``restore_default``
 
2368
resets an entry to its default value (and returns that value). ``restore_defaults``
 
2369
resets all entries to their default value. It doesn't modify entries without a 
 
2370
default value. You must have validated a ConfigObj (which populates the
 
2371
``default_values`` dictionary) before calling these methods.
 
2372
 
 
2373
BUGFIX: Proper quoting of keys, values and list values that contain hashes 
 
2374
(when writing).  When ``list_values=False``, values containing hashes are 
 
2375
triple quoted.
 
2376
 
 
2377
Added the ``reload`` method. This reloads a ConfigObj from file. If the filename
 
2378
attribute is not set then a ``ReloadError`` (a new exception inheriting from
 
2379
``IOError``) is raised.
 
2380
 
 
2381
BUGFIX: Files are read in with 'rb' mode, so that native/non-native line endings work!
 
2382
 
 
2383
Minor efficiency improvement in ``unrepr`` mode.
 
2384
 
 
2385
Added missing docstrings for some overidden dictionary methods.
 
2386
 
 
2387
Added the ``reset`` method. This restores a ConfigObj to a freshly created state.
 
2388
 
 
2389
Removed old CHANGELOG file.
2349
2390
 
2350
2391
 
2351
2392
2007/02/04 - Version 4.4.0
2405
2446
be re-raised. That error will still have an ``errors`` and a ``config``
2406
2447
attribute.
2407
2448
 
2408
 
Fixed bug where '\n' terminated files could be truncated.
 
2449
Fixed bug where '\\n' terminated files could be truncated.
2409
2450
 
2410
2451
Bugfix in ``unrepr`` mode, it couldn't handle '#' in values. (Thanks to
2411
2452
Philippe Normand for the report.)
2512
2553
 
2513
2554
Added ``as_int`` and ``as_float``.
2514
2555
 
 
2556
 
2515
2557
2005/12/14 - Version 4.1.0
2516
2558
--------------------------
2517
2559
 
2530
2572
 
2531
2573
Also use the new list syntax in validate_ 0.2.1. (For configspecs).
2532
2574
 
 
2575
 
2533
2576
2005/12/02 - Version 4.0.2
2534
2577
--------------------------
2535
2578
 
2561
2604
 
2562
2605
Obscure typo/bug fixed in ``write``. Wouldn't have affected anyone though.
2563
2606
 
 
2607
 
2564
2608
2005/09/09 - Version 4.0.0 beta 5
2565
2609
---------------------------------
2566
2610
 
2570
2614
 
2571
2615
Fixed bug with commas in comments. (matched as a list value)
2572
2616
 
 
2617
 
2573
2618
2005/09/07 - Version 4.0.0 beta 4
2574
2619
---------------------------------
2575
2620
 
2580
2625
 
2581
2626
Changed the mailing list address.
2582
2627
 
 
2628
 
2583
2629
2005/08/28 - Version 4.0.0 beta 3
2584
2630
---------------------------------
2585
2631
 
2586
2632
Interpolation is switched off before writing out files.
2587
2633
 
2588
2634
Fixed bug in handling ``StringIO`` instances. (Thanks to report from
2589
 
"Gustavo Niemeyer" <gustavo@niemeyer.net>)
 
2635
Gustavo Niemeyer.)
2590
2636
 
2591
2637
Moved the doctests from the ``__init__`` method to a separate function.
2592
2638
(For the sake of IDE calltips).
2593
2639
 
 
2640
 
2594
2641
2005/08/25 - Version 4.0.0 beta 2
2595
2642
---------------------------------
2596
2643
 
2597
2644
Amendments to *validate.py*.
2598
2645
 
2599
 
Official release.
 
2646
First public release.
 
2647
 
2600
2648
 
2601
2649
2005/08/21 - Version 4.0.0 beta 1
2602
2650
---------------------------------
2619
2667
 
2620
2668
Improved error handling.
2621
2669
 
2622
 
Plus lots of other improvements {sm;:grin:}.
 
2670
Plus lots of other improvements. {sm;:grin:}
 
2671
 
2623
2672
 
2624
2673
2004/05/24 - Version 3.0.0
2625
2674
--------------------------
2672
2721
 
2673
2722
Charmap is now incorporated into ConfigObj.
2674
2723
 
 
2724
 
2675
2725
2004/03/14 - Version 2.0.0 beta
2676
2726
-------------------------------
2677
2727
 
2681
2731
The config object now behaves like a dictionary.
2682
2732
 
2683
2733
I've completely broken the interface, but I don't think anyone was really
2684
 
 using it anyway.
 
2734
using it anyway.
2685
2735
 
2686
 
This new version is much more 'classy' {sm;:wink:}
 
2736
This new version is much more 'classy'. {sm;:wink:}
2687
2737
 
2688
2738
It will also read straight from/to a filename and completely parse a config
2689
2739
file without you *having* to supply a config spec.
2693
2743
No longer has getval and setval methods: use normal dictionary methods, or add
2694
2744
and delete.
2695
2745
 
 
2746
 
2696
2747
2004/01/29 - Version 1.0.5
2697
2748
--------------------------
2698
2749
 
2704
2755
 
2705
2756
A couple of bugs have been fixed.
2706
2757
 
 
2758
 
2707
2759
Origins
2708
2760
-------
2709
2761
 
2714
2766
 
2715
2767
----------
2716
2768
 
 
2769
 
2717
2770
Footnotes
2718
2771
=========
2719
2772
 
2720
 
.. [#] 315 of them, at the time of writing.
2721
 
 
2722
2773
.. [#] And if you discover any bugs, let us know. We'll fix them quickly.
2723
2774
 
2724
2775
.. [#] If you specify a filename that doesn't exist, ConfigObj will assume you
2752
2803
.. [#] The exception is if it detects a ``UTF16`` encoded file which it
2753
2804
    must decode before parsing.
2754
2805
     
2755
 
.. [#] The method signature in the API docs will show that this method takes
 
2806
.. [#] The method signature shows that this method takes
2756
2807
    two arguments. The second is the section to be written. This is because the
2757
2808
    ``write`` method is called recursively.
2758
2809
 
2767
2818
 
2768
2819
.. [#] Minimum required version of *validate.py* 0.2.0 .
2769
2820
 
2770
 
.. [#] It also makes ConfigObj a lot simpler to *use*.
2771
2821
 
2772
2822
.. note::
2773
2823
 
2775
2825
    textmacros module and the PySrc CSS stuff. See
2776
2826
    http://www.voidspace.org.uk/python/firedrop2/textmacros.shtml
2777
2827
 
 
2828
 
2778
2829
.. raw:: html
2779
2830
 
2780
2831
    <div align="center">
2797
2848
                alt="Python on Voidspace" border="0" />
2798
2849
            </a>
2799
2850
        </p>
2800
 
        <p>
2801
 
            <a href="http://sourceforge.net/donate/index.php?group_id=123265">
2802
 
                <img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project" /> 
2803
 
            </a>
2804
 
        </p>
2805
 
        <p>
2806
 
            <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
2807
 
            </script>
2808
 
            <script type="text/javascript">
2809
 
            _uacct = "UA-203625-1";
2810
 
            urchinTracker();
2811
 
            </script>
2812
 
        </p>
2813
2851
 
2814
2852
    </div>
2815
2853
 
2816
2854
.. _listquote: http://www.voidspace.org.uk/python/modules.shtml#listquote
2817
 
.. _Michael Foord: http://www.voidspace.org.uk/index2.shtml
 
2855
.. _Michael Foord: http://www.voidspace.org.uk/python/weblog/index.shtml
2818
2856
.. _Nicola Larosa: http://www.teknico.net
2819
 
.. _Mark Andrews: http://www.la-la.com