python: Add an idiomatic interface.
[gpgme.git] / lang / python / pyme / util.py
1 # Copyright (C) 2016 g10 Code GmbH
2 # Copyright (C) 2004,2008 Igor Belyi <belyi@users.sourceforge.net>
3 # Copyright (C) 2002 John Goerzen <jgoerzen@complete.org>
4 #
5 #    This library is free software; you can redistribute it and/or
6 #    modify it under the terms of the GNU Lesser General Public
7 #    License as published by the Free Software Foundation; either
8 #    version 2.1 of the License, or (at your option) any later version.
9 #
10 #    This library is distributed in the hope that it will be useful,
11 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 #    Lesser General Public License for more details.
14 #
15 #    You should have received a copy of the GNU Lesser General Public
16 #    License along with this library; if not, write to the Free Software
17 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
18
19 from . import pygpgme
20
21 def process_constants(prefix, scope):
22     """Called by the constant modules to load up the constants from the C
23     library starting with PREFIX.  Matching constants will be inserted
24     into SCOPE with PREFIX stripped from the names.  Returns the names
25     of inserted constants.
26
27     """
28     index = len(prefix)
29     constants = {identifier[index:]: getattr(pygpgme, identifier)
30                  for identifier in dir(pygpgme)
31                  if identifier.startswith(prefix)}
32     scope.update(constants)
33     return list(constants.keys())