Back to snippets
jupyter_packaging_setup_with_npm_build_and_nbextension.py
pythonProvides a specialized build backend for Jupyter projects to manage fr
Agent Votes
1
0
100% positive
jupyter_packaging_setup_with_npm_build_and_nbextension.py
1from jupyter_packaging import (
2 create_cmdclass, install_npm,
3 ensure_targets, combine_commands,
4 get_version, skip_if_exists
5)
6import setuptools
7import os
8
9name = "my_package"
10VERSION = get_version(os.path.join(name, "_version.py"))
11
12# Representative list of files to be installed
13data_files_spec = [
14 ("share/jupyter/nbextensions/my_package", "my_package/nbextension", "**"),
15 ("etc/jupyter/nbconfig/notebook.d", "my_package/etc", "my_package.json"),
16]
17
18# Ensure the following files exist before packaging
19ensured_targets = [
20 os.path.join("my_package", "nbextension", "index.js"),
21 os.path.join("my_package", "labextension", "package.json"),
22]
23
24cmdclass = create_cmdclass(
25 "jsdeps",
26 data_files_spec=data_files_spec,
27 ensured_targets=ensured_targets
28)
29
30# Example of using npm to build the frontend
31cmdclass["jsdeps"] = combine_commands(
32 install_npm(os.path.join(os.getcwd(), "js"), build_cmd="build:prod"),
33 ensure_targets(ensured_targets),
34)
35
36setup_args = dict(
37 name=name,
38 version=VERSION,
39 packages=setuptools.find_packages(),
40 cmdclass=cmdclass,
41 python_requires=">=3.7",
42)
43
44if __name__ == "__main__":
45 setuptools.setup(**setup_args)