File size: 1,738 Bytes
6673018
5084ce8
 
 
 
6673018
5084ce8
6673018
 
 
 
 
 
488e61d
5084ce8
6673018
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""Patch ddsp training imports not needed for inference."""
import os
import site

site_packages = site.getsitepackages()[0]
ddsp_dir = os.path.join(site_packages, 'ddsp')

# Modules to make optional
optional_modules = [
    'tensorflow_datasets',
    'tensorflow_addons',
    'google.cloud',
    'apache_beam',
]

for root, dirs, files in os.walk(ddsp_dir):
    for fname in files:
        if not fname.endswith('.py'):
            continue
        fpath = os.path.join(root, fname)
        with open(fpath, 'r', errors='ignore') as f:
            content = f.read()

        modified = False
        for mod in optional_modules:
            # Match both "import X" and "from X import Y" style
            for pattern in [f'import {mod}', f'from {mod}']:
                lines = content.split('\n')
                new_lines = []
                i = 0
                while i < len(lines):
                    line = lines[i]
                    stripped = line.lstrip()
                    if stripped.startswith(pattern) and not stripped.startswith('try:'):
                        indent = line[:len(line) - len(stripped)]
                        new_lines.append(f'{indent}try:')
                        new_lines.append(f'{indent}    {stripped}')
                        new_lines.append(f'{indent}except (ImportError, Exception):')
                        new_lines.append(f'{indent}    pass')
                        modified = True
                    else:
                        new_lines.append(line)
                    i += 1
                content = '\n'.join(new_lines)

        if modified:
            with open(fpath, 'w') as f:
                f.write(content)
            print(f'Patched: {fpath}')

print('Done.')