Commit graph

394 commits

Author SHA1 Message Date
Emmanuel Garette
ddaadb0701 coverage 2017-07-21 18:03:34 +02:00
Emmanuel Garette
be43c95ec0 In Config, name and session_id was quite equal, remove name
session_id is now validate
set_value return Configs with error
add new_config to MetaConfig
2017-07-19 20:44:38 +02:00
Emmanuel Garette
90a2072fc5 less commit + better meta support 2017-07-16 23:11:12 +02:00
Emmanuel Garette
dc9454be63 limit database usage 2017-07-16 10:57:43 +02:00
Emmanuel Garette
d445963429 add permissive cache 2017-07-13 22:04:06 +02:00
Emmanuel Garette
962b4eb660 many improvment 2017-07-11 22:31:58 +02:00
Emmanuel Garette
c8bc3093c7 python 3.5 support 2017-07-09 09:49:03 +02:00
Emmanuel Garette
dadf859905 better cache 2017-07-08 15:59:56 +02:00
Emmanuel Garette
6bad3c6e64 update sqlite storage 2017-07-04 19:59:42 +02:00
Emmanuel Garette
6de528d1f1 add index to setitem (for slaves) 2017-05-31 19:22:22 +02:00
Emmanuel Garette
695de030ef coverage for tiramisu/value.py 2017-02-11 17:22:50 +01:00
Emmanuel Garette
18d6976183 copy the context in carry_out_calculation 2017-01-11 22:58:01 +01:00
Emmanuel Garette
7fe47396ee correction in fullpath option 2017-01-09 20:16:38 +01:00
Emmanuel Garette
66f24bd1c0 add fullpath to make_dict 2017-01-06 21:01:24 +01:00
Emmanuel Garette
8e3a8e4279 coverage 2016-11-20 19:39:49 +01:00
Emmanuel Garette
8e7b4101f1 coverage 2016-11-20 18:02:10 +01:00
Emmanuel Garette
4d02254234 returns_raise is now mandatory in core 2016-10-14 22:20:14 +02:00
Emmanuel Garette
69de44bbb4 better sqlalchemy integration 2016-09-30 22:45:33 +02:00
Emmanuel Garette
6d71749014 force_store_value is rebuild if needed 2016-09-22 08:27:18 +02:00
Emmanuel Garette
ef5bcbf98b user could delete informations set in config 2016-04-28 11:31:04 +02:00
Emmanuel Garette
6ef85c4974 force_permissive in cfgimpl_get_home_by_path 2016-04-07 16:14:01 +02:00
Emmanuel Garette
7460f38a88 update sqlalchemy storage for values et settings 2016-03-29 09:31:00 +02:00
Emmanuel Garette
7305cfa134 python 3.4 support 2016-03-19 21:27:37 +01:00
Emmanuel Garette
da89c1aa58 force_store_value is now used directly when configuration is loaded 2016-03-07 16:13:41 +01:00
Emmanuel Garette
8a21d49948 setattr instead of _setattr 2016-01-25 15:57:34 +01:00
Emmanuel Garette
2842abdd46 remove try/except 2016-01-06 22:37:11 +01:00
Emmanuel Garette
b521c459ee remove all try/except 2016-01-03 21:18:52 +01:00
Emmanuel Garette
cc6b4ad7c4 remove a try/except 2015-12-31 18:35:31 +01:00
Emmanuel Garette
ce162280ad simplify _setvalue 2015-12-31 18:20:36 +01:00
Emmanuel Garette
d0e2b5d8c4 remove some try/except 2015-12-30 22:32:07 +01:00
Emmanuel Garette
df233d3165 add some optimisations 2015-12-22 22:06:14 +01:00
Emmanuel Garette
59f59b0b1b add some optimisation 2015-12-14 23:37:15 +01:00
Emmanuel Garette
a521a6d322 requires could be apply to a slave and properties could be different 2015-11-29 23:03:08 +01:00
Emmanuel Garette
ab555966f7 use python-coverage to delete dead part of code 2015-11-24 10:58:19 +01:00
Emmanuel Garette
54ca54e505 separate value in slave 2015-11-19 22:25:00 +01:00
Emmanuel Garette
a0de1109f7 optimise mandatory_warnings 2015-10-29 09:03:13 +01:00
Emmanuel Garette
5ea92d3460 need new settings when create fake_config 2015-09-17 19:14:56 +02:00
Emmanuel Garette
44cd618704 remove pep8 validation errors 2015-07-24 17:54:10 +02:00
Emmanuel Garette
6cc74506fb Some optimisations 2015-05-03 09:56:03 +02:00
Emmanuel Garette
10768a6067 refactor validation 2015-04-18 22:53:45 +02:00
Emmanuel Garette
2ccf92f879 improve GroupConfig/MetaConfig
add set_value in GroupConfig
2014-12-01 21:49:50 +01:00
Emmanuel Garette
c6c331eb54 in find_firsts get option only one time 2014-11-11 11:31:23 +01:00
Emmanuel Garette
7c5b6e2db2 improve performance 2014-11-10 23:15:08 +01:00
Emmanuel Garette
f03cbeadb7 better performance in find_firsts
_is_build_cache not set in dictionary storage
2014-11-10 21:00:30 +01:00
Emmanuel Garette
4217508f3f works on sqlalchemy storage 2014-11-10 09:13:44 +01:00
Emmanuel Garette
c75867720f add force_permissive in mandatory_warnings 2014-10-26 16:39:24 +01:00
Emmanuel Garette
4310d59991 add force_permissive to config __iter__ 2014-10-26 10:26:23 +01:00
Emmanuel Garette
b64189f763 add DynOptionDescription 2014-06-19 23:22:39 +02:00
Emmanuel Garette
6d8137160c 'getattr' in optiondescription can return a bound method 2014-04-15 21:48:31 +02:00
Emmanuel Garette
5d8b5719a0 Merge branch 'master' into orm
Conflicts:
	test/test_config_api.py
	tiramisu/autolib.py
	tiramisu/config.py
	tiramisu/option.py
	tiramisu/value.py
2014-04-13 10:30:42 +02:00
Emmanuel Garette
299e51e806 start works on storage 2014-04-12 22:47:52 +02:00
Emmanuel Garette
aa0734591d change None to undefined when it's needed 2014-04-12 21:57:17 +02:00
Emmanuel Garette
3ab0688c46 Arity change, remove force_properties:
* tiramisu/config.py (in cfgimpl_get_home_by_path and getattr)
 * tiramisu/value.py (in getitem):
2014-04-12 21:37:20 +02:00
Emmanuel Garette
cd4d3527c7 split tiramisu/option.py and add MasterSlaves object 2014-04-12 17:55:13 +02:00
Emmanuel Garette
967a48412d Merge branch '_getattr' 2014-04-01 09:51:43 +02:00
Emmanuel Garette
0b2e5f90e2 same arity for _getattr and getattr 2014-04-01 09:51:25 +02:00
Emmanuel Garette
1ae6f0c6e8 Merge branch 'mandatory' 2014-04-01 09:29:34 +02:00
Emmanuel Garette
150b490200 config.mandatory_warnings return always None 2014-04-01 09:29:07 +02:00
Emmanuel Garette
a3c5e6034f Merge branch 'force_permissive'
Conflicts:
	test/test_freeze.py
2014-03-31 22:38:56 +02:00
Emmanuel Garette
cd52729952 add force_permissive in config's method (iter_all, iter_group, find, find_first and make_dict)
rename _getattr to getattr
2014-03-31 22:34:57 +02:00
Emmanuel Garette
ff5376a382 properties are check now in getowner
get_modified_values works good with force_store_value
2014-03-29 20:31:56 +01:00
Emmanuel Garette
a04a61f1a4 Merge branch 'master' into lgpl 2014-03-15 10:11:17 +01:00
Emmanuel Garette
f7d31bfa92 Merge branch 'master' into force-cache
Conflicts:
	translations/fr/tiramisu.po
	translations/tiramisu.pot
2014-03-15 10:09:19 +01:00
Emmanuel Garette
544cd93c73 can make_dict with disabled suboption 2014-03-12 14:57:36 +01:00
Emmanuel Garette
6e8b570a37 mandatory_warnings is now in values and add force_cache to values 2014-03-09 20:06:44 +01:00
Emmanuel Garette
98bd35ad36 Merge branch 'master' into orm
Conflicts:
	tiramisu/config.py
	tiramisu/option.py
2014-02-04 21:54:30 +01:00
Emmanuel Garette
a067d2cdd9 add some tests 2014-02-04 21:14:30 +01:00
Emmanuel Garette
5646fc35a2 Merge branch 'master' into orm
Conflicts:
	test/test_parsing_group.py
2014-02-03 22:11:58 +01:00
Emmanuel Garette
8d10ad4002 add tests 2014-02-02 22:47:46 +01:00
Emmanuel Garette
5897231421 Merge branch 'master' into orm
Conflicts:
	test/test_dereference.py
	test/test_state.py
	tiramisu/config.py
	tiramisu/value.py
2014-02-02 18:52:13 +01:00
Emmanuel Garette
26158fc3c4 update test for metaconfig serialization 2014-02-02 18:33:21 +01:00
Emmanuel Garette
f8faec408f Merge branch 'master' into metaconfig 2014-02-02 18:21:22 +01:00
Emmanuel Garette
8709386570 __getattr__ OD 2014-02-01 18:35:18 +01:00
Emmanuel Garette
313b03b246 cache in sql works 2014-02-01 16:26:23 +01:00
Emmanuel Garette
880b6366eb Merge branch 'master' into orm
Conflicts:
	tiramisu/setting.py
2014-01-25 16:39:32 +01:00
Emmanuel Garette
138018dfe9 if we delete all reference to a Config and we have reference to old SubConfig, Values, Multi or Settings, make a ConfigError instead of AttributError on NoneType object 2014-01-25 11:20:11 +01:00
Emmanuel Garette
3b3e5216fe cache 2014-01-25 10:15:25 +01:00
Emmanuel Garette
cde04d654a Merge branch 'master' into orm
Conflicts:
	tiramisu/setting.py
2014-01-09 20:32:17 +01:00
Emmanuel Garette
172a33f842 mandatory_warnings never raises ConfigError 2013-12-16 14:20:35 +01:00
Emmanuel Garette
64ca069a0b Merge branch 'master' into orm
Conflicts:
	test/test_config.py
	tiramisu/autolib.py
	tiramisu/option.py
	tiramisu/value.py
2013-12-12 17:50:42 +01:00
Emmanuel Garette
374c56a9c8 first version with sqlalchemy option's storage 2013-11-23 23:34:17 +01:00
gwen
384b30210c find and find_first's new argument 2013-11-04 17:15:47 +01:00
Emmanuel Garette
b606d23801 add imp_meta 2013-10-15 18:23:36 +02:00
Emmanuel Garette
feeb9842f5 serialize metaconfig/groupconfig 2013-09-30 16:22:08 +02:00
Emmanuel Garette
6b7db20716 Merge branch 'master' into metaconfig 2013-09-28 22:49:50 +02:00
Emmanuel Garette
b7f85b8559 Merge branch 'master' into lgpl 2013-09-28 18:43:46 +02:00
gwen
162ae02df8 refactor (warnings_only) 2013-09-27 09:52:18 +02:00
Emmanuel Garette
3073940ca4 can't assign to an OptionDescription 2013-09-26 22:35:12 +02:00
Emmanuel Garette
a08af2383d comment config 2013-09-23 22:55:54 +02:00
Emmanuel Garette
8a7078d3b0 gpl to lgpl 2013-09-22 22:33:09 +02:00
Emmanuel Garette
d2f101b7bb didnot getattr a second time in find if not needed 2013-09-22 21:54:07 +02:00
Emmanuel Garette
051f1c8774 tiramisu/config.py:
- find byvalue support Multi

tiramisu/value.py:
 - Multi's pop comment
2013-09-22 21:23:12 +02:00
Emmanuel Garette
c84d13a1c6 we can serialize Config now 2013-09-22 20:57:52 +02:00
Emmanuel Garette
7165f73292 add metaconfig 2013-09-17 09:02:10 +02:00
Emmanuel Garette
f8b0a53c3f cache is always a dictionary in memory 2013-09-07 10:31:39 +02:00
Emmanuel Garette
22bfbb9fa4 storage no more in setting.py, code is now in storage/__init__.py 2013-09-06 23:15:36 +02:00
Emmanuel Garette
aeeaf6ec14 impl_get_information and impl_set_information are, now, persistent in storage 2013-09-03 10:38:38 +02:00
gwen
fbf05ba5e4 python 3 compatibility
remove __eq__ and __ne__ in Option
2013-08-28 21:13:42 +02:00
Emmanuel Garette
acd27fb56c huge use of weakrefs to remove memoryleaks due to circular references 2013-08-27 11:39:32 +02:00
Emmanuel Garette
36def6533f store session in dictionary storage 2013-08-27 09:46:52 +02:00
gwen
551b9fb1e3 getting stated documentation 2013-08-26 17:14:14 +02:00
Emmanuel Garette
6b9d5aed59 add enumerate and delete method for manage storage 2013-08-25 21:57:11 +02:00
Emmanuel Garette
dcb12dac02 can change storage with set_storage, storage's name is store in storage object and storage is create with get_storage 2013-08-25 20:49:24 +02:00
Emmanuel Garette
e4c129efc5 getowner need now an option 2013-08-24 22:32:54 +02:00
Emmanuel Garette
4c27cb586d in __setattr__, name should never be object's variable name
remove context in type_ find's option
find_first_context return AttributError if no results
2013-08-24 21:26:10 +02:00
Emmanuel Garette
6708fe4522 is not config in other, __neq__ should return True 2013-08-24 18:04:19 +02:00
Emmanuel Garette
a7d784ba3e is not config in other, __neq__ should return True 2013-08-24 18:04:11 +02:00
Emmanuel Garette
196d270cc9 _calc_requirement is a set, not a tuple 2013-08-24 16:34:08 +02:00
gwen
0db7ef72a6 automatic API documentation 2013-08-23 11:16:26 +02:00
Emmanuel Garette
b6bb685ca5 key is now always path and change opt by path dictionary storage 2013-08-21 22:21:50 +02:00
Emmanuel Garette
707a215a2c pep8 2013-08-21 18:34:32 +02:00
Emmanuel Garette
0d5a447eb3 add persistent option for db 2013-08-20 22:45:11 +02:00
Emmanuel Garette
ace7f6f828 merge from master 2013-08-20 16:33:32 +02:00
gwen
564fecc261 pep 8 lines too long 2013-08-20 12:08:02 +02:00
Emmanuel Garette
e826f3d1c6 we can personalise storage easily 2013-08-20 09:47:12 +02:00
Emmanuel Garette
df7d6759cd add sqlite plugin 2013-08-19 11:01:21 +02:00
Emmanuel Garette
f6f709f83d split cache/value/setting in plugin 2013-08-14 23:06:31 +02:00
Emmanuel Garette
e9ffd96a28 update translation 2013-07-18 21:25:07 +02:00
Emmanuel Garette
e6c3104681 translation 2013-07-17 23:05:43 +02:00
Emmanuel Garette
bc054d75af translation 2013-07-17 23:02:50 +02:00
Emmanuel Garette
15ac8c2872 update french translation 2013-07-17 22:30:35 +02:00
Emmanuel Garette
c06659012b Config: __str__ raise if no str/unicode value 2013-07-03 21:56:31 +02:00
Emmanuel Garette
4b5d9b4229 __str__ method could return unicode object, force to decode in str 2013-07-01 16:49:10 +02:00
Emmanuel Garette
75f7e7ce5d callback with option in params which is in an hidden optiondescription 2013-06-26 16:26:42 +02:00
gwen
c6c422f472 docstrings and api 2013-05-23 17:51:50 +02:00
gwen
879a415e75 add docstrings 2013-05-23 14:55:52 +02:00
gwen
0e6032dd88 new api documentation 2013-05-21 18:42:56 +02:00
Emmanuel Garette
e131fdc5a5 add cfgimpl_get_children for MetaConfig and informations 2013-05-21 11:09:09 +02:00
gwen
89dca8d707 suppress get_consistencies() method 2013-05-14 17:40:42 +02:00
Emmanuel Garette
6de65859b4 * config herite from BaseInformation class
* _cfgimpl_ => _impl_
* optimpl_ => impl_
* properties/permissives are now set/frozenset
* validation raise ValueError if not valid, didn't return anything otherwise
* consistencies are now validate in setting and when deleting value
* ip/network with netmask consistency now works
* DomainnameOption now works
* if no validation, don't set cache for value
* symlinkoption: remove path (not used)
2013-05-08 18:14:42 +02:00
Emmanuel Garette
2d57ed160e work on MetaConfig 2013-05-02 11:34:57 +02:00
Emmanuel Garette
f28288fbba In make_dict check PropertyConfigError for OptionDescription
Begin work's on MetaConfig
2013-04-24 11:47:01 +02:00
Emmanuel Garette
e883e5b89e remove _setoption in SymLinkOption
objimpl_ => optimpl_
ConflictConfigError => ConflictError
add read_write/read_only/getowner in Config
2013-04-22 09:19:05 +02:00
Emmanuel Garette
682d9fe207 add option name's validation and rename Option method with objimpl_ 2013-04-20 21:58:52 +02:00
Emmanuel Garette
54fe8d0f4b cache for properties is now in get_properties and not for validate_properties 2013-04-20 11:25:14 +02:00
Emmanuel Garette
a11768ef43 remove expired cache with config.cfgimpl_reset_cache(True) 2013-04-19 22:42:33 +02:00
Emmanuel Garette
324c3d2cf6 * to "reset" a value, now you just have to delete it
config.unwrap_from_path("string").reset(config) => del(config.string)
* add cache for value/setting to 5 secds
to "reset" cache just do: config.cfgimpl_clean_cache()
* can desactivate cache by removing "expire" property
2013-04-18 20:26:40 +02:00
Emmanuel Garette
d5e1cb6576 pass force_properties to value's _setitem and remove config's setoption 2013-04-17 23:19:53 +02:00
Emmanuel Garette
80438b1495 Rename AmbigousOptionError as ConflictOptionError 2013-04-17 21:50:31 +02:00
Emmanuel Garette
3170237c8e properties validation not in setting and now launch when modify multi 2013-04-17 21:33:34 +02:00
Emmanuel Garette
656b751995 mandatory is a true property (no more MandatoryError) + tests 2013-04-16 22:44:16 +02:00
Emmanuel Garette
6097f3af84 only catch PropertiesOptionError 2013-04-16 12:04:20 +02:00
Emmanuel Garette
16801ad1b2 SubConfig: first argument must be a OD 2013-04-16 11:51:48 +02:00
Emmanuel Garette
9357b342c1 review exception 2013-04-14 12:01:32 +02:00
Emmanuel Garette
9644dd3661 add gettext support 2013-04-13 23:09:05 +02:00
Emmanuel Garette
9c2dcc164c attribute in Option now starts with '_'
add ValidateError
add consistancies in Option
remove byattr in find
2013-04-13 22:50:55 +02:00
Emmanuel Garette
26568dc45a Values validate now value 2013-04-11 11:30:58 +02:00
Emmanuel Garette
0c5ab9df18 don't launch apply_requires more than needed 2013-04-08 16:12:23 +02:00
Emmanuel Garette
67e67a5020 NoValueReturn is not needed now + apply_requires is now in settings 2013-04-08 16:05:56 +02:00
Emmanuel Garette
d8b68fa1ec suppress _cfgimpl_parent and _cfgimpl_get_path() from SubConfig 2013-04-05 16:59:48 +02:00
Emmanuel Garette
88ea962d82 tiramisu/config.py: _cfgimpl_subconfigs is not used 2013-04-05 12:31:50 +02:00
Emmanuel Garette
d100d66548 tiramisu/config.py can specify return type for find ('option', 'value', 'path') and remove get
user need replace config.get(value) by config.find(byname="value", type_='value')
2013-04-05 12:20:33 +02:00
Emmanuel Garette
c918191d21 permissives are for a specified option not config 2013-04-04 15:14:16 +02:00
Emmanuel Garette
9006dca09f set permissive to cfgimpl_get_home_by_path 2013-04-04 12:16:18 +02:00
Emmanuel Garette
e9902d8ce2 rewrite make_dict 2013-04-04 11:24:00 +02:00
Emmanuel Garette
e6f00948f3 optimisations and all is properties 2013-04-03 12:20:26 +02:00
gwen
8181d1b596 build cache builds correctly now 2013-03-27 17:01:20 +01:00
Garette Emmanuel
201f9d6db4 remise en fonction des self._cfgimpl_slots 2013-03-27 16:41:22 +01:00
Garette Emmanuel
d00153787d Le cache des paths est dans l'OptionDescription
Utilisation des slots pour la Config

Il faut 566Mo de mémoire pour charger 50 variantes de 100 serveurs chacuns (5000 serveurs en tout).

ref #5111
2013-03-27 16:17:45 +01:00
Garette Emmanuel
899f864f8d works on performante 2013-03-26 10:29:49 +01:00
Garette Emmanuel
4f3db9cbc6 support break in iterator 2013-03-25 14:21:30 +01:00
Garette Emmanuel
087f7e3a75 cfgimpl_permissive is not the permissive param 2013-03-14 17:51:51 +01:00
Garette Emmanuel
9e81ae4737 get_home_by_path is a public method 2013-03-14 16:07:26 +01:00
Garette Emmanuel
15beeda0f0 add permissive in config 2013-03-14 11:31:44 +01:00
gwen
11ad037af9 iter on all objects 2013-03-07 11:02:18 +01:00
Garette Emmanuel
9b3eb33d27 generate correct len for slave if no value 2013-03-06 17:17:33 +01:00
gwen
4660f58608 valid name accepts only str type 2013-03-06 09:22:56 +01:00
gwen
df3753c36b finally a getvalue without a getattr 2013-02-27 11:09:13 +01:00
gwen
8be48e5eba pep8 2013-02-25 16:24:30 +01:00
gwen
ea7d297c9b private method _get_multitype() 2013-02-25 15:12:09 +01:00
gwen
7b4f3b5d36 option's name shall not have an api's method name 2013-02-25 11:33:20 +01:00
gwen
8f4efe6b00 add masters/slaves in the Values() 2013-02-22 11:09:17 +01:00
gwen
e6d5d349c8 refactoring values 2013-02-21 17:07:00 +01:00
gwen
b69ecbd2eb update of the doc 2013-02-19 11:24:17 +01:00
gwen
a8e6bac87f refactoring, the values are in an OptionValues object 2013-02-08 11:50:22 +01:00
gwen
9259a6e3f7 values are in value objects now 2013-02-07 16:20:21 +01:00
gwen
a404c4c992 masters shall have the same names as groups 2013-02-06 16:21:30 +01:00
gwen
6a3b7102b5 adds a freeze_everything possibility 2013-02-06 14:59:24 +01:00
Daniel Dehennin
170698a5e3 Find breaks on "disabled" property
The exception was raised during unwrap_from_path() call.

* tiramisu/config.py (_filter_by_attrs): do not catch exception arround
  getattr().
  (_find): continue to next option if unwrap_from_path() raise
  PropertiesOptionError.

Fixes: #4728 @5m
2013-01-31 14:38:48 +01:00
Daniel Dehennin
f494bb1502 Better raise message
* tiramisu/config.py (Config._valid_len): use master and slave name and
  value.
2013-01-30 18:04:55 +01:00
gwen
e2a02c5b7a find raises an exception if no option found Fixes #4721 2013-01-28 09:55:51 +01:00
gwen
189053ad03 master subgroups that have subgroups 2013-01-11 09:46:41 +01:00
gwen
f9d6f62a70 multi defaults value addition cinematics 2013-01-10 12:03:59 +01:00
gwen
cda5d8c0bd generic owners shall live in settings 2012-12-11 11:18:53 +01:00
gwen
ca2f4487dd add owner 2012-12-10 14:38:25 +01:00
gwen
cd50cf7551 owners are *real* objects now 2012-12-10 14:10:05 +01:00
gwen
e118f07539 groupe_types are real types now 2012-12-06 18:14:57 +01:00
gwen
7574ac43aa Multi()'s and append 2012-12-05 10:54:32 +01:00
gwen
7784a82cde tests on group types 2012-12-05 09:41:53 +01:00
gwen
0db34bbeba master len without getattr 2012-12-04 16:22:39 +01:00
gwen
6538231817 pop and append in multi values 2012-12-04 15:18:13 +01:00
gwen
4393da13ab validation of the len of the multi in a group 2012-12-04 12:06:26 +01:00
gwen
d633574cc5 comparison failed 2012-12-03 15:48:04 +01:00
gwen
43af9cf7f7 getkey() and __eq__ for a SymLink 2012-11-30 15:08:34 +01:00
gwen
e0490c2bed add permissive in the requirements 2012-11-30 10:47:35 +01:00
gwen
de47772958 string representation for a symlink option 2012-11-29 10:15:30 +01:00
gwen
d9c8e06236 config's string representation 2012-11-28 10:14:16 +01:00
gwen
426e64ca39 is_default in _getattr 2012-11-22 10:19:13 +01:00
gwen
79cf82e328 doc: migrated to sphinx 2012-11-20 17:14:58 +01:00
gwen
86f9096937 settings are in a separate object 2012-11-19 10:45:03 +01:00