summaryrefslogtreecommitdiff
path: root/numpy/_build_utils/process_src_template.py
diff options
context:
space:
mode:
authorRalf Gommers <ralf.gommers@gmail.com>2022-11-27 14:51:32 +0100
committerGitHub <noreply@github.com>2022-11-27 14:51:32 +0100
commit3b7672ebd16982b661b8fbcabac80158662a8784 (patch)
treeafc7f0eaad71d8f54f4f03a44da407fb222e997f /numpy/_build_utils/process_src_template.py
parentd4b2d4f80060285ac085ea874aceaf9fa1bfb757 (diff)
parent4002a7d421ff10780c28a3643683af7a9754f87f (diff)
downloadnumpy-3b7672ebd16982b661b8fbcabac80158662a8784.tar.gz
Merge pull request #22663 from rgommers/build-with-meson
BLD: enable building NumPy with Meson [ci skip]
Diffstat (limited to 'numpy/_build_utils/process_src_template.py')
-rw-r--r--numpy/_build_utils/process_src_template.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/numpy/_build_utils/process_src_template.py b/numpy/_build_utils/process_src_template.py
new file mode 100644
index 000000000..4a0915e25
--- /dev/null
+++ b/numpy/_build_utils/process_src_template.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+import sys
+import os
+import argparse
+import importlib.util
+
+
+def get_processor():
+ # Convoluted because we can't import from numpy.distutils
+ # (numpy is not yet built)
+ conv_template_path = os.path.join(
+ os.path.dirname(__file__),
+ '..', 'distutils', 'conv_template.py'
+ )
+ spec = importlib.util.spec_from_file_location(
+ 'conv_template', conv_template_path
+ )
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
+ return mod.process_file
+
+
+def process_and_write_file(fromfile, outfile):
+ """Process tempita templated file and write out the result.
+
+ The template file is expected to end in `.src`
+ (e.g., `.c.src` or `.h.src`).
+ Processing `npy_somefile.c.src` generates `npy_somefile.c`.
+
+ """
+ process_file = get_processor()
+ content = process_file(fromfile)
+ with open(outfile, 'w') as f:
+ f.write(content)
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "infile",
+ type=str,
+ help="Path to the input file"
+ )
+ parser.add_argument(
+ "-o",
+ "--outfile",
+ type=str,
+ help="Path to the output file"
+ )
+ parser.add_argument(
+ "-i",
+ "--ignore",
+ type=str,
+ help="An ignored input - may be useful to add a "
+ "dependency between custom targets",
+ )
+ args = parser.parse_args()
+
+ if not args.infile.endswith('.src'):
+ raise ValueError(f"Unexpected extension: {args.infile}")
+
+ outfile_abs = os.path.join(os.getcwd(), args.outfile)
+ process_and_write_file(args.infile, outfile_abs)
+
+
+if __name__ == "__main__":
+ main()