From 91b15ab1b530536e01ea95ae38c0a5c6a91d5f53 Mon Sep 17 00:00:00 2001 From: Ricocotam Date: Sat, 28 Mar 2020 19:44:58 +0100 Subject: [PATCH 1/4] minimal new helper --- bootstrap/new.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 bootstrap/new.py diff --git a/bootstrap/new.py b/bootstrap/new.py new file mode 100644 index 0000000..1db51c1 --- /dev/null +++ b/bootstrap/new.py @@ -0,0 +1,64 @@ +from pathlib import Path +from argparse import ArgumentParser + + +parser = ArgumentParser() +parser.add_argument("project_path", action="store", type=str, help="Path to new project") +parser.add_argument("project_name", type=str, help="Project name") + + +if __name__ == "__main__": + args = parser.parse_args() + path = Path(args.project_path) + + path.mkdir() + path = path / args.project_name + path.mkdir() + + Path(path / "models").mkdir() + Path(path / "models/__init__.py").touch() + Path(path / "models/networks").mkdir() + Path(path / "models/networks/__init__.py").touch() + Path(path / "models/networks/factory.py").touch() + Path(path / "models/networks/mynetwork.py").touch() + + with open(path / "models/networks/factory.py", "w") as f: + f.write(r"""from bootstrap.lib.options import Options +from bootstrap.lib.logger import Logger +from bootstrap.models.networks.data_parallel import DataParallel + +from .mynetwork import MyNetwork + + +def factory(engine): + logger = Logger() + net_opt = Options()["model"]["network"] + logger("Creating Network") + if net_opt["name"] == "mynetwork": + # You can use any param to create your network + # You just have to write them in your option file from options/ folder + net = MyNetwork(net_opt["param1"], net_opt["param2"]) + else: + raise ValueError(opt["name"]) + logger("Network was created") + + if torch.cuda.device_count() > 1: + net = DataParallel(net) + + return net +""") + + with open(path / "models/networks/mynetwork.py", "w") as f: + f.write(r"""import torch.nn as nn + + +class MyNetwork(nn.Module): + def __init__(self, *args, **kwargs): + super(MyNetwork, self).__init__() + # Assign args + + def forward(self, x): + # x is a dictionnary given by Dataset class + pred = self.net(x) + return pred # This is a tensor (or several tensors) +""") From 2a9b462972115c771190a1912d6ab4e654634372 Mon Sep 17 00:00:00 2001 From: Ricocotam Date: Sun, 29 Mar 2020 17:57:37 +0200 Subject: [PATCH 2/4] basic template, more complete example --- bootstrap/new.py | 122 +++++++++++------- bootstrap/template/__init__.py | 0 bootstrap/template/datasets/__init__.py | 0 bootstrap/template/datasets/factory.py | 42 ++++++ .../template/datasets/template_dataset.py | 23 ++++ bootstrap/template/engines/__init__.py | 0 bootstrap/template/engines/factory.py | 0 bootstrap/template/engines/myengine.py | 0 bootstrap/template/models/__init__.py | 0 .../template/models/criterions/__init__.py | 0 .../template/models/criterions/factory.py | 16 +++ .../models/criterions/template_criterion.py | 12 ++ bootstrap/template/models/metrics/__init__.py | 0 bootstrap/template/models/metrics/factory.py | 14 ++ .../models/metrics/template_metric.py | 13 ++ .../template/models/networks/__init__.py | 0 bootstrap/template/models/networks/factory.py | 22 ++++ .../models/networks/template_network.py | 12 ++ bootstrap/template/optimizers/__init__.py | 0 bootstrap/template/optimizers/factory.py | 0 bootstrap/template/optimizers/myoptimizer.py | 0 21 files changed, 227 insertions(+), 49 deletions(-) create mode 100644 bootstrap/template/__init__.py create mode 100644 bootstrap/template/datasets/__init__.py create mode 100644 bootstrap/template/datasets/factory.py create mode 100644 bootstrap/template/datasets/template_dataset.py create mode 100644 bootstrap/template/engines/__init__.py create mode 100644 bootstrap/template/engines/factory.py create mode 100644 bootstrap/template/engines/myengine.py create mode 100644 bootstrap/template/models/__init__.py create mode 100644 bootstrap/template/models/criterions/__init__.py create mode 100644 bootstrap/template/models/criterions/factory.py create mode 100644 bootstrap/template/models/criterions/template_criterion.py create mode 100644 bootstrap/template/models/metrics/__init__.py create mode 100644 bootstrap/template/models/metrics/factory.py create mode 100644 bootstrap/template/models/metrics/template_metric.py create mode 100644 bootstrap/template/models/networks/__init__.py create mode 100644 bootstrap/template/models/networks/factory.py create mode 100644 bootstrap/template/models/networks/template_network.py create mode 100644 bootstrap/template/optimizers/__init__.py create mode 100644 bootstrap/template/optimizers/factory.py create mode 100644 bootstrap/template/optimizers/myoptimizer.py diff --git a/bootstrap/new.py b/bootstrap/new.py index 1db51c1..933aace 100644 --- a/bootstrap/new.py +++ b/bootstrap/new.py @@ -1,64 +1,88 @@ +import os from pathlib import Path from argparse import ArgumentParser +file_dir = Path(__file__).parent + + parser = ArgumentParser() -parser.add_argument("project_path", action="store", type=str, help="Path to new project") -parser.add_argument("project_name", type=str, help="Project name") +parser.add_argument("--project_name", type=str, help="Project name") + + +def get_template_file(filename, project_name): + parts = list(filename.parts) + project_index = parts.index(project_name.lower()) + if parts[-1] not in ["__init__.py", "factory.py"]: + parts[-1] = "template_" + parts[-1][2:] # remove "my" + template_path = "/".join(parts[project_index + 1:]) + template_path = file_dir / Path("template") / template_path + + return template_path + + +def get_file_content(filename, project_name): + template = get_template_file(filename, project_name) + + content = Path(template).read_text() + content = content.replace("{PROJECT_NAME}", project_name) + content = content.replace("{PROJECT_NAME_LOWER}", project_name.lower()) + content = content.replace("{PROJECT_NAME_UPPER}", project_name.upper()) + + return content + + +def write_files(files, project_name): + for f in files: + content = get_file_content(f, project_name) + f.write_text(content) + + +def get_files(directory): + dir_name = directory.stem + if dir_name == "options": + return [directory / "abstract.yaml"] + + to_ret = [] + if dir_name != "models": + to_ret.append(directory / "__init__.py") + + to_ret.append(directory / "factory.py") + custom_file = f"my{dir_name[:-1]}.py" + to_ret.append(directory / custom_file) + + return to_ret if __name__ == "__main__": args = parser.parse_args() - path = Path(args.project_path) + project_name = args.project_name + path = Path(f"{project_name.lower()}.bootstrap.pytorch") path.mkdir() - path = path / args.project_name + os.mkdir(path / "logs") + path = Path(f"{project_name.lower()}.bootstrap.pytorch/{project_name.lower()}") path.mkdir() + print(f"Creating logs directory") + + print("Creating models directory and __init__ file") Path(path / "models").mkdir() Path(path / "models/__init__.py").touch() - Path(path / "models/networks").mkdir() - Path(path / "models/networks/__init__.py").touch() - Path(path / "models/networks/factory.py").touch() - Path(path / "models/networks/mynetwork.py").touch() - - with open(path / "models/networks/factory.py", "w") as f: - f.write(r"""from bootstrap.lib.options import Options -from bootstrap.lib.logger import Logger -from bootstrap.models.networks.data_parallel import DataParallel - -from .mynetwork import MyNetwork - - -def factory(engine): - logger = Logger() - net_opt = Options()["model"]["network"] - logger("Creating Network") - if net_opt["name"] == "mynetwork": - # You can use any param to create your network - # You just have to write them in your option file from options/ folder - net = MyNetwork(net_opt["param1"], net_opt["param2"]) - else: - raise ValueError(opt["name"]) - logger("Network was created") - - if torch.cuda.device_count() > 1: - net = DataParallel(net) - - return net -""") - - with open(path / "models/networks/mynetwork.py", "w") as f: - f.write(r"""import torch.nn as nn - - -class MyNetwork(nn.Module): - def __init__(self, *args, **kwargs): - super(MyNetwork, self).__init__() - # Assign args - - def forward(self, x): - # x is a dictionnary given by Dataset class - pred = self.net(x) - return pred # This is a tensor (or several tensors) -""") + + directories = [ + "datasets", + "models/networks", + "models/criterions", + "models/metrics", + ] + + for directory in directories: + print(f"Creating {directory} folder and associated files") + new_dir = path / directory + if directory != "models": + new_dir.mkdir() + files = get_files(new_dir) + write_files(files, project_name) + + print("Project is ready !") diff --git a/bootstrap/template/__init__.py b/bootstrap/template/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/datasets/__init__.py b/bootstrap/template/datasets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/datasets/factory.py b/bootstrap/template/datasets/factory.py new file mode 100644 index 0000000..8f86d76 --- /dev/null +++ b/bootstrap/template/datasets/factory.py @@ -0,0 +1,42 @@ +from bootstrap.lib.options import Options +from bootstrap.lib.logger import Logger + +from .mydataset import {PROJECT_NAME}Dataset + + +def factory(engine=None): + logger = Logger() + logger('Creating dataset...') + + opt = Options()["dataset"] + + dataset = {} + + if opt.get("train_split", None): + logger("Loading train data") + dataset["train"] = factory_split(opt["train_split"]) + logger(f"Train dataset length is {len(dataset['train'])}") + + if opt.get("eval_split", None): + logger("Loading test data") + dataset["eval"] = factory_split(opt["eval_split"]) + logger(f"Test dataset length is {len(dataset['eval'])}") + + logger("Dataset was created") + return dataset + + +def factory_split(split): + opt = Options()["dataset"] + + shuffle = ("train" in split) + + dataset = {PROJECT_NAME}Dataset( + dir_data=opt["dir"], + split=split, + batch_size=opt["batch_size"], + shuffle=shuffle, + nb_threads=opt["nb_threads"] + ) + + return dataset diff --git a/bootstrap/template/datasets/template_dataset.py b/bootstrap/template/datasets/template_dataset.py new file mode 100644 index 0000000..3a3d641 --- /dev/null +++ b/bootstrap/template/datasets/template_dataset.py @@ -0,0 +1,23 @@ +from bootstrap.datasets.dataset import Dataset + + +class {PROJECT_NAME}Dataset(Dataset): + """ Dataset of Wikipedia Comparable Article + + Parameters + ----------- + """ + def __init__(self, + dir_data, + split='train', + batch_size=4, + shuffle=False, + pin_memory=False, + nb_threads=4): + super({PROJECT_NAME}Dataset, self).__init__(dir_data, split, batch_size, shuffle, pin_memory, nb_threads) + + def __len__(self): + raise NotImplementedError + + def __getitem__(self, i): + raise NotImplementedError diff --git a/bootstrap/template/engines/__init__.py b/bootstrap/template/engines/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/engines/factory.py b/bootstrap/template/engines/factory.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/engines/myengine.py b/bootstrap/template/engines/myengine.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/models/__init__.py b/bootstrap/template/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/models/criterions/__init__.py b/bootstrap/template/models/criterions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/models/criterions/factory.py b/bootstrap/template/models/criterions/factory.py new file mode 100644 index 0000000..f4560b9 --- /dev/null +++ b/bootstrap/template/models/criterions/factory.py @@ -0,0 +1,16 @@ +from bootstrap.lib.options import Options +from bootstrap.lib.logger import Logger + +from .mycriterion import {PROJECT_NAME}Criterion + + +def factory(engine=None, mode=None): + logger = Logger() + logger('Creating criterion for {} mode...'.format(mode)) + + if Options()['model']['criterion'].get('import', False): + criterion = {PROJECT_NAME}Criterion() + else: + raise ValueError() + + return criterion diff --git a/bootstrap/template/models/criterions/template_criterion.py b/bootstrap/template/models/criterions/template_criterion.py new file mode 100644 index 0000000..e331f35 --- /dev/null +++ b/bootstrap/template/models/criterions/template_criterion.py @@ -0,0 +1,12 @@ +import torch.nn as nn + + +class {PROJECT_NAME}Criterion(nn.Module): + + def __init__(self): + super({PROJECT_NAME}Criterion, self).__init__() + + def forward(self, net_out, batch): + # net_out : output of network + # batch : output of dataset (after collate function) + raise NotImplementedError diff --git a/bootstrap/template/models/metrics/__init__.py b/bootstrap/template/models/metrics/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/models/metrics/factory.py b/bootstrap/template/models/metrics/factory.py new file mode 100644 index 0000000..f78cb52 --- /dev/null +++ b/bootstrap/template/models/metrics/factory.py @@ -0,0 +1,14 @@ +from bootstrap.lib.options import Options + +from .mymetric import {PROJECT_NAME}Metric + + +def factory(engine=None, mode="train"): + opt = Options()['model.metric'] + + if opt['name'] == '{PROJECT_NAME_LOWER}metric': + metric = {PROJECT_NAME_LOWER}metric() + else: + raise ValueError(opt['name']) + + return metric diff --git a/bootstrap/template/models/metrics/template_metric.py b/bootstrap/template/models/metrics/template_metric.py new file mode 100644 index 0000000..b6fd58a --- /dev/null +++ b/bootstrap/template/models/metrics/template_metric.py @@ -0,0 +1,13 @@ +import torch.nn as nn +from bootstrap.lib.logger import Logger + + +class {PROJECT_NAME}Metric(nn.Module): + def __init__(self): + super(Accuracy, self).__init__() + + def forward(self, crit_out, net_out, batch): + # crit_out : output of criterion (dictionnary) + # net_out : output of network + # batch : output of dataset (after collate function) + raise NotImplementedError diff --git a/bootstrap/template/models/networks/__init__.py b/bootstrap/template/models/networks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/models/networks/factory.py b/bootstrap/template/models/networks/factory.py new file mode 100644 index 0000000..fa7e463 --- /dev/null +++ b/bootstrap/template/models/networks/factory.py @@ -0,0 +1,22 @@ +from bootstrap.lib.options import Options +from bootstrap.lib.logger import Logger +from bootstrap.models.networks.data_parallel import DataParallel + +from .mynetwork import {PROJECT_NAME}Network + + +def factory(engine): + logger = Logger() + net_opt = Options()["model"]["network"] + logger("Creating Network...") + + if net_opt["name"] == "{PROJECT_NAME_LOWER}network": + # You can use any param to create your network + # You just have to write them in your option file from options/ folder + net = {PROJECT_NAME}Network(net_opt["param1"], net_opt["param2"]) + else: + raise ValueError(opt["name"]) + logger("Network was created") + if torch.cuda.device_count() > 1: + net = DataParallel(net) + return net diff --git a/bootstrap/template/models/networks/template_network.py b/bootstrap/template/models/networks/template_network.py new file mode 100644 index 0000000..f10c7b1 --- /dev/null +++ b/bootstrap/template/models/networks/template_network.py @@ -0,0 +1,12 @@ +import torch.nn as nn + + +class {PROJECT_NAME}Network(nn.Module): + def __init__(self, *args, **kwargs): + super(MyNetwork, self).__init__() + # Assign args + + def forward(self, x): + # x is a dictionnary given by Dataset class + pred = self.net(x) + return pred # This is a tensor (or several tensors) \ No newline at end of file diff --git a/bootstrap/template/optimizers/__init__.py b/bootstrap/template/optimizers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/optimizers/factory.py b/bootstrap/template/optimizers/factory.py new file mode 100644 index 0000000..e69de29 diff --git a/bootstrap/template/optimizers/myoptimizer.py b/bootstrap/template/optimizers/myoptimizer.py new file mode 100644 index 0000000..e69de29 From 6020e0780db4f4b725051361476f39c79d0dfc7f Mon Sep 17 00:00:00 2001 From: Adrien Pouyet Date: Wed, 1 Apr 2020 23:40:52 +0200 Subject: [PATCH 3/4] right template path and manifest include of templates --- MANIFEST.in | 3 ++- bootstrap/new.py | 7 +++++-- bootstrap/template/optimizers/__init__.py | 0 .../default/project/datasets}/__init__.py | 0 .../default/project}/datasets/factory.py | 0 .../default/project}/datasets/template_dataset.py | 0 .../default/project/engines}/__init__.py | 0 .../default/project}/engines/factory.py | 0 .../default/project}/engines/myengine.py | 0 .../default/project/models}/__init__.py | 0 .../default/project/models/criterions}/__init__.py | 0 .../default/project}/models/criterions/factory.py | 0 .../project}/models/criterions/template_criterion.py | 0 .../default/project/models/metrics}/__init__.py | 0 .../default/project}/models/metrics/factory.py | 0 .../default/project}/models/metrics/template_metric.py | 0 .../default/project/models/networks}/__init__.py | 0 .../default/project}/models/networks/factory.py | 0 .../default/project}/models/networks/template_network.py | 0 .../default/project/optimizers}/__init__.py | 0 .../default/project}/optimizers/factory.py | 0 .../default/project}/optimizers/myoptimizer.py | 0 setup.py | 1 + 23 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 bootstrap/template/optimizers/__init__.py rename bootstrap/{template => templates/default/project/datasets}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/datasets/factory.py (100%) rename bootstrap/{template => templates/default/project}/datasets/template_dataset.py (100%) rename bootstrap/{template/datasets => templates/default/project/engines}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/engines/factory.py (100%) rename bootstrap/{template => templates/default/project}/engines/myengine.py (100%) rename bootstrap/{template/engines => templates/default/project/models}/__init__.py (100%) rename bootstrap/{template/models => templates/default/project/models/criterions}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/models/criterions/factory.py (100%) rename bootstrap/{template => templates/default/project}/models/criterions/template_criterion.py (100%) rename bootstrap/{template/models/criterions => templates/default/project/models/metrics}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/models/metrics/factory.py (100%) rename bootstrap/{template => templates/default/project}/models/metrics/template_metric.py (100%) rename bootstrap/{template/models/metrics => templates/default/project/models/networks}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/models/networks/factory.py (100%) rename bootstrap/{template => templates/default/project}/models/networks/template_network.py (100%) rename bootstrap/{template/models/networks => templates/default/project/optimizers}/__init__.py (100%) rename bootstrap/{template => templates/default/project}/optimizers/factory.py (100%) rename bootstrap/{template => templates/default/project}/optimizers/myoptimizer.py (100%) diff --git a/MANIFEST.in b/MANIFEST.in index cd797d8..56e7a5b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,3 @@ include LICENSE.txt -include README.md \ No newline at end of file +include README.md +recursive-include bootstrap/templates *py \ No newline at end of file diff --git a/bootstrap/new.py b/bootstrap/new.py index 933aace..ad57e4f 100644 --- a/bootstrap/new.py +++ b/bootstrap/new.py @@ -60,11 +60,14 @@ def get_files(directory): path = Path(f"{project_name.lower()}.bootstrap.pytorch") path.mkdir() + + print(f"Creating logs directory") os.mkdir(path / "logs") + + print(f"Creating project directory and __init__.py file") path = Path(f"{project_name.lower()}.bootstrap.pytorch/{project_name.lower()}") path.mkdir() - - print(f"Creating logs directory") + Path(path / "__init__.py").touch() print("Creating models directory and __init__ file") Path(path / "models").mkdir() diff --git a/bootstrap/template/optimizers/__init__.py b/bootstrap/template/optimizers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/template/__init__.py b/bootstrap/templates/default/project/datasets/__init__.py similarity index 100% rename from bootstrap/template/__init__.py rename to bootstrap/templates/default/project/datasets/__init__.py diff --git a/bootstrap/template/datasets/factory.py b/bootstrap/templates/default/project/datasets/factory.py similarity index 100% rename from bootstrap/template/datasets/factory.py rename to bootstrap/templates/default/project/datasets/factory.py diff --git a/bootstrap/template/datasets/template_dataset.py b/bootstrap/templates/default/project/datasets/template_dataset.py similarity index 100% rename from bootstrap/template/datasets/template_dataset.py rename to bootstrap/templates/default/project/datasets/template_dataset.py diff --git a/bootstrap/template/datasets/__init__.py b/bootstrap/templates/default/project/engines/__init__.py similarity index 100% rename from bootstrap/template/datasets/__init__.py rename to bootstrap/templates/default/project/engines/__init__.py diff --git a/bootstrap/template/engines/factory.py b/bootstrap/templates/default/project/engines/factory.py similarity index 100% rename from bootstrap/template/engines/factory.py rename to bootstrap/templates/default/project/engines/factory.py diff --git a/bootstrap/template/engines/myengine.py b/bootstrap/templates/default/project/engines/myengine.py similarity index 100% rename from bootstrap/template/engines/myengine.py rename to bootstrap/templates/default/project/engines/myengine.py diff --git a/bootstrap/template/engines/__init__.py b/bootstrap/templates/default/project/models/__init__.py similarity index 100% rename from bootstrap/template/engines/__init__.py rename to bootstrap/templates/default/project/models/__init__.py diff --git a/bootstrap/template/models/__init__.py b/bootstrap/templates/default/project/models/criterions/__init__.py similarity index 100% rename from bootstrap/template/models/__init__.py rename to bootstrap/templates/default/project/models/criterions/__init__.py diff --git a/bootstrap/template/models/criterions/factory.py b/bootstrap/templates/default/project/models/criterions/factory.py similarity index 100% rename from bootstrap/template/models/criterions/factory.py rename to bootstrap/templates/default/project/models/criterions/factory.py diff --git a/bootstrap/template/models/criterions/template_criterion.py b/bootstrap/templates/default/project/models/criterions/template_criterion.py similarity index 100% rename from bootstrap/template/models/criterions/template_criterion.py rename to bootstrap/templates/default/project/models/criterions/template_criterion.py diff --git a/bootstrap/template/models/criterions/__init__.py b/bootstrap/templates/default/project/models/metrics/__init__.py similarity index 100% rename from bootstrap/template/models/criterions/__init__.py rename to bootstrap/templates/default/project/models/metrics/__init__.py diff --git a/bootstrap/template/models/metrics/factory.py b/bootstrap/templates/default/project/models/metrics/factory.py similarity index 100% rename from bootstrap/template/models/metrics/factory.py rename to bootstrap/templates/default/project/models/metrics/factory.py diff --git a/bootstrap/template/models/metrics/template_metric.py b/bootstrap/templates/default/project/models/metrics/template_metric.py similarity index 100% rename from bootstrap/template/models/metrics/template_metric.py rename to bootstrap/templates/default/project/models/metrics/template_metric.py diff --git a/bootstrap/template/models/metrics/__init__.py b/bootstrap/templates/default/project/models/networks/__init__.py similarity index 100% rename from bootstrap/template/models/metrics/__init__.py rename to bootstrap/templates/default/project/models/networks/__init__.py diff --git a/bootstrap/template/models/networks/factory.py b/bootstrap/templates/default/project/models/networks/factory.py similarity index 100% rename from bootstrap/template/models/networks/factory.py rename to bootstrap/templates/default/project/models/networks/factory.py diff --git a/bootstrap/template/models/networks/template_network.py b/bootstrap/templates/default/project/models/networks/template_network.py similarity index 100% rename from bootstrap/template/models/networks/template_network.py rename to bootstrap/templates/default/project/models/networks/template_network.py diff --git a/bootstrap/template/models/networks/__init__.py b/bootstrap/templates/default/project/optimizers/__init__.py similarity index 100% rename from bootstrap/template/models/networks/__init__.py rename to bootstrap/templates/default/project/optimizers/__init__.py diff --git a/bootstrap/template/optimizers/factory.py b/bootstrap/templates/default/project/optimizers/factory.py similarity index 100% rename from bootstrap/template/optimizers/factory.py rename to bootstrap/templates/default/project/optimizers/factory.py diff --git a/bootstrap/template/optimizers/myoptimizer.py b/bootstrap/templates/default/project/optimizers/myoptimizer.py similarity index 100% rename from bootstrap/template/optimizers/myoptimizer.py rename to bootstrap/templates/default/project/optimizers/myoptimizer.py diff --git a/setup.py b/setup.py index b5a522b..baec16e 100644 --- a/setup.py +++ b/setup.py @@ -156,6 +156,7 @@ # package_data={ # Optional # 'sample': ['package_data.dat'], # }, + include_package_data=True, # Although 'package_data' is the preferred approach, in some case you may # need to place data files outside of your packages. See: From cd467f285c1fdc80be98968375d5cd7ee7634518 Mon Sep 17 00:00:00 2001 From: Adrien Pouyet Date: Wed, 1 Apr 2020 23:50:48 +0200 Subject: [PATCH 4/4] fix copying template content ; remove unsued files and rename template_* -> * --- bootstrap/new.py | 4 ++-- .../project/datasets/{template_dataset.py => dataset.py} | 0 bootstrap/templates/default/project/engines/__init__.py | 0 bootstrap/templates/default/project/engines/factory.py | 0 bootstrap/templates/default/project/engines/myengine.py | 0 .../models/criterions/{template_criterion.py => criterion.py} | 0 bootstrap/templates/default/project/models/metrics/factory.py | 4 ++-- .../project/models/metrics/{template_metric.py => metric.py} | 0 .../models/networks/{template_network.py => network.py} | 0 bootstrap/templates/default/project/optimizers/__init__.py | 0 bootstrap/templates/default/project/optimizers/factory.py | 0 bootstrap/templates/default/project/optimizers/myoptimizer.py | 0 12 files changed, 4 insertions(+), 4 deletions(-) rename bootstrap/templates/default/project/datasets/{template_dataset.py => dataset.py} (100%) delete mode 100644 bootstrap/templates/default/project/engines/__init__.py delete mode 100644 bootstrap/templates/default/project/engines/factory.py delete mode 100644 bootstrap/templates/default/project/engines/myengine.py rename bootstrap/templates/default/project/models/criterions/{template_criterion.py => criterion.py} (100%) rename bootstrap/templates/default/project/models/metrics/{template_metric.py => metric.py} (100%) rename bootstrap/templates/default/project/models/networks/{template_network.py => network.py} (100%) delete mode 100644 bootstrap/templates/default/project/optimizers/__init__.py delete mode 100644 bootstrap/templates/default/project/optimizers/factory.py delete mode 100644 bootstrap/templates/default/project/optimizers/myoptimizer.py diff --git a/bootstrap/new.py b/bootstrap/new.py index ad57e4f..ba37ea4 100644 --- a/bootstrap/new.py +++ b/bootstrap/new.py @@ -14,9 +14,9 @@ def get_template_file(filename, project_name): parts = list(filename.parts) project_index = parts.index(project_name.lower()) if parts[-1] not in ["__init__.py", "factory.py"]: - parts[-1] = "template_" + parts[-1][2:] # remove "my" + parts[-1] = parts[-1].replace("my", "") template_path = "/".join(parts[project_index + 1:]) - template_path = file_dir / Path("template") / template_path + template_path = file_dir / Path("templates/default/project") / template_path return template_path diff --git a/bootstrap/templates/default/project/datasets/template_dataset.py b/bootstrap/templates/default/project/datasets/dataset.py similarity index 100% rename from bootstrap/templates/default/project/datasets/template_dataset.py rename to bootstrap/templates/default/project/datasets/dataset.py diff --git a/bootstrap/templates/default/project/engines/__init__.py b/bootstrap/templates/default/project/engines/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/templates/default/project/engines/factory.py b/bootstrap/templates/default/project/engines/factory.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/templates/default/project/engines/myengine.py b/bootstrap/templates/default/project/engines/myengine.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/templates/default/project/models/criterions/template_criterion.py b/bootstrap/templates/default/project/models/criterions/criterion.py similarity index 100% rename from bootstrap/templates/default/project/models/criterions/template_criterion.py rename to bootstrap/templates/default/project/models/criterions/criterion.py diff --git a/bootstrap/templates/default/project/models/metrics/factory.py b/bootstrap/templates/default/project/models/metrics/factory.py index f78cb52..6158428 100644 --- a/bootstrap/templates/default/project/models/metrics/factory.py +++ b/bootstrap/templates/default/project/models/metrics/factory.py @@ -6,8 +6,8 @@ def factory(engine=None, mode="train"): opt = Options()['model.metric'] - if opt['name'] == '{PROJECT_NAME_LOWER}metric': - metric = {PROJECT_NAME_LOWER}metric() + if opt['name'] == '{PROJECT_NAME_LOWER}': + metric = {PROJECT_NAME_LOWER}Metric() else: raise ValueError(opt['name']) diff --git a/bootstrap/templates/default/project/models/metrics/template_metric.py b/bootstrap/templates/default/project/models/metrics/metric.py similarity index 100% rename from bootstrap/templates/default/project/models/metrics/template_metric.py rename to bootstrap/templates/default/project/models/metrics/metric.py diff --git a/bootstrap/templates/default/project/models/networks/template_network.py b/bootstrap/templates/default/project/models/networks/network.py similarity index 100% rename from bootstrap/templates/default/project/models/networks/template_network.py rename to bootstrap/templates/default/project/models/networks/network.py diff --git a/bootstrap/templates/default/project/optimizers/__init__.py b/bootstrap/templates/default/project/optimizers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/templates/default/project/optimizers/factory.py b/bootstrap/templates/default/project/optimizers/factory.py deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrap/templates/default/project/optimizers/myoptimizer.py b/bootstrap/templates/default/project/optimizers/myoptimizer.py deleted file mode 100644 index e69de29..0000000