moved get_all_generators to utils from tests as this is useful

This commit is contained in:
Yaroslav Klyuyev 2015-02-12 22:42:10 +02:00
parent df7edc97eb
commit a86c90b5bb
3 changed files with 45 additions and 42 deletions

View file

@ -7,3 +7,4 @@ import pynames.korean
import pynames.russian
from pynames.relations import GENDER, LANGUAGE
from pynames.utils import get_all_generators

View file

@ -1,15 +1,9 @@
# coding: utf-8
import os
import importlib
import unittest
import pynames
from pynames.relations import GENDER
from pynames.base import BaseGenerator
from pynames.from_list_generator import FromListGenerator
from pynames.from_tables_generator import FromTablesGenerator, FromCSVTablesGenerator
from pynames.utils import get_all_generators
# TODO: test forms:
@ -17,45 +11,10 @@ from pynames.from_tables_generator import FromTablesGenerator, FromCSVTablesGene
# - how many items in forms (12 for russian)
def get_all_generators():
submodules = []
root_dir = os.path.dirname(pynames.__file__)
for dirname in os.listdir(root_dir):
module_path = os.path.join(root_dir, dirname)
if not os.path.isdir(module_path):
continue
try:
module_name = 'pynames.%s' % dirname
module = importlib.import_module(module_name)
submodules.append(module)
except Exception:
continue
generators = []
for module in submodules:
for generator in module.__dict__.values():
if not isinstance(generator, type) or not issubclass(generator, BaseGenerator):
continue
if generator in (FromTablesGenerator, FromListGenerator, FromCSVTablesGenerator):
continue
generators.append(generator)
return generators
class TestGenerators(unittest.TestCase):
pass
def create_test_method(generator_class):
def test_method(self):

43
pynames/utils.py Normal file
View file

@ -0,0 +1,43 @@
# coding: utf-8
import os
import importlib
import pynames
from pynames.base import BaseGenerator
from pynames.from_list_generator import FromListGenerator
from pynames.from_tables_generator import FromTablesGenerator, FromCSVTablesGenerator
def get_all_generators():
submodules = []
root_dir = os.path.dirname(pynames.__file__)
for dirname in os.listdir(root_dir):
module_path = os.path.join(root_dir, dirname)
if not os.path.isdir(module_path):
continue
try:
module_name = 'pynames.%s' % dirname
module = importlib.import_module(module_name)
submodules.append(module)
except Exception:
continue
generators = []
for module in submodules:
for generator in module.__dict__.values():
if not isinstance(generator, type) or not issubclass(generator, BaseGenerator):
continue
if generator in (FromTablesGenerator, FromListGenerator, FromCSVTablesGenerator):
continue
generators.append(generator)
return generators