Skip to content

Commit 7abe826

Browse files
committed
Improved code generation to add individual try/catch in generated_goodies.py. Fixes #4
1 parent ee98e09 commit 7abe826

File tree

3 files changed

+26
-11
lines changed

3 files changed

+26
-11
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ This project uses `setuptools_scm` to synchronise the version number. Therefore
6565
python setup.py egg_info bdist_wheel rotate -m.whl -k3
6666
```
6767

68-
You may need to install requirements for setup beforehand, using
68+
You need to [generate code](##building-from-sources--notes-on-this-projects-design-principles) before packaging.
69+
70+
You also may need to install requirements for setup beforehand, using
6971

7072
```bash
7173
pip install -r ci_tools/requirements-setup.txt

code_generation/goodies_template.mako

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,30 @@
22
# This file is generated by mini_lambda_methods_generation.py - do not modify it !
33
# ----
44
from mini_lambda.main import C, make_lambda_friendly_class, make_lambda_friendly_method
5+
from warnings import warn
56

67
% for o in import_lines:
78
${o}
89
% endfor
910

1011
% for o in to_create:
12+
try:
13+
## IMPORT
14+
${o.import_line}
1115
% if o.constant_name:
12-
${o.item_name} = C(${o.constant_name}, '${o.constant_name}')
16+
## CONSTANT
17+
${o.item_name} = C(${o.constant_name}, '${o.constant_name}')
1318
% elif o.function_name:
1419
% if o.function_name != 'Format':
15-
${o.item_name} = make_lambda_friendly_method(${o.function_name}, '${o.function_name}')
20+
## FUNCTION
21+
${o.item_name} = make_lambda_friendly_method(${o.function_name}, '${o.function_name}')
1622
% endif
1723
% else:
18-
## CLASS
19-
${o.item_name} = make_lambda_friendly_class(${o.class_name})
24+
## CLASS
25+
${o.item_name} = make_lambda_friendly_class(${o.class_name})
2026
% endif
27+
except ImportError as e:
28+
warn("Error performing '${o.import_line}': " + str(e))
2129

2230

2331
% endfor

code_generation/mini_lambda_methods_generation.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ def __str__(self):
9797
@autoclass
9898
class Goodie:
9999
def __init__(self, item_name: str, function_name: Optional[str] = None,
100-
constant_name: Optional[str] = None, class_name: Optional[str] = None):
100+
constant_name: Optional[str] = None, class_name: Optional[str] = None,
101+
import_line: Optional[str] = None):
101102
pass
102103

103104
def __str__(self):
@@ -396,19 +397,23 @@ def define_goodies() -> Tuple[List[str], List[Goodie]]:
396397
import_string = "from " + package.__name__ + " import"
397398
for item_name, item in getmembers(package):
398399
if not item_name.startswith('_'):
399-
import_string += ' ' + item_name + ','
400+
# import_string += ' ' + item_name + ','
400401
if isclass(item):
401402
new_class_name = item_name[0].upper() + item_name
402-
goodies_list.append(Goodie(item_name=new_class_name, class_name=item_name))
403+
goodies_list.append(Goodie(item_name=new_class_name, class_name=item_name,
404+
import_line=import_string + ' ' + item_name))
403405
elif callable(item):
404-
goodies_list.append(Goodie(item_name=item_name.capitalize(), function_name=item_name))
406+
goodies_list.append(Goodie(item_name=item_name.capitalize(), function_name=item_name,
407+
import_line=import_string + ' ' + item_name))
405408
else:
406409
new_item_name = item_name.capitalize()
407410
if new_item_name == item_name:
408411
new_item_name = new_item_name[0] + new_item_name
409-
goodies_list.append(Goodie(item_name=new_item_name, constant_name=item_name))
412+
goodies_list.append(Goodie(item_name=new_item_name, constant_name=item_name,
413+
import_line=import_string + ' ' + item_name))
410414

411-
import_list.append(import_string[0:-1])
415+
# we do not import anymore at the top but in each one so as to put additional try/catch around them
416+
# import_list.append(import_string[0:-1])
412417

413418
for function_name in built_in_functions:
414419
goodies_list.append(Goodie(item_name=function_name.capitalize(), function_name=function_name))

0 commit comments

Comments
 (0)