[PATCH PoC] hacks: the concept of python files that will be loaded and can monkeypatch Kallithea internals
Mads Kiilerich
mads at kiilerich.com
Thu Apr 23 16:28:36 EDT 2015
On 04/23/2015 10:00 PM, Thomas De Schampheleire wrote:
> On Mon, Apr 20, 2015 at 11:28 PM, Mads Kiilerich <mads at kiilerich.com> wrote:
>> # HG changeset patch
>> # User Mads Kiilerich <madski at unity3d.com>
>> # Date 1429565291 -7200
>> # Mon Apr 20 23:28:11 2015 +0200
>> # Node ID fcfd593347c8240544996f5516113595c0ff390a
>> # Parent 7e5a0c784880bf8da968710948f3aa617403bf5a
>> hacks: the concept of python files that will be loaded and can monkeypatch Kallithea internals
>>
>> diff --git a/kallithea/config/environment.py b/kallithea/config/environment.py
>> --- a/kallithea/config/environment.py
>> +++ b/kallithea/config/environment.py
>> @@ -16,6 +16,8 @@
>> """
>>
>> import os
>> +import os.path
>> +import imp
>> import logging
>> import kallithea
>> import platform
>> @@ -43,12 +45,25 @@ from kallithea.model.scm import ScmModel
>> log = logging.getLogger(__name__)
>>
>>
>> +def load_hacks():
>> + """
>> + Load hacks - python files dropped in kallithea/hacks that will monkeypatch
>> + Kallithea internals
>> + """
>> + hacksdir = os.path.dirname(__file__) + '/../hacks'
>> + if os.path.isdir(hacksdir):
>> + for f in os.listdir(hacksdir):
>> + if not f.startswith('_') and f.endswith('.py'):
>> + _m = imp.load_source('hacks.%s' % f, hacksdir + '/' + f)
>> +
>> def load_environment(global_conf, app_conf, initial=False,
>> test_env=None, test_index=None):
>> """
>> Configure the Pylons environment via the ``pylons.config``
>> object
>> """
>> + load_hacks()
>> +
>> config = PylonsConfig()
>>
>> # Pylons paths
>> diff --git a/kallithea/hacks/nogit.py b/kallithea/hacks/nogit.py
>> new file mode 100644
>> --- /dev/null
>> +++ b/kallithea/hacks/nogit.py
>> @@ -0,0 +1,5 @@
>> +"""
>> +disable adding Git repos
>> +"""
>> +import kallithea
>> +kallithea.BACKENDS.pop('git')
> I can't run such an example correctly:
>
> ..../kallithea/config/../hacks/foo.py:9: RuntimeWarning: Parent module
> 'hacks.foo' not found while handling absolute import
> import kallithea
Hmm ... not really ... but it can be avoided with
from __future__ import absolute_import
It would perhaps be better to just use an existing fullblown extension
mechanism - perhaps the one from Mercurial.
So ... this proof of concept "proved" that something conceptually simple
could add a lot of value. Now comes the details ...
/Mads
More information about the kallithea-general
mailing list