Ajout du GUI
This commit is contained in:
103
kivy/tools/packaging/factory.py
Normal file
103
kivy/tools/packaging/factory.py
Normal file
@@ -0,0 +1,103 @@
|
||||
from __future__ import print_function
|
||||
|
||||
__all__ = ('FactoryBuild', )
|
||||
|
||||
from distutils.cmd import Command
|
||||
import fnmatch
|
||||
import os
|
||||
import kivy
|
||||
|
||||
ignore_list = (
|
||||
'kivy.lib',
|
||||
'kivy.input.providers',
|
||||
'kivy.input.postproc',
|
||||
'kivy.modules',
|
||||
'kivy.tools',
|
||||
'kivy.parser',
|
||||
'kivy.tests',
|
||||
)
|
||||
|
||||
|
||||
class FactoryBuild(Command):
|
||||
description = 'Build the factory relation file (for factory.py)'
|
||||
user_options = []
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
print('--------------------------------------------')
|
||||
print('Building factory relation file')
|
||||
print('--------------------------------------------')
|
||||
|
||||
root_dir = os.path.dirname(kivy.__file__)
|
||||
filename = os.path.join(root_dir, 'factory_registers.py')
|
||||
with open(filename, 'w') as fd:
|
||||
fd.close()
|
||||
|
||||
# ensure we don't have any thing like doc running
|
||||
symbols = []
|
||||
for root, dirnames, filenames in os.walk(root_dir):
|
||||
if not root.startswith(root_dir):
|
||||
raise Exception('Directory should start with the kivy'
|
||||
'directory')
|
||||
root = 'kivy' + root[len(root_dir):].replace(os.path.sep, '.')
|
||||
for filename in fnmatch.filter(filenames, '*.[ps][yo]'):
|
||||
module = '%s.%s' % (root, filename[:-3])
|
||||
|
||||
# check ignore list first
|
||||
ignore = False
|
||||
for ignore in ignore_list:
|
||||
if module.startswith(ignore):
|
||||
ignore = True
|
||||
break
|
||||
if ignore:
|
||||
# print('<<< ignored (ignore list)')
|
||||
continue
|
||||
|
||||
# special case, core providers
|
||||
if root.startswith('kivy.core.'):
|
||||
if not root.endswith('__init__.py'):
|
||||
# print('<<< ignored (not a __init__.py)')
|
||||
continue
|
||||
|
||||
print('>>>', module, '::', end=' ')
|
||||
|
||||
try:
|
||||
m = __import__(name=module, fromlist='.')
|
||||
except Exception as e:
|
||||
print()
|
||||
print('ERROR:', e)
|
||||
continue
|
||||
if not hasattr(m, '__all__'):
|
||||
print()
|
||||
continue
|
||||
for symbol in getattr(m, '__all__'):
|
||||
if symbol.startswith('_'):
|
||||
continue
|
||||
attr = getattr(m, symbol)
|
||||
if type(attr) not in (type, type):
|
||||
continue
|
||||
symbols.append((symbol, module))
|
||||
print(symbol, end=' ')
|
||||
print()
|
||||
|
||||
print()
|
||||
print('--------------------------------------------')
|
||||
print('Found %d symbols, generating file' % len(symbols))
|
||||
print('--------------------------------------------')
|
||||
|
||||
filename = os.path.join(root_dir, 'factory_registers.py')
|
||||
with open(filename, 'w') as fd:
|
||||
fd.write('# Auto-generated file by setup.py build_factory\n')
|
||||
fd.write('\n')
|
||||
fd.write('from kivy.factory import Factory\n')
|
||||
fd.write('\n')
|
||||
fd.write('r = Factory.register\n')
|
||||
for x in symbols:
|
||||
fd.write("r('%s', module='%s')\n" % x)
|
||||
|
||||
print('File written at', filename)
|
||||
Reference in New Issue
Block a user