~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Matt Nordhoff
  • Date: 2008-02-08 19:09:45 UTC
  • mto: This revision was merged to the branch mainline in revision 3237.
  • Revision ID: mnordhoff@mattnordhoff.com-20080208190945-b4lai3ufhtt41wth
Upgrade ConfigObj to version 4.5.1.

A couple of tests had to be updated because ConfigObj now makes sure all files end in a line terminator.

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.1
 
11
:Date: 2008/02/05
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
 
51
53
* Full Unicode support
52
54
* A powerful ``unrepr`` mode for storing basic datatypes
53
55
 
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
56
 
57
57
For support and bug reports please use the ConfigObj `Mailing List`_.
58
58
 
59
59
 
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
60
Downloading
65
61
===========
66
62
 
67
 
The current version is **4.4.0**, dated 4th February 2007. ConfigObj 4 is
 
63
The current version is **4.5.1**, dated 5th February 2008. ConfigObj 4 is
68
64
now stable. We still expect to pick up a few bugs along the way though [#]_.
69
65
{sm;:-)}
70
66
 
80
76
 
81
77
* configobj.zip_ from Voidspace
82
78
 
83
 
    This also contains validate.py_ , the `API Docs`_ and `this document`_.
 
79
    This also contains validate.py_  and `this document`_.
84
80
 
85
81
* The latest development version can be obtained from the `Subversion
86
82
  Repository`_.
92
88
Documentation
93
89
-------------
94
90
 
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.
 
91
*configobj.zip* also contains `this document`_.
 
92
 
 
93
* You can view `this document`_ online at the `ConfigObj Homepage`_.
 
94
 
101
95
 
102
96
Pythonutils
103
97
-----------
106
100
various other useful modules, and is required by many of the `Voidspace Python
107
101
Projects`_.
108
102
 
 
103
 
109
104
Development Version
110
105
-------------------
111
106
 
113
108
from the `Subversion Repository <http://svn.pythonutils.python-hosting.com/trunk/pythonutils/>`_.
114
109
 
115
110
.. _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
 
111
.. _configobj.zip: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj-4.5.1.zip
117
112
.. _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
113
.. _this document:
120
114
.. _configobj homepage: http://www.voidspace.org.uk/python/configobj.html
121
115
.. _Sourceforge: http://sourceforge.net/projects/configobj
122
 
.. _EpyDoc: http://epydoc.sourceforge.net
123
116
.. _pythonutils: http://www.voidspace.org.uk/python/pythonutils.html
124
 
.. _Voidspace Python Projects: http://www.voidspace.org.uk/python
 
117
.. _Voidspace Python Projects: http://www.voidspace.org.uk/python/index.shtml
125
118
 
126
119
 
127
120
 
128
121
ConfigObj in the Real World
129
122
===========================
130
123
    
131
 
Projects that use **ConfigObj** include :
 
124
**ConfigObj** is widely used. Projects using it include:
132
125
 
133
126
* `Bazaar <http://bazaar-ng.org>`_.
134
127
 
144
137
   A Python and `wxPython <http://www.wxpython.org>`_ 
145
138
   {acro;PIM;Personal Information Manager}, being developed by the 
146
139
   `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.
 
140
 
 
141
* `IPython <http://ipython.scipy.org/moin/>`_
 
142
 
 
143
    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>`_.
 
144
    
 
145
* ` Elisa - the Fluendo Mediacenter <http://elisa.fluendo.com/>`_    
 
146
    
 
147
    Elisa is an open source cross-platform media center solution designed to be simple for people not particularly familiar with computers.
170
148
 
171
149
 
172
150
Getting Started
175
153
The outstanding feature of using ConfigObj is simplicity. Most functions can be
176
154
performed with single line commands.
177
155
 
 
156
 
178
157
Reading a Config File
179
158
---------------------
180
159
 
215
194
 
216
195
    {-coloring}
217
196
 
 
197
 
218
198
Writing a Config File
219
199
---------------------
220
200
 
264
244
    Keywords and section names can only be strings [#]_. Attempting to set
265
245
    anything else will raise a ``ValueError``.
266
246
 
 
247
 
267
248
Config Files
268
249
------------
269
250
 
325
306
 
326
307
    {-coloring}
327
308
 
 
309
 
328
310
infile
329
311
------
330
312
 
348
330
  ``filename`` attribute of your ConfigObj will be ``None``. All keys must be
349
331
  strings. In this case, the order of values and sections is arbitrary.
350
332
 
 
333
 
351
334
options
352
335
-------
353
336
 
504
487
    If ``write_empty_values`` is ``True``, empty strings are written as
505
488
    empty values. See `Empty Values`_ for more details.
506
489
 
 
490
 
507
491
Methods
508
492
-------
509
493
 
513
497
 
514
498
In addition, the following `Section Methods`_ may be useful :
515
499
 
516
 
* *encode*
517
 
* *decode*
518
 
* *walk*
519
 
* *merge*
520
 
* *dict* 
521
 
* *as_bool*
522
 
* *as_float*
523
 
* *as_int*
 
500
* 'restore_default'
 
501
* 'restore_defaults'
 
502
* 'walk'
 
503
* 'merge'
 
504
* 'dict'
 
505
* 'as_bool'
 
506
* 'as_float'
 
507
* 'as_int'
524
508
 
525
509
Read about Sections_ for details of all the methods.
526
510
 
533
517
    
534
518
    You would typically use this to create a default ConfigObj and then merge
535
519
    in user settings. This way users only need to specify values that are
536
 
    different from the default.
 
520
    different from the default. You can use configspecs and validation to
 
521
    achieve the same thing of course.
537
522
    
538
523
 
539
524
The public methods available on ConfigObj are :
540
525
 
541
526
* 'write'
542
527
* 'validate'
 
528
* 'reset'
 
529
* 'reload'
 
530
 
543
531
 
544
532
write
545
533
~~~~~
569
557
'final_comment'. Comment lines and inline comments are written with each
570
558
key/value.
571
559
 
 
560
 
572
561
validate
573
562
~~~~~~~~
574
563
 
590
579
    test = config.validate(val)
591
580
    if test == True:
592
581
        print 'Succeeded.'
593
 
 
594
582
    {-coloring}
595
583
 
596
584
The validate method uses the `validate 
598
586
validation.
599
587
    
600
588
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
 
589
conversion as well it can abstract away the config file altogether and present
602
590
the config *data* to your application (in the types it expects it to be).
603
591
 
604
592
If the ``configspec`` attribute of the ConfigObj is ``None``, it raises a
621
609
    find this blog entry helpful :
622
610
    `Transforming Values with ConfigObj <http://www.voidspace.org.uk/python/weblog/arch_d7_2006_03_04.shtml#e257>`_.
623
611
 
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
612
 
627
613
The ``copy`` parameter fills in missing values from the configspec (default
628
614
values), *without* marking the values as defaults. It also causes comments to
640
626
    {+coloring}
641
627
    from configobj import ConfigObj
642
628
    configspec = ConfigObj(configspecfilename, encoding='UTF8',
643
 
        list_values=False)
 
629
                           list_values=False)
644
630
    config = ConfigObj(filename, configspec=configspec)
645
631
    {-coloring}
 
632
    
646
633
 
647
634
Return Value
648
635
############
668
655
Even if ``preserve_errors`` is ``True``, missing keys or sections will still be
669
656
represented by a ``False`` in the results dictionary.
670
657
 
 
658
 
671
659
Mentioning Default Values
672
660
#########################
673
661
 
713
701
Writing invalid default values is a *guaranteed* way of confusing your users.
714
702
Default values **must** pass the check.
715
703
 
 
704
 
716
705
Mentioning Repeated Sections
717
706
############################
718
707
 
774
763
within configspecs, ``DEFAULT`` sections are not processed by
775
764
validation; even in copy mode.
776
765
 
 
766
 
 
767
reload
 
768
~~~~~~
 
769
 
 
770
If a ConfigObj instance was loaded from the filesystem, then this method will reload it. It
 
771
will also reuse any configspec you supplied at instantiation (including reloading it from
 
772
the filesystem if you passed it in as a filename).
 
773
 
 
774
If the ConfigObj does not have a filename attribute pointing to a file, then a ``ReloadError`` 
 
775
will be raised.
 
776
 
 
777
 
 
778
reset
 
779
~~~~~
 
780
 
 
781
This method takes no arguments and doesn't return anything. It restores a ConfigObj
 
782
instance to a freshly created state.
 
783
 
 
784
 
777
785
Attributes
778
786
----------
779
787
 
790
798
* default_encoding
791
799
* unrepr
792
800
* write_empty_values
 
801
* newlines
793
802
 
794
803
.. note::
795
804
 
803
812
* create_empty
804
813
* file_error
805
814
 
 
815
 
806
816
interpolation
807
817
~~~~~~~~~~~~~
808
818
 
812
822
If ``interpolation`` is set to ``False``, then interpolation is *not* done when
813
823
you fetch values.
814
824
 
 
825
 
815
826
stringify
816
827
~~~~~~~~~
817
828
 
822
833
If stringify is unset (``False``) then attempting to set a value to a non
823
834
string (or a list of strings) will raise a ``TypeError``.
824
835
 
 
836
 
825
837
BOM
826
838
~~~
827
839
 
834
846
 
835
847
For UTF16 encodings, a BOM is *always* written.
836
848
 
 
849
 
837
850
initial_comment
838
851
~~~~~~~~~~~~~~~
839
852
 
844
857
 
845
858
The write method puts these lines before it starts writing out the members.
846
859
 
 
860
 
847
861
final_comment
848
862
~~~~~~~~~~~~~
849
863
 
855
869
The ``write`` method puts these lines after it finishes writing out the
856
870
members.
857
871
 
 
872
 
858
873
list_values
859
874
~~~~~~~~~~~
860
875
 
882
897
        ``list_values=False``. This means that files written by **ConfigObj**
883
898
        *could* now be incompatible - and need the quotes removing by hand.
884
899
 
 
900
 
885
901
encoding
886
902
~~~~~~~~
887
903
 
901
917
 
902
918
If this value is ``None`` then ``sys.defaultencoding`` is used instead.
903
919
 
 
920
 
904
921
unrepr
905
922
~~~~~~
906
923
 
911
928
This preserves basic Python data-types when read back in. See `unrepr mode`_
912
929
for more details.
913
930
 
 
931
 
914
932
write_empty_values
915
933
~~~~~~~~~~~~~~~~~~
916
934
 
918
936
empty values. See `Empty Values`_ for more details.
919
937
 
920
938
 
 
939
newlines
 
940
~~~~~~~~
 
941
 
 
942
When a config file is read, ConfigObj records the type of newline separators in the
 
943
file and uses this separator when writing. It defaults to ``None``, and ConfigObj
 
944
uses the system default (``os.sep``) if write is called without newlines having
 
945
been set.
 
946
 
 
947
 
921
948
The Config File Format
922
949
======================
923
950
 
1142
1169
 
1143
1170
* 'values'
1144
1171
 
 
1172
 
1145
1173
Section Attributes
1146
1174
------------------
1147
1175
 
1171
1199
    Setting any of these values in the section removes them from the defaults
1172
1200
    list.
1173
1201
 
 
1202
* default_values
 
1203
 
 
1204
    This attribute is a dictionary mapping keys to the default values for the
 
1205
    keys. By default it is an empty dictionary and is populated when you
 
1206
    validate the ConfigObj.
 
1207
 
1174
1208
* scalars, sections
1175
1209
 
1176
1210
    These attributes are normal lists, representing the order that members,
1222
1256
 
1223
1257
    See the validation_ section for full details of how to write configspecs.
1224
1258
 
 
1259
 
1225
1260
Section Methods
1226
1261
---------------
1227
1262
 
1338
1373
    
1339
1374
    It raises a ``ValueError`` if the conversion can't be done.
1340
1375
    
 
1376
* **restore_default**
 
1377
 
 
1378
    ``restore_default(key)``
 
1379
    
 
1380
    Restore (and return) the default value for the specified key.
 
1381
    
 
1382
    This method will only work for a ConfigObj that was created
 
1383
    with a configspec and has been validated.
 
1384
    
 
1385
    If there is no default value for this key, ``KeyError`` is raised.
 
1386
 
 
1387
* **restore_defaults**
 
1388
    
 
1389
    ``restore_defaults()``
 
1390
 
 
1391
    Recursively restore default values to all members
 
1392
    that have them.
 
1393
    
 
1394
    This method will only work for a ConfigObj that was created
 
1395
    with a configspec and has been validated.
 
1396
    
 
1397
    It doesn't delete or modify entries without default values.
 
1398
 
 
1399
 
1341
1400
Walking a Section
1342
1401
-----------------
1343
1402
 
1586
1645
* ``UnreprError``
1587
1646
 
1588
1647
    An error occurred when parsing a value in `unrepr mode`_.
 
1648
    
 
1649
* ``ReloadError``
 
1650
 
 
1651
    ``reload`` was called on a ConfigObj instance that doesn't have a valid 
 
1652
    filename attribute.
1589
1653
 
1590
1654
When parsing a configspec, ConfigObj will stop on the first error it
1591
1655
encounters.  It will raise a ``ConfigspecError``. This will have an ``error``
1638
1702
    find this blog entry helpful :
1639
1703
    `Transforming Values with ConfigObj <http://www.voidspace.org.uk/python/weblog/arch_d7_2006_03_04.shtml#e257>`_.
1640
1704
 
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
1705
Validation is done through a combination of the configspec_ and a ``Validator``
1645
1706
object. For this you need *validate.py* [#]_. See downloading_ if you don't
1646
1707
have a copy.
1659
1720
application configuration (boolean, integers, floats, etc) and the text format
1660
1721
of your config file.
1661
1722
 
 
1723
 
1662
1724
configspec
1663
1725
----------
1664
1726
 
1720
1782
 
1721
1783
.. _validate.py documentation: http://www.voidspace.org.uk/python/validate.html
1722
1784
 
 
1785
 
1723
1786
Type Conversion
1724
1787
---------------
1725
1788
 
1734
1797
set the stringify_ attribute to ``False``. If this is the case, attempting to
1735
1798
set a value to a non-string will raise an error.
1736
1799
 
 
1800
 
1737
1801
Default Values
1738
1802
--------------
1739
1803
 
1836
1900
    config.write()
1837
1901
    {-coloring}
1838
1902
 
 
1903
 
1839
1904
Validation and Interpolation
1840
1905
----------------------------
1841
1906
 
1849
1914
overwritten. If validation changes type - the value has to be overwritten, and
1850
1915
any interpolation references are lost {sm;:-(}.
1851
1916
 
 
1917
 
1852
1918
SimpleVal
1853
1919
---------
1854
1920
 
1929
1995
    key2 =     # a comment
1930
1996
    {-coloring}
1931
1997
 
 
1998
 
1932
1999
unrepr mode
1933
2000
===========
1934
2001
 
1970
2037
parsed using the `compiler package <http://docs.python.org/lib/compiler.html>`_
1971
2038
which discards comments.
1972
2039
 
 
2040
 
1973
2041
String Interpolation
1974
2042
====================
1975
2043
 
2124
2192
 
2125
2193
    {-coloring}
2126
2194
 
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
2195
 
2201
2196
ConfigObj 3
2202
 
-----------
 
2197
===========
2203
2198
 
2204
2199
ConfigObj 3 is now deprecated in favour of ConfigObj 4. I can fix bugs in
2205
2200
ConfigObj 3 if needed, though.
2221
2216
Particularly thanks to Nicola Larosa for help on the config file spec, the
2222
2217
validation system and the doctests.
2223
2218
 
2224
 
*validate.py* was originally written by Michael Foord and `Mark Andrews`_.
 
2219
*validate.py* was originally written by Michael Foord and Mark Andrews.
2225
2220
 
2226
2221
Thanks to others for input and bugfixes.
2227
2222
 
2235
2230
Of course if it does, let us know and we'll fix the problem so it doesn't
2236
2231
happen to anyone else {sm;:-)}. ::
2237
2232
 
2238
 
    Copyright (c) 2004 - 2006, Michael Foord & Nicola Larosa
 
2233
    Copyright (c) 2004 - 2008, Michael Foord & Nicola Larosa
2239
2234
    All rights reserved.
2240
2235
 
2241
2236
    Redistribution and use in source and binary forms, with or without
2326
2321
of the current section, before moving on to the current section's parent and
2327
2322
so on up the tree.
2328
2323
 
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
2324
Does it matter that we don't support the ':' divider, which is supported
2334
2325
by ``ConfigParser`` ?
2335
2326
 
2344
2335
=========
2345
2336
 
2346
2337
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.
 
2338
From version 4 it lists all releases and changes.
 
2339
 
 
2340
 
 
2341
2008/02/05 - Version 4.5.1
 
2342
--------------------------
 
2343
 
 
2344
Distribution updated to include version 0.3.1 of validate_. This means that
 
2345
Unicode configspecs now work.
 
2346
 
 
2347
 
 
2348
2008/02/05 - Version 4.5.0
 
2349
--------------------------
 
2350
 
 
2351
ConfigObj will now guarantee that files will be written terminated with a
 
2352
newline.
 
2353
 
 
2354
ConfigObj will no longer attempt to import the ``validate`` module, until/unless 
 
2355
you call ``ConfigObj.validate`` with ``preserve_errors=True``. This makes it 
 
2356
faster to import.
 
2357
 
 
2358
New methods ``restore_default`` and ``restore_defaults``. ``restore_default``
 
2359
resets an entry to its default value (and returns that value). ``restore_defaults``
 
2360
resets all entries to their default value. It doesn't modify entries without a 
 
2361
default value. You must have validated a ConfigObj (which populates the
 
2362
``default_values`` dictionary) before calling these methods.
 
2363
 
 
2364
BUGFIX: Proper quoting of keys, values and list values that contain hashes 
 
2365
(when writing).  When ``list_values=False``, values containing hashes are 
 
2366
triple quoted.
 
2367
 
 
2368
Added the ``reload`` method. This reloads a ConfigObj from file. If the filename
 
2369
attribute is not set then a ``ReloadError`` (a new exception inheriting from
 
2370
``IOError``) is raised.
 
2371
 
 
2372
BUGFIX: Files are read in with 'rb' mode, so that native/non-native line endings work!
 
2373
 
 
2374
Minor efficiency improvement in ``unrepr`` mode.
 
2375
 
 
2376
Added missing docstrings for some overidden dictionary methods.
 
2377
 
 
2378
Added the ``reset`` method. This restores a ConfigObj to a freshly created state.
 
2379
 
 
2380
Removed old CHANGELOG file.
2349
2381
 
2350
2382
 
2351
2383
2007/02/04 - Version 4.4.0
2405
2437
be re-raised. That error will still have an ``errors`` and a ``config``
2406
2438
attribute.
2407
2439
 
2408
 
Fixed bug where '\n' terminated files could be truncated.
 
2440
Fixed bug where '\\n' terminated files could be truncated.
2409
2441
 
2410
2442
Bugfix in ``unrepr`` mode, it couldn't handle '#' in values. (Thanks to
2411
2443
Philippe Normand for the report.)
2512
2544
 
2513
2545
Added ``as_int`` and ``as_float``.
2514
2546
 
 
2547
 
2515
2548
2005/12/14 - Version 4.1.0
2516
2549
--------------------------
2517
2550
 
2530
2563
 
2531
2564
Also use the new list syntax in validate_ 0.2.1. (For configspecs).
2532
2565
 
 
2566
 
2533
2567
2005/12/02 - Version 4.0.2
2534
2568
--------------------------
2535
2569
 
2561
2595
 
2562
2596
Obscure typo/bug fixed in ``write``. Wouldn't have affected anyone though.
2563
2597
 
 
2598
 
2564
2599
2005/09/09 - Version 4.0.0 beta 5
2565
2600
---------------------------------
2566
2601
 
2570
2605
 
2571
2606
Fixed bug with commas in comments. (matched as a list value)
2572
2607
 
 
2608
 
2573
2609
2005/09/07 - Version 4.0.0 beta 4
2574
2610
---------------------------------
2575
2611
 
2580
2616
 
2581
2617
Changed the mailing list address.
2582
2618
 
 
2619
 
2583
2620
2005/08/28 - Version 4.0.0 beta 3
2584
2621
---------------------------------
2585
2622
 
2586
2623
Interpolation is switched off before writing out files.
2587
2624
 
2588
2625
Fixed bug in handling ``StringIO`` instances. (Thanks to report from
2589
 
"Gustavo Niemeyer" <gustavo@niemeyer.net>)
 
2626
Gustavo Niemeyer.)
2590
2627
 
2591
2628
Moved the doctests from the ``__init__`` method to a separate function.
2592
2629
(For the sake of IDE calltips).
2593
2630
 
 
2631
 
2594
2632
2005/08/25 - Version 4.0.0 beta 2
2595
2633
---------------------------------
2596
2634
 
2597
2635
Amendments to *validate.py*.
2598
2636
 
2599
 
Official release.
 
2637
First public release.
 
2638
 
2600
2639
 
2601
2640
2005/08/21 - Version 4.0.0 beta 1
2602
2641
---------------------------------
2619
2658
 
2620
2659
Improved error handling.
2621
2660
 
2622
 
Plus lots of other improvements {sm;:grin:}.
 
2661
Plus lots of other improvements. {sm;:grin:}
 
2662
 
2623
2663
 
2624
2664
2004/05/24 - Version 3.0.0
2625
2665
--------------------------
2672
2712
 
2673
2713
Charmap is now incorporated into ConfigObj.
2674
2714
 
 
2715
 
2675
2716
2004/03/14 - Version 2.0.0 beta
2676
2717
-------------------------------
2677
2718
 
2681
2722
The config object now behaves like a dictionary.
2682
2723
 
2683
2724
I've completely broken the interface, but I don't think anyone was really
2684
 
 using it anyway.
 
2725
using it anyway.
2685
2726
 
2686
 
This new version is much more 'classy' {sm;:wink:}
 
2727
This new version is much more 'classy'. {sm;:wink:}
2687
2728
 
2688
2729
It will also read straight from/to a filename and completely parse a config
2689
2730
file without you *having* to supply a config spec.
2693
2734
No longer has getval and setval methods: use normal dictionary methods, or add
2694
2735
and delete.
2695
2736
 
 
2737
 
2696
2738
2004/01/29 - Version 1.0.5
2697
2739
--------------------------
2698
2740
 
2704
2746
 
2705
2747
A couple of bugs have been fixed.
2706
2748
 
 
2749
 
2707
2750
Origins
2708
2751
-------
2709
2752
 
2714
2757
 
2715
2758
----------
2716
2759
 
 
2760
 
2717
2761
Footnotes
2718
2762
=========
2719
2763
 
2720
 
.. [#] 315 of them, at the time of writing.
2721
 
 
2722
2764
.. [#] And if you discover any bugs, let us know. We'll fix them quickly.
2723
2765
 
2724
2766
.. [#] If you specify a filename that doesn't exist, ConfigObj will assume you
2752
2794
.. [#] The exception is if it detects a ``UTF16`` encoded file which it
2753
2795
    must decode before parsing.
2754
2796
     
2755
 
.. [#] The method signature in the API docs will show that this method takes
 
2797
.. [#] The method signature shows that this method takes
2756
2798
    two arguments. The second is the section to be written. This is because the
2757
2799
    ``write`` method is called recursively.
2758
2800
 
2767
2809
 
2768
2810
.. [#] Minimum required version of *validate.py* 0.2.0 .
2769
2811
 
2770
 
.. [#] It also makes ConfigObj a lot simpler to *use*.
2771
2812
 
2772
2813
.. note::
2773
2814
 
2775
2816
    textmacros module and the PySrc CSS stuff. See
2776
2817
    http://www.voidspace.org.uk/python/firedrop2/textmacros.shtml
2777
2818
 
 
2819
 
2778
2820
.. raw:: html
2779
2821
 
2780
2822
    <div align="center">
2797
2839
                alt="Python on Voidspace" border="0" />
2798
2840
            </a>
2799
2841
        </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
2842
 
2814
2843
    </div>
2815
2844
 
2816
2845
.. _listquote: http://www.voidspace.org.uk/python/modules.shtml#listquote
2817
 
.. _Michael Foord: http://www.voidspace.org.uk/index2.shtml
 
2846
.. _Michael Foord: http://www.voidspace.org.uk/python/weblog/index.shtml
2818
2847
.. _Nicola Larosa: http://www.teknico.net
2819
 
.. _Mark Andrews: http://www.la-la.com