setup.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3. # Copyright (c) Jupyter Development Team.
  4. # Distributed under the terms of the Modified BSD License.
  5. from os.path import join as pjoin
  6. import json
  7. import os
  8. import os.path as osp
  9. import sys
  10. from setuptools import setup
  11. NAME = "jupyterlab"
  12. HERE = osp.dirname(osp.abspath(__file__))
  13. ensured_targets = [
  14. 'static/package.json',
  15. 'schemas/@jupyterlab/shortcuts-extension/shortcuts.json',
  16. 'themes/@jupyterlab/theme-light-extension/index.css'
  17. ]
  18. ensured_targets = [osp.join(HERE, NAME, t) for t in ensured_targets]
  19. data_files_spec = [
  20. ('share/jupyter/lab/static', f'{NAME}/static', '**'),
  21. ('share/jupyter/lab/schemas', f'{NAME}/schemas', '**'),
  22. ('share/jupyter/lab/themes', f'{NAME}/themes', '**'),
  23. ('etc/jupyter/jupyter_server_config.d',
  24. 'jupyter-config/jupyter_server_config.d', f'{NAME}.json'),
  25. ('etc/jupyter/jupyter_notebook_config.d',
  26. 'jupyter-config/jupyter_notebook_config.d', f'{NAME}.json'),
  27. ]
  28. def post_dist():
  29. from packaging.version import Version
  30. from jupyter_packaging import get_version
  31. target = pjoin(HERE, NAME, 'static', 'package.json')
  32. with open(target) as fid:
  33. version = json.load(fid)['jupyterlab']['version']
  34. if Version(version) != Version(get_version(f'{NAME}/_version.py')):
  35. raise ValueError('Version mismatch, please run `build:update`')
  36. try:
  37. from jupyter_packaging import wrap_installers, npm_builder, get_data_files
  38. npm = ['node', pjoin(HERE, NAME, 'staging', 'yarn.js')]
  39. # In develop mode, just run yarn
  40. builder = npm_builder(build_cmd=None, npm=npm, force=True)
  41. cmdclass = wrap_installers(post_develop=builder, post_dist=post_dist, ensured_targets=ensured_targets)
  42. setup_args = dict(
  43. cmdclass=cmdclass,
  44. data_files=get_data_files(data_files_spec)
  45. )
  46. except ImportError:
  47. setup_args = dict()
  48. if __name__ == '__main__':
  49. setup(**setup_args)