From 11d394fd5bb9c6de5fd857043600e2c5efa1af77 Mon Sep 17 00:00:00 2001 From: Alexander Hampel Date: Wed, 10 Jun 2020 17:45:53 +0200 Subject: [PATCH] synchronize dfttools with app4triqs structure * moved the plovasp C++ code to c++/triqs_dft_tools/converters/vasp * added global header triqs_dft_tools/triqs_dft_tools.hpp * python dir based on single cmakelist file * registered C++ tests for plovasp * corrected imports for py3 tests for plovasp * corrected block order in sigma_from_file and srvo3_Gloc * exchanged ref files for sigma_from_file, srvo3_Gloc, SrVO3.ref.h5 * moved vasp converter bash scripts from dir shells to bin dir --- .clang-tidy | 2 + .dockerignore | 2 + .github/ISSUE_TEMPLATE/bug.md | 2 +- .gitignore | 2 + .travis.yml | 45 +- CMakeLists.txt | 218 +- ChangeLog.md | 1 + Dockerfile | 11 +- Jenkinsfile | 33 +- README.txt => README.md | 0 {shells => bin}/CMakeLists.txt | 4 +- shells/plovasp.bash.in => bin/plovasp.in | 0 shells/vasp_dmft.bash.in => bin/vasp_dmft.in | 0 c++/plovasp/atm/.gitignore | 5 - c++/plovasp/atm/CMakeLists.txt | 7 - c++/plovasp/atm/test/CMakeLists.txt | 13 - c++/triqs_dft_tools/CMakeLists.txt | 81 + c++/triqs_dft_tools/converters/vasp.hpp | 3 + .../converters/vasp}/__init__.py | 0 .../converters/vasp}/argsort.cpp | 0 .../converters/vasp}/argsort.hpp | 0 .../converters/vasp}/dos_tetra3d.cpp | 0 .../converters/vasp}/dos_tetra3d.hpp | 8 +- .../converters/vasp}/makefile.linux | 0 .../converters/vasp}/setup.py | 0 c++/triqs_dft_tools/triqs_dft_tools.hpp | 3 + doc/CMakeLists.txt | 83 +- doc/_templates/sideb.html | 2 +- doc/changelog.rst | 2 +- doc/conf.py.in | 32 +- doc/contents.rst | 1 + doc/install.rst | 97 +- doc/issues.rst | 7 +- .../__pycache__/autorun.cpython-38.pyc | Bin 0 -> 2990 bytes doc/sphinxext/autorun/autorun.py | 104 + doc/sphinxext/autorun/pycon.py | 34 + .../__pycache__/docscrape.cpython-38.pyc | Bin 0 -> 14820 bytes .../docscrape_sphinx.cpython-38.pyc | Bin 0 -> 4620 bytes .../__pycache__/numpydoc.cpython-38.pyc | Bin 0 -> 3426 bytes doc/sphinxext/numpydoc/apigen.py | 427 ++++ doc/sphinxext/numpydoc/docscrape.py | 497 +++++ doc/sphinxext/numpydoc/docscrape_sphinx.py | 136 ++ doc/sphinxext/numpydoc/inheritance_diagram.py | 407 ++++ .../numpydoc/ipython_console_highlighting.py | 114 ++ doc/sphinxext/numpydoc/numpydoc.py | 116 ++ doc/sphinxext/numpydoc/plot_directive.py | 773 +++++++ doc/sphinxext/triqs_example/triqs_example.py | 123 ++ doc/themes/agogo/layout.html | 92 + doc/themes/agogo/static/agogo.css_t | 519 +++++ doc/themes/agogo/theme.conf | 20 + doc/themes/triqs/layout.html | 52 + doc/themes/triqs/static/cufon-yui.js | 7 + .../triqs/static/spaceman.cufonfonts.js | 8 + doc/themes/triqs/static/triqs.css | 449 +++++ doc/themes/triqs/theme.conf | 4 + fortran/dmftproj/CMakeLists.txt | 5 +- python/CMakeLists.txt | 19 - python/converters/.gitignore | 1 - python/converters/CMakeLists.txt | 10 - python/converters/plovasp/CMakeLists.txt | 19 - python/triqs_dft_tools/CMakeLists.txt | 25 + python/{ => triqs_dft_tools}/__init__.py | 0 .../{ => triqs_dft_tools}/block_structure.py | 0 .../{ => triqs_dft_tools}/clear_h5_output.py | 0 .../converters/__init__.py | 0 .../converters/converter_tools.py | 0 .../converters/hk_converter.py | 0 .../converters/plovasp/.gitignore | 0 .../converters/plovasp/__init__.py | 0 .../converters/plovasp/atm_desc.py | 5 +- .../converters/plovasp/converter.py | 0 .../converters/plovasp/elstruct.py | 0 .../converters/plovasp/inpconf.py | 0 .../converters/plovasp/plotools.py | 0 .../converters/plovasp/proj_group.py | 0 .../converters/plovasp/proj_shell.py | 8 +- .../converters/plovasp/sc_dmft.py | 0 .../converters/plovasp/vaspio.py | 0 .../converters/vasp_converter.py | 0 .../converters/wannier90_converter.py | 0 .../converters/wien2k_converter.py | 0 python/{ => triqs_dft_tools}/sumk_dft.py | 0 .../{ => triqs_dft_tools}/sumk_dft_tools.py | 0 python/{ => triqs_dft_tools}/symmetry.py | 0 python/{ => triqs_dft_tools}/trans_basis.py | 0 .../{ => triqs_dft_tools}/update_archive.py | 0 python/{ => triqs_dft_tools}/version.py.in | 11 +- share/CMakeLists.txt | 28 + share/cmake/CMakeLists.txt | 10 + share/cmake/Modules/FindSphinx.cmake | 37 + share/cmake/extract_flags.cmake | 102 + .../triqs_dft_tools-config-version.cmake.in | 13 + share/cmake/triqs_dft_tools-config.cmake.in | 32 + share/replace_and_rename.py | 45 + {cmake => share}/sitecustomize.py | 0 share/squash_history.sh | 6 + share/triqs_dft_tools.modulefile.in | 39 + share/triqs_dft_toolsvars.sh.in | 10 + test/CMakeLists.txt | 27 +- test/c++/CMakeLists.txt | 35 + .../c++/converters/vasp}/reorder_flag.cpp | 0 .../c++/converters/vasp}/reorder_inds.cpp | 0 .../c++/converters/vasp}/testing.hpp | 0 .../c++/converters/vasp}/tet_weights.cpp | 0 .../c++/converters/vasp}/weights1.cpp | 0 test/plovasp/.gitignore | 1 - test/plovasp/converter/lunio3.out.h5_old | Bin 372392 -> 0 bytes test/plovasp/converter/runtest.sh | 1 - test/plovasp/inpconf/.gitignore | 1 - test/plovasp/inpconf/parse_shells_5.cfg~ | 18 - test/plovasp/inpconf/runtest.sh | 1 - test/plovasp/plocar_io/runtest.sh | 1 - test/plovasp/plotools/runtest.sh | 1 - test/plovasp/proj_group/projgroups.out | 1788 ----------------- test/plovasp/proj_group/runtest.sh | 1 - test/plovasp/proj_shell/runtest.sh | 1 - test/plovasp/run_all.sh | 1 - test/plovasp/vaspio/__init__.py | 0 test/plovasp/vaspio/runtest.sh | 1 - test/python/CMakeLists.txt | 19 + test/{ => python}/LaVO3-Pnma.inp | 0 test/{ => python}/LaVO3-Pnma_hr.dat | 0 test/{ => python}/SrIrO3_rot.h5 | Bin test/{ => python}/SrVO3.ctqmcout | 0 test/{ => python}/SrVO3.h5 | Bin test/{ => python}/SrVO3.oubwin | 0 test/{ => python}/SrVO3.outputs | 0 test/{ => python}/SrVO3.parproj | 0 test/{ => python}/SrVO3.pmat | 0 test/python/SrVO3.ref.h5 | Bin 0 -> 859481 bytes test/{ => python}/SrVO3.struct | 0 test/{ => python}/SrVO3.sympar | 0 test/{ => python}/SrVO3.symqmc | 0 test/{ => python}/SrVO3_Sigma.h5 | Bin .../analyse_block_structure_from_gf.py | 0 .../analyse_block_structure_from_gf.ref.h5 | Bin .../analyse_block_structure_from_gf2.py | 0 test/{ => python}/blockstructure.in.h5 | Bin test/{ => python}/blockstructure.py | 0 test/{ => python}/blockstructure.ref.h5 | Bin test/{ => python}/hk_convert.py | 0 test/{ => python}/hk_convert.ref.h5 | Bin test/{ => python}/hk_convert_hamiltonian.hk | 0 {c++ => test/python}/plovasp/.gitignore | 0 test/{ => python}/plovasp/CMakeLists.txt | 7 +- test/{ => python}/plovasp/atm/mytest.py | 0 test/{ => python}/plovasp/atm/test_atm.py | 0 .../plovasp/converter/example.cfg | 0 .../{ => python}/plovasp/converter/lunio3.cfg | 0 .../plovasp/converter/lunio3.ref.h5} | Bin .../plovasp/converter/lunio3/DOSCAR | 0 .../plovasp/converter/lunio3/IBZKPT | 0 .../plovasp/converter/lunio3/LOCPROJ | 0 .../plovasp/converter/lunio3/POSCAR | 0 .../plovasp/converter/lunio3/readme.txt | 0 .../plovasp/converter/lunio3/rot_dz2_dx2 | 0 .../converter/lunio3/test_lunio3.tar.gz | Bin test/{ => python}/plovasp/converter/mytest.py | 0 .../plovasp/converter/one_site/DOSCAR | 0 .../plovasp/converter/one_site/IBZKPT | 0 .../plovasp/converter/one_site/LOCPROJ | 0 .../plovasp/converter/one_site/POSCAR | 0 .../plovasp/converter/one_site/PROJCAR | 0 .../plovasp/converter/one_site/readme.txt | 0 .../plovasp/converter/pg_output.ref.h5} | Bin test/{ => python}/plovasp/converter/rpath.py | 0 .../plovasp/converter/test_all.py | 0 .../converter/test_converter_lunio3.py | 4 +- .../converter/test_converter_one_site.py | 2 +- .../python/plovasp/inpconf}/.gitignore | 0 .../python/plovasp/inpconf}/__init__.py | 0 .../{ => python}/plovasp/inpconf/arraytest.py | 0 test/{ => python}/plovasp/inpconf/example.cfg | 0 .../plovasp/inpconf/example_nogroup.cfg | 0 .../plovasp/inpconf/input_test_1.cfg | 0 .../plovasp/inpconf/input_test_2.cfg | 0 .../plovasp/inpconf/input_test_3.cfg | 0 .../plovasp/inpconf/input_test_4.cfg | 0 .../plovasp/inpconf/parse_groups_1.cfg | 0 .../plovasp/inpconf/parse_shells_1.cfg | 0 .../plovasp/inpconf/parse_shells_2.cfg | 0 .../plovasp/inpconf/parse_shells_3.cfg | 0 .../plovasp/inpconf/parse_shells_4.cfg | 0 .../plovasp/inpconf/parse_shells_5.cfg | 0 test/{ => python}/plovasp/inpconf/rpath.py | 0 test/{ => python}/plovasp/inpconf/test1.cfg | 0 test/{ => python}/plovasp/inpconf/test_all.py | 0 .../plovasp/inpconf/test_general.py | 4 +- .../plovasp/inpconf/test_groups.py | 4 +- .../plovasp/inpconf/test_input.py | 4 +- .../plovasp/inpconf/test_parameter_set.py | 6 +- .../plovasp/inpconf/test_shells.py | 4 +- .../plovasp/inpconf/test_special_parsers.py | 4 +- .../plovasp/inpconf/tmatrix_file.dat | 0 .../{ => python}/plovasp/plocar_io/.gitignore | 0 .../plovasp/plocar_io/PLOCAR.example | Bin .../plovasp/plocar_io/PLOCAR.example.out | 0 .../plovasp/plocar_io/PLOCAR.noprec | 0 .../plovasp/plocar_io/PLOCAR.prec8 | Bin .../plovasp/plocar_io/PLOCAR.prec8.out | 0 .../plovasp/plocar_io/PLOCAR.trunc | Bin test/{ => python}/plovasp/plocar_io/mytest.py | 0 .../plovasp/plocar_io/test_fileio.py | 0 .../plovasp/plocar_io/test_plocar_io.py | 0 test/{ => python}/plovasp/plotools/.gitignore | 0 test/{ => python}/plovasp/plotools/DOSCAR | 0 test/{ => python}/plovasp/plotools/EIGENVAL | 0 test/{ => python}/plovasp/plotools/IBZKPT | 0 test/{ => python}/plovasp/plotools/OUTCAR | 0 test/{ => python}/plovasp/plotools/PLOCAR | Bin test/{ => python}/plovasp/plotools/POSCAR | 0 .../plovasp/plotools/POSCAR.complex | 0 .../{ => python}/plovasp/plotools/example.cfg | 0 test/{ => python}/plovasp/plotools/mytest.py | 0 test/{ => python}/plovasp/plotools/rpath.py | 0 .../{ => python}/plovasp/plotools/test_all.py | 0 .../plovasp/plotools/test_consistency.py | 2 +- .../plovasp/plotools/wrong_shell.cfg | 0 .../plovasp/proj_group/.gitignore | 0 .../plovasp/proj_group}/__init__.py | 0 .../plovasp/proj_group/block_matrix.cfg | 0 .../plovasp/proj_group/example.cfg | 0 .../plovasp/proj_group/example_two_site.cfg | 0 .../plovasp/proj_group/hk.ref.h5} | Bin .../{ => python}/plovasp/proj_group/mytest.py | 0 .../plovasp/proj_group/one_site/DOSCAR | 0 .../plovasp/proj_group/one_site/EIGENVAL | 0 .../plovasp/proj_group/one_site/IBZKPT | 0 .../plovasp/proj_group/one_site/LOCPROJ | 0 .../plovasp/proj_group/one_site/POSCAR | 0 .../plovasp/proj_group/projortho.ref.h5} | Bin .../proj_group/projortho_2site.ref.h5} | Bin .../proj_group/projortho_normion.ref.h5} | Bin test/{ => python}/plovasp/proj_group/rpath.py | 0 .../plovasp/proj_group/simple.cfg | 0 .../plovasp/proj_group/simple/DOSCAR | 0 .../plovasp/proj_group/simple/IBZKPT | 0 .../plovasp/proj_group/simple/LOCPROJ | 0 .../plovasp/proj_group/simple/POSCAR | 0 .../plovasp/proj_group/test_all.py | 0 .../plovasp/proj_group/test_block_map.py | 4 +- .../plovasp/proj_group/test_one_site.py | 16 +- .../plovasp/proj_group/test_one_site_compl.py | 34 +- .../plovasp/proj_group/test_select_bands.py | 4 +- .../plovasp/proj_group/test_two_site.py | 20 +- .../plovasp/proj_group/two_site/DOSCAR | 0 .../plovasp/proj_group/two_site/IBZKPT | 0 .../plovasp/proj_group/two_site/LOCPROJ | 0 .../plovasp/proj_group/two_site/POSCAR | 0 .../plovasp/proj_shell/.gitignore | 0 .../plovasp/proj_shell}/__init__.py | 0 .../plovasp/proj_shell/densmat.out | 0 .../plovasp/proj_shell/example.cfg | 0 .../{ => python}/plovasp/proj_shell/mytest.py | 0 .../plovasp/proj_shell/one_site/DOSCAR | 0 .../plovasp/proj_shell/one_site/IBZKPT | 0 .../plovasp/proj_shell/one_site/LOCPROJ | 0 .../plovasp/proj_shell/one_site/POSCAR | 0 .../plovasp/proj_shell/one_site/PROJCAR | 0 .../plovasp/proj_shell/one_site/readme.txt | 0 .../plovasp/proj_shell/projshells.out | 0 test/{ => python}/plovasp/proj_shell/rpath.py | 0 .../plovasp/proj_shell/test_all.py | 0 .../plovasp/proj_shell/test_projshells.py | 6 +- test/{ => python}/plovasp/run_suite.py | 0 test/{ => python}/plovasp/vaspio/.gitignore | 0 .../plovasp/vaspio/DOSCAR.example | 0 .../plovasp/vaspio/EIGENVAL.example | 0 .../plovasp/vaspio/EIGENVAL.example.out | 0 .../plovasp/vaspio/EIGENVAL.wrong | 0 .../plovasp/vaspio/IBZKPT.example | 0 .../plovasp/vaspio/IBZKPT.example.out | 0 test/{ => python}/plovasp/vaspio/IBZKPT.notet | 0 .../plovasp/vaspio/IBZKPT.notet.out | 0 .../plovasp/vaspio/POSCAR.complex | 0 .../plovasp/vaspio/POSCAR.example | 0 .../plovasp/vaspio/POSCAR.example.out | 0 .../plovasp/vaspio}/__init__.py | 0 test/{ => python}/plovasp/vaspio/mytest.py | 0 test/{ => python}/plovasp/vaspio/rpath.py | 0 test/{ => python}/plovasp/vaspio/test_all.py | 0 .../plovasp/vaspio/test_doscar.py | 4 +- .../plovasp/vaspio/test_eigenval.py | 4 +- .../plovasp/vaspio/test_kpoints.py | 4 +- .../plovasp/vaspio/test_poscar.py | 4 +- test/{ => python}/sigma_from_file.py | 3 +- test/python/sigma_from_file.ref.h5 | Bin 0 -> 40320 bytes test/{ => python}/srvo3_Gloc.py | 3 +- test/python/srvo3_Gloc.ref.h5 | Bin 0 -> 193780 bytes test/{ => python}/srvo3_transp.py | 0 test/{ => python}/srvo3_transp.ref.h5 | Bin test/{ => python}/sumkdft_basic.py | 0 test/{ => python}/sumkdft_basic.ref.h5 | Bin test/{ => python}/w90_convert.py | 0 test/{ => python}/w90_convert.ref.h5 | Bin test/{ => python}/wien2k_convert.py | 0 test/{ => python}/wien2k_convert.ref.h5 | Bin test/sigma_from_file.ref.h5 | Bin 53696 -> 0 bytes test/srvo3_Gloc.ref.h5 | Bin 150944 -> 0 bytes 299 files changed, 4801 insertions(+), 2214 deletions(-) create mode 100644 .clang-tidy create mode 100644 .gitignore create mode 120000 ChangeLog.md rename README.txt => README.md (100%) rename {shells => bin}/CMakeLists.txt (80%) rename shells/plovasp.bash.in => bin/plovasp.in (100%) rename shells/vasp_dmft.bash.in => bin/vasp_dmft.in (100%) delete mode 100644 c++/plovasp/atm/.gitignore delete mode 100644 c++/plovasp/atm/CMakeLists.txt delete mode 100644 c++/plovasp/atm/test/CMakeLists.txt create mode 100644 c++/triqs_dft_tools/CMakeLists.txt create mode 100644 c++/triqs_dft_tools/converters/vasp.hpp rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/__init__.py (100%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/argsort.cpp (100%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/argsort.hpp (100%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/dos_tetra3d.cpp (100%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/dos_tetra3d.hpp (86%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/makefile.linux (100%) rename c++/{plovasp/atm => triqs_dft_tools/converters/vasp}/setup.py (100%) create mode 100644 c++/triqs_dft_tools/triqs_dft_tools.hpp create mode 100644 doc/sphinxext/autorun/__pycache__/autorun.cpython-38.pyc create mode 100644 doc/sphinxext/autorun/autorun.py create mode 100644 doc/sphinxext/autorun/pycon.py create mode 100644 doc/sphinxext/numpydoc/__pycache__/docscrape.cpython-38.pyc create mode 100644 doc/sphinxext/numpydoc/__pycache__/docscrape_sphinx.cpython-38.pyc create mode 100644 doc/sphinxext/numpydoc/__pycache__/numpydoc.cpython-38.pyc create mode 100644 doc/sphinxext/numpydoc/apigen.py create mode 100644 doc/sphinxext/numpydoc/docscrape.py create mode 100644 doc/sphinxext/numpydoc/docscrape_sphinx.py create mode 100644 doc/sphinxext/numpydoc/inheritance_diagram.py create mode 100644 doc/sphinxext/numpydoc/ipython_console_highlighting.py create mode 100644 doc/sphinxext/numpydoc/numpydoc.py create mode 100644 doc/sphinxext/numpydoc/plot_directive.py create mode 100644 doc/sphinxext/triqs_example/triqs_example.py create mode 100644 doc/themes/agogo/layout.html create mode 100644 doc/themes/agogo/static/agogo.css_t create mode 100644 doc/themes/agogo/theme.conf create mode 100644 doc/themes/triqs/layout.html create mode 100644 doc/themes/triqs/static/cufon-yui.js create mode 100644 doc/themes/triqs/static/spaceman.cufonfonts.js create mode 100644 doc/themes/triqs/static/triqs.css create mode 100644 doc/themes/triqs/theme.conf delete mode 100644 python/CMakeLists.txt delete mode 100644 python/converters/.gitignore delete mode 100644 python/converters/CMakeLists.txt delete mode 100644 python/converters/plovasp/CMakeLists.txt create mode 100644 python/triqs_dft_tools/CMakeLists.txt rename python/{ => triqs_dft_tools}/__init__.py (100%) rename python/{ => triqs_dft_tools}/block_structure.py (100%) rename python/{ => triqs_dft_tools}/clear_h5_output.py (100%) rename python/{ => triqs_dft_tools}/converters/__init__.py (100%) rename python/{ => triqs_dft_tools}/converters/converter_tools.py (100%) rename python/{ => triqs_dft_tools}/converters/hk_converter.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/.gitignore (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/__init__.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/atm_desc.py (82%) rename python/{ => triqs_dft_tools}/converters/plovasp/converter.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/elstruct.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/inpconf.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/plotools.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/proj_group.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/proj_shell.py (98%) rename python/{ => triqs_dft_tools}/converters/plovasp/sc_dmft.py (100%) rename python/{ => triqs_dft_tools}/converters/plovasp/vaspio.py (100%) rename python/{ => triqs_dft_tools}/converters/vasp_converter.py (100%) rename python/{ => triqs_dft_tools}/converters/wannier90_converter.py (100%) rename python/{ => triqs_dft_tools}/converters/wien2k_converter.py (100%) rename python/{ => triqs_dft_tools}/sumk_dft.py (100%) rename python/{ => triqs_dft_tools}/sumk_dft_tools.py (100%) rename python/{ => triqs_dft_tools}/symmetry.py (100%) rename python/{ => triqs_dft_tools}/trans_basis.py (100%) rename python/{ => triqs_dft_tools}/update_archive.py (100%) rename python/{ => triqs_dft_tools}/version.py.in (73%) create mode 100644 share/CMakeLists.txt create mode 100644 share/cmake/CMakeLists.txt create mode 100644 share/cmake/Modules/FindSphinx.cmake create mode 100644 share/cmake/extract_flags.cmake create mode 100644 share/cmake/triqs_dft_tools-config-version.cmake.in create mode 100644 share/cmake/triqs_dft_tools-config.cmake.in create mode 100755 share/replace_and_rename.py rename {cmake => share}/sitecustomize.py (100%) create mode 100755 share/squash_history.sh create mode 100644 share/triqs_dft_tools.modulefile.in create mode 100644 share/triqs_dft_toolsvars.sh.in create mode 100644 test/c++/CMakeLists.txt rename {c++/plovasp/atm/test => test/c++/converters/vasp}/reorder_flag.cpp (100%) rename {c++/plovasp/atm/test => test/c++/converters/vasp}/reorder_inds.cpp (100%) rename {c++/plovasp/atm/test => test/c++/converters/vasp}/testing.hpp (100%) rename {c++/plovasp/atm/test => test/c++/converters/vasp}/tet_weights.cpp (100%) rename {c++/plovasp/atm/test => test/c++/converters/vasp}/weights1.cpp (100%) delete mode 100644 test/plovasp/.gitignore delete mode 100644 test/plovasp/converter/lunio3.out.h5_old delete mode 100755 test/plovasp/converter/runtest.sh delete mode 100644 test/plovasp/inpconf/.gitignore delete mode 100644 test/plovasp/inpconf/parse_shells_5.cfg~ delete mode 100755 test/plovasp/inpconf/runtest.sh delete mode 100755 test/plovasp/plocar_io/runtest.sh delete mode 100755 test/plovasp/plotools/runtest.sh delete mode 100644 test/plovasp/proj_group/projgroups.out delete mode 100755 test/plovasp/proj_group/runtest.sh delete mode 100755 test/plovasp/proj_shell/runtest.sh delete mode 100755 test/plovasp/run_all.sh delete mode 100644 test/plovasp/vaspio/__init__.py delete mode 100755 test/plovasp/vaspio/runtest.sh create mode 100644 test/python/CMakeLists.txt rename test/{ => python}/LaVO3-Pnma.inp (100%) rename test/{ => python}/LaVO3-Pnma_hr.dat (100%) rename test/{ => python}/SrIrO3_rot.h5 (100%) rename test/{ => python}/SrVO3.ctqmcout (100%) rename test/{ => python}/SrVO3.h5 (100%) rename test/{ => python}/SrVO3.oubwin (100%) rename test/{ => python}/SrVO3.outputs (100%) rename test/{ => python}/SrVO3.parproj (100%) rename test/{ => python}/SrVO3.pmat (100%) create mode 100644 test/python/SrVO3.ref.h5 rename test/{ => python}/SrVO3.struct (100%) rename test/{ => python}/SrVO3.sympar (100%) rename test/{ => python}/SrVO3.symqmc (100%) rename test/{ => python}/SrVO3_Sigma.h5 (100%) rename test/{ => python}/analyse_block_structure_from_gf.py (100%) rename test/{ => python}/analyse_block_structure_from_gf.ref.h5 (100%) rename test/{ => python}/analyse_block_structure_from_gf2.py (100%) rename test/{ => python}/blockstructure.in.h5 (100%) rename test/{ => python}/blockstructure.py (100%) rename test/{ => python}/blockstructure.ref.h5 (100%) rename test/{ => python}/hk_convert.py (100%) rename test/{ => python}/hk_convert.ref.h5 (100%) rename test/{ => python}/hk_convert_hamiltonian.hk (100%) rename {c++ => test/python}/plovasp/.gitignore (100%) rename test/{ => python}/plovasp/CMakeLists.txt (52%) rename test/{ => python}/plovasp/atm/mytest.py (100%) rename test/{ => python}/plovasp/atm/test_atm.py (100%) rename test/{ => python}/plovasp/converter/example.cfg (100%) rename test/{ => python}/plovasp/converter/lunio3.cfg (100%) rename test/{plovasp/converter/lunio3.out.h5 => python/plovasp/converter/lunio3.ref.h5} (100%) rename test/{ => python}/plovasp/converter/lunio3/DOSCAR (100%) rename test/{ => python}/plovasp/converter/lunio3/IBZKPT (100%) rename test/{ => python}/plovasp/converter/lunio3/LOCPROJ (100%) rename test/{ => python}/plovasp/converter/lunio3/POSCAR (100%) rename test/{ => python}/plovasp/converter/lunio3/readme.txt (100%) rename test/{ => python}/plovasp/converter/lunio3/rot_dz2_dx2 (100%) rename test/{ => python}/plovasp/converter/lunio3/test_lunio3.tar.gz (100%) rename test/{ => python}/plovasp/converter/mytest.py (100%) rename test/{ => python}/plovasp/converter/one_site/DOSCAR (100%) rename test/{ => python}/plovasp/converter/one_site/IBZKPT (100%) rename test/{ => python}/plovasp/converter/one_site/LOCPROJ (100%) rename test/{ => python}/plovasp/converter/one_site/POSCAR (100%) rename test/{ => python}/plovasp/converter/one_site/PROJCAR (100%) rename test/{ => python}/plovasp/converter/one_site/readme.txt (100%) rename test/{plovasp/converter/pg_output.out.h5 => python/plovasp/converter/pg_output.ref.h5} (100%) rename test/{ => python}/plovasp/converter/rpath.py (100%) rename test/{ => python}/plovasp/converter/test_all.py (100%) rename test/{ => python}/plovasp/converter/test_converter_lunio3.py (90%) rename test/{ => python}/plovasp/converter/test_converter_one_site.py (95%) rename {python => test/python/plovasp/inpconf}/.gitignore (100%) rename {c++/plovasp => test/python/plovasp/inpconf}/__init__.py (100%) rename test/{ => python}/plovasp/inpconf/arraytest.py (100%) rename test/{ => python}/plovasp/inpconf/example.cfg (100%) rename test/{ => python}/plovasp/inpconf/example_nogroup.cfg (100%) rename test/{ => python}/plovasp/inpconf/input_test_1.cfg (100%) rename test/{ => python}/plovasp/inpconf/input_test_2.cfg (100%) rename test/{ => python}/plovasp/inpconf/input_test_3.cfg (100%) rename test/{ => python}/plovasp/inpconf/input_test_4.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_groups_1.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_shells_1.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_shells_2.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_shells_3.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_shells_4.cfg (100%) rename test/{ => python}/plovasp/inpconf/parse_shells_5.cfg (100%) rename test/{ => python}/plovasp/inpconf/rpath.py (100%) rename test/{ => python}/plovasp/inpconf/test1.cfg (100%) rename test/{ => python}/plovasp/inpconf/test_all.py (100%) rename test/{ => python}/plovasp/inpconf/test_general.py (95%) rename test/{ => python}/plovasp/inpconf/test_groups.py (97%) rename test/{ => python}/plovasp/inpconf/test_input.py (98%) rename test/{ => python}/plovasp/inpconf/test_parameter_set.py (97%) rename test/{ => python}/plovasp/inpconf/test_shells.py (98%) rename test/{ => python}/plovasp/inpconf/test_special_parsers.py (99%) rename test/{ => python}/plovasp/inpconf/tmatrix_file.dat (100%) rename test/{ => python}/plovasp/plocar_io/.gitignore (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.example (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.example.out (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.noprec (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.prec8 (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.prec8.out (100%) rename test/{ => python}/plovasp/plocar_io/PLOCAR.trunc (100%) rename test/{ => python}/plovasp/plocar_io/mytest.py (100%) rename test/{ => python}/plovasp/plocar_io/test_fileio.py (100%) rename test/{ => python}/plovasp/plocar_io/test_plocar_io.py (100%) rename test/{ => python}/plovasp/plotools/.gitignore (100%) rename test/{ => python}/plovasp/plotools/DOSCAR (100%) rename test/{ => python}/plovasp/plotools/EIGENVAL (100%) rename test/{ => python}/plovasp/plotools/IBZKPT (100%) rename test/{ => python}/plovasp/plotools/OUTCAR (100%) rename test/{ => python}/plovasp/plotools/PLOCAR (100%) rename test/{ => python}/plovasp/plotools/POSCAR (100%) rename test/{ => python}/plovasp/plotools/POSCAR.complex (100%) rename test/{ => python}/plovasp/plotools/example.cfg (100%) rename test/{ => python}/plovasp/plotools/mytest.py (100%) rename test/{ => python}/plovasp/plotools/rpath.py (100%) rename test/{ => python}/plovasp/plotools/test_all.py (100%) rename test/{ => python}/plovasp/plotools/test_consistency.py (98%) rename test/{ => python}/plovasp/plotools/wrong_shell.cfg (100%) rename test/{ => python}/plovasp/proj_group/.gitignore (100%) rename test/{plovasp/inpconf => python/plovasp/proj_group}/__init__.py (100%) rename test/{ => python}/plovasp/proj_group/block_matrix.cfg (100%) rename test/{ => python}/plovasp/proj_group/example.cfg (100%) rename test/{ => python}/plovasp/proj_group/example_two_site.cfg (100%) rename test/{plovasp/proj_group/hk.out.h5 => python/plovasp/proj_group/hk.ref.h5} (100%) rename test/{ => python}/plovasp/proj_group/mytest.py (100%) rename test/{ => python}/plovasp/proj_group/one_site/DOSCAR (100%) rename test/{ => python}/plovasp/proj_group/one_site/EIGENVAL (100%) rename test/{ => python}/plovasp/proj_group/one_site/IBZKPT (100%) rename test/{ => python}/plovasp/proj_group/one_site/LOCPROJ (100%) rename test/{ => python}/plovasp/proj_group/one_site/POSCAR (100%) rename test/{plovasp/proj_group/projortho.out.h5 => python/plovasp/proj_group/projortho.ref.h5} (100%) rename test/{plovasp/proj_group/projortho_2site.out.h5 => python/plovasp/proj_group/projortho_2site.ref.h5} (100%) rename test/{plovasp/proj_group/projortho_normion.out.h5 => python/plovasp/proj_group/projortho_normion.ref.h5} (100%) rename test/{ => python}/plovasp/proj_group/rpath.py (100%) rename test/{ => python}/plovasp/proj_group/simple.cfg (100%) rename test/{ => python}/plovasp/proj_group/simple/DOSCAR (100%) rename test/{ => python}/plovasp/proj_group/simple/IBZKPT (100%) rename test/{ => python}/plovasp/proj_group/simple/LOCPROJ (100%) rename test/{ => python}/plovasp/proj_group/simple/POSCAR (100%) rename test/{ => python}/plovasp/proj_group/test_all.py (100%) rename test/{ => python}/plovasp/proj_group/test_block_map.py (98%) rename test/{ => python}/plovasp/proj_group/test_one_site.py (92%) rename test/{ => python}/plovasp/proj_group/test_one_site_compl.py (92%) rename test/{ => python}/plovasp/proj_group/test_select_bands.py (98%) rename test/{ => python}/plovasp/proj_group/test_two_site.py (77%) rename test/{ => python}/plovasp/proj_group/two_site/DOSCAR (100%) rename test/{ => python}/plovasp/proj_group/two_site/IBZKPT (100%) rename test/{ => python}/plovasp/proj_group/two_site/LOCPROJ (100%) rename test/{ => python}/plovasp/proj_group/two_site/POSCAR (100%) rename test/{ => python}/plovasp/proj_shell/.gitignore (100%) rename test/{plovasp/proj_group => python/plovasp/proj_shell}/__init__.py (100%) rename test/{ => python}/plovasp/proj_shell/densmat.out (100%) rename test/{ => python}/plovasp/proj_shell/example.cfg (100%) rename test/{ => python}/plovasp/proj_shell/mytest.py (100%) rename test/{ => python}/plovasp/proj_shell/one_site/DOSCAR (100%) rename test/{ => python}/plovasp/proj_shell/one_site/IBZKPT (100%) rename test/{ => python}/plovasp/proj_shell/one_site/LOCPROJ (100%) rename test/{ => python}/plovasp/proj_shell/one_site/POSCAR (100%) rename test/{ => python}/plovasp/proj_shell/one_site/PROJCAR (100%) rename test/{ => python}/plovasp/proj_shell/one_site/readme.txt (100%) rename test/{ => python}/plovasp/proj_shell/projshells.out (100%) rename test/{ => python}/plovasp/proj_shell/rpath.py (100%) rename test/{ => python}/plovasp/proj_shell/test_all.py (100%) rename test/{ => python}/plovasp/proj_shell/test_projshells.py (98%) rename test/{ => python}/plovasp/run_suite.py (100%) mode change 100644 => 100755 rename test/{ => python}/plovasp/vaspio/.gitignore (100%) rename test/{ => python}/plovasp/vaspio/DOSCAR.example (100%) rename test/{ => python}/plovasp/vaspio/EIGENVAL.example (100%) rename test/{ => python}/plovasp/vaspio/EIGENVAL.example.out (100%) rename test/{ => python}/plovasp/vaspio/EIGENVAL.wrong (100%) rename test/{ => python}/plovasp/vaspio/IBZKPT.example (100%) rename test/{ => python}/plovasp/vaspio/IBZKPT.example.out (100%) rename test/{ => python}/plovasp/vaspio/IBZKPT.notet (100%) rename test/{ => python}/plovasp/vaspio/IBZKPT.notet.out (100%) rename test/{ => python}/plovasp/vaspio/POSCAR.complex (100%) rename test/{ => python}/plovasp/vaspio/POSCAR.example (100%) rename test/{ => python}/plovasp/vaspio/POSCAR.example.out (100%) rename test/{plovasp/proj_shell => python/plovasp/vaspio}/__init__.py (100%) rename test/{ => python}/plovasp/vaspio/mytest.py (100%) rename test/{ => python}/plovasp/vaspio/rpath.py (100%) rename test/{ => python}/plovasp/vaspio/test_all.py (100%) rename test/{ => python}/plovasp/vaspio/test_doscar.py (95%) rename test/{ => python}/plovasp/vaspio/test_eigenval.py (97%) rename test/{ => python}/plovasp/vaspio/test_kpoints.py (97%) rename test/{ => python}/plovasp/vaspio/test_poscar.py (97%) rename test/{ => python}/sigma_from_file.py (93%) create mode 100644 test/python/sigma_from_file.ref.h5 rename test/{ => python}/srvo3_Gloc.py (97%) create mode 100644 test/python/srvo3_Gloc.ref.h5 rename test/{ => python}/srvo3_transp.py (100%) rename test/{ => python}/srvo3_transp.ref.h5 (100%) rename test/{ => python}/sumkdft_basic.py (100%) rename test/{ => python}/sumkdft_basic.ref.h5 (100%) rename test/{ => python}/w90_convert.py (100%) rename test/{ => python}/w90_convert.ref.h5 (100%) rename test/{ => python}/wien2k_convert.py (100%) rename test/{ => python}/wien2k_convert.ref.h5 (100%) delete mode 100644 test/sigma_from_file.ref.h5 delete mode 100644 test/srvo3_Gloc.ref.h5 diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..03368ffa --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,2 @@ +Checks: '-*,modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type' +HeaderFilterRegex: 'triqs_dft_tools' diff --git a/.dockerignore b/.dockerignore index 6e7a76a5..b627e92a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,4 @@ +.travis.yml Dockerfile Jenkinsfile +.git/objects/pack diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 79dfa304..db102d9e 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -32,7 +32,7 @@ Please provide the application version that you used. You can get this information from copy and pasting the output of ```bash -python -c "from app4triqs.version import *; show_version(); show_git_hash();" +python -c "from triqs_dft_tools.version import *; show_version(); show_git_hash();" ``` from the command line. Also, please include the OS you are running and its version. diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..226118b4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +compile_commands.json +doc/cpp2rst_generated diff --git a/.travis.yml b/.travis.yml index 1b2df662..7ffe737b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,47 +1,34 @@ language: cpp sudo: required -dist: trusty +dist: bionic compiler: - gcc - # - clang + - clang before_install: - - sudo add-apt-repository 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main' -y - - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update - - sudo apt-get install -y --allow-unauthenticated g++-7 clang-5.0 - - export LIBRARY_PATH=/usr/lib/llvm-5.0/lib:$LIBRARY_PATH - - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7 - - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 60 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 - - sudo apt-get install -y --allow-unauthenticated libboost-all-dev cmake git libgfortran3 gfortran openmpi-bin openmpi-common openmpi-doc libopenmpi-dev libblas-dev liblapack-dev libfftw3-dev libgmp-dev hdf5-tools libhdf5-serial-dev python-h5py python-dev python-numpy python-scipy python-jinja2 python-virtualenv python-matplotlib python-tornado python-zmq python-mpi4py python-mako clang-format-5.0 libclang-5.0-dev python-clang-5.0 python-sphinx libjs-mathjax valgrind libnfft3-dev + - sudo apt-get install -y --allow-unauthenticated libblas-dev libboost-all-dev libfftw3-dev libgfortran3 libhdf5-serial-dev libgmp-dev liblapack-dev libopenmpi-dev libclang-dev python-clang-6.0 python-dev python-h5py python-mako python-matplotlib python-mpi4py python-numpy python-scipy python-sphinx libjs-mathjax libnfft3-dev install: true script: - # ===== Set up Cpp2Py - - git clone https://github.com/triqs/cpp2py - - mkdir cpp2py/build && cd cpp2py/build - - git checkout master - - cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DPYTHON_INTERPRETER=/usr/bin/python -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/root_install - - make -j8 install - - cd $TRAVIS_BUILD_DIR - - source root_install/share/cpp2pyvars.sh + - export INSTALL_DIR=$HOME/root_install # We install outside the repository # ===== Set up TRIQS - - git clone https://github.com/TRIQS/triqs --branch $TRAVIS_BRANCH - - mkdir triqs/build && cd triqs/build - - cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/root_install -DCMAKE_BUILD_TYPE=Debug - - make -j8 install - cd $TRAVIS_BUILD_DIR - - source root_install/share/triqsvars.sh - # ===== Set up dft_tools and Test using fsanitize=address + - git clone https://github.com/TRIQS/triqs --branch unstable + - mkdir triqs/build && cd triqs/build + - cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR + - make -j2 install + - source $INSTALL_DIR/share/triqsvars.sh + # ===== Set up triqs_dft_tools and test + - cd $TRAVIS_BUILD_DIR - mkdir build && cd build - - cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=/usr/bin/${CXX} -DCMAKE_CXX_FLAGS='-fsanitize=address -fno-omit-frame-pointer -fuse-ld=gold' - - make -j8 - - export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm-symbolizer + - cmake .. -DASAN=ON -DUBSAN=ON + - export UBSAN_SYMBOLIZER_PATH=$(which llvm-symbolizer) + - export ASAN_SYMBOLIZER_PATH=$(which llvm-symbolizer) + - export UBSAN_OPTIONS=symbolize=1:print_stacktrace=1 - export ASAN_OPTIONS=symbolize=1:detect_leaks=0 - export CTEST_OUTPUT_ON_FAILURE=1 - - if [ "$CXX" = g++ ]; then export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/7/libasan.so; elif [ "$CXX" = clang++ ]; then export LD_PRELOAD=/usr/lib/llvm-5.0/lib/clang/5.0.1/lib/linux/libclang_rt.asan-x86_64.so; fi - - cd test && ctest + - make -j2 && make test diff --git a/CMakeLists.txt b/CMakeLists.txt index 669c61a2..dbb5f1ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,105 +1,167 @@ -# Start configuration -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) -project(triqs_dft_tools C CXX Fortran) +# ############################################################################## +# +# triqs_dft_tools - An example application using triqs and cpp2py +# +# Copyright (C) ... +# +# triqs_dft_tools is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# triqs_dft_tools is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# triqs_dft_tools (in the file COPYING.txt in this directory). If not, see +# . +# +# ############################################################################## + +cmake_minimum_required(VERSION 3.3.2 FATAL_ERROR) +cmake_policy(VERSION 3.3.2) if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) endif() +if(POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() + +# ############ +# Define Project +project(triqs_dft_tools VERSION 3.0.0 LANGUAGES C CXX Fortran) +get_directory_property(IS_SUBPROJECT PARENT_DIRECTORY) + +# ############ +# Load TRIQS and CPP2PY +find_package(TRIQS 3.0 REQUIRED) + +# Get the git hash & print status +triqs_get_git_hash_of_source_dir(PROJECT_GIT_HASH) +message(STATUS "${PROJECT_NAME} version : ${PROJECT_VERSION}") +message(STATUS "${PROJECT_NAME} Git hash: ${PROJECT_GIT_HASH}") + +# Enforce Consistent Versioning +if(NOT ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} VERSION_EQUAL ${TRIQS_VERSION_MAJOR}.${TRIQS_VERSION_MINOR}) + message(FATAL_ERROR "The ${PROJECT_NAME} version ${PROJECT_VERSION} is not compatible with TRIQS version ${TRIQS_VERSION}.") +endif() + +# Default Install directory to TRIQS_ROOT if not given or invalid. +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR (NOT IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX})) + message(STATUS "No install prefix given (or invalid). Defaulting to TRIQS_ROOT") + set(CMAKE_INSTALL_PREFIX ${TRIQS_ROOT} CACHE PATH "default install path" FORCE) + set(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT FALSE) +endif() +if(NOT IS_SUBPROJECT) + message(STATUS "-------- CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX} --------") +endif() +set(${PROJECT_NAME}_BINARY_DIR ${PROJECT_BINARY_DIR} CACHE STRING "Binary directory of the ${PROJECT_NAME} Project") + + +# ############ +# Options + +# Make additional Find Modules available +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/share/cmake/Modules) # Default to Release build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build" FORCE) endif() -message( STATUS "-------- BUILD-TYPE: ${CMAKE_BUILD_TYPE} --------") - -# Use shared libraries -set(BUILD_SHARED_LIBS ON) - -# Load TRIQS and Cpp2Py -find_package(TRIQS 2.2 REQUIRED) -find_package(Cpp2Py 1.6 REQUIRED) - -if (NOT ${TRIQS_WITH_PYTHON_SUPPORT}) - MESSAGE(FATAL_ERROR "dft_tools require Python support in TRIQS") +if(NOT IS_SUBPROJECT) + message(STATUS "-------- BUILD-TYPE: ${CMAKE_BUILD_TYPE} --------") endif() -# Default Install directory to TRIQS_ROOT if not given. Checks an absolute name is given. -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR (NOT IS_ABSOLUTE ${CMAKE_INSTALL_PREFIX})) - message(STATUS " No install prefix given (or invalid). Defaulting to TRIQS_ROOT") - set(CMAKE_INSTALL_PREFIX ${TRIQS_ROOT} CACHE PATH "default install path" FORCE) +# Python Support +option(PythonSupport "Build with Python support" ON) +if(PythonSupport AND NOT TRIQS_WITH_PYTHON_SUPPORT) + message(FATAL_ERROR "TRIQS was installed without Python support. Cannot build the Python Interface. Disable the build with -DPythonSupport=OFF") endif() -message(STATUS "-------- CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX} -------------") -# Define the dft_tools version numbers and get the git hash -set(DFT_TOOLS_VERSION_MAJOR 2) -set(DFT_TOOLS_VERSION_MINOR 2) -set(DFT_TOOLS_VERSION_PATCH 0) -set(DFT_TOOLS_VERSION ${DFT_TOOLS_VERSION_MAJOR}.${DFT_TOOLS_VERSION_MINOR}.${DFT_TOOLS_VERSION_PATCH}) -triqs_get_git_hash_of_source_dir(DFT_TOOLS_GIT_HASH) -message(STATUS "Dft_tools version : ${DFT_TOOLS_VERSION}") -message(STATUS "Git hash: ${DFT_TOOLS_GIT_HASH}") +# Documentation +option(Build_Documentation "Build documentation" OFF) +# Testing +option(Build_Tests "Build tests" ON) +if(Build_Tests) + enable_testing() +endif() + +# Export the list of compile-commands into compile_commands.json +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Global compiler options +option(BUILD_SHARED_LIBS "Enable compilation of shared libraries" OFF) +add_compile_options( + $<$:-Og> + $<$:-ggdb3> +) + +# Create an Interface target for compiler warnings +add_library(${PROJECT_NAME}_warnings INTERFACE) +target_compile_options(${PROJECT_NAME}_warnings + INTERFACE + -Wall + -Wextra + -Wpedantic + -Wno-sign-compare + $<$:-Wshadow=local> + $<$:-Wno-attributes> + $<$:-Wshadow> + $<$:-Wno-gcc-compat> + $<$:-Wshadow> + $<$:-Wno-gcc-compat> +) + +# ############# +# Build Project + +# Find / Build dependencies +add_subdirectory(deps) + +# Build and install the library +add_subdirectory(c++/${PROJECT_NAME}) + +# add here stuff for the Fortran part in DFTTools add_subdirectory(fortran/dmftproj) -# Add the compiling options (-D... ) for C++ -message(STATUS "TRIQS : Adding compilation flags detected by the library (C++11/14, libc++, etc...) ") - -add_subdirectory(c++) -add_subdirectory(python python/triqs_dft_tools) -add_subdirectory(shells) - -#------------------------ -# tests -#------------------------ - -option(TEST_COVERAGE "Analyze the coverage of tests" OFF) - -# perform tests with coverage info -if (${TEST_COVERAGE}) - # we try to locate the coverage program - find_program(PYTHON_COVERAGE python-coverage) - find_program(PYTHON_COVERAGE coverage) - if(NOT PYTHON_COVERAGE) - message(FATAL_ERROR "Program coverage (or python-coverage) not found.\nEither set PYTHON_COVERAGE explicitly or disable TEST_COVERAGE!\nYou need to install the python package coverage, e.g. with\n pip install coverage\nor with\n apt install python-coverage") - endif() - - message(STATUS "Setting up test coverage") - add_custom_target(coverage ${PYTHON_COVERAGE} combine --append .coverage plovasp/.coverage || true COMMAND ${PYTHON_COVERAGE} html COMMAND echo "Open ${CMAKE_BINARY_DIR}/test/htmlcov/index.html in browser!" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/test) +# Tests +if(Build_Tests) + add_subdirectory(test) endif() -enable_testing() - -option(Build_Tests "Build the tests of the library " ON) -if (Build_Tests) - message(STATUS "-------- Preparing tests -------------") - add_subdirectory(test) +# Python +if(PythonSupport) + add_subdirectory(python/${PROJECT_NAME}) endif() -#------------------------ -# Documentation -#------------------------ -option(Build_Documentation "Build documentation" OFF) -if(${Build_Documentation}) - if(NOT ${TRIQS_WITH_DOCUMENTATION}) - message("Error: TRIQS library has not been compiled with its documentation") - endif() +# Docs +if(Build_Documentation) add_subdirectory(doc) endif() -#-------------------------------------------------------- -# Packaging -#-------------------------------------------------------- +# dfttols vasp interface bash scripts +add_subdirectory(bin) + +# Additional configuration files +add_subdirectory(share) + +# ############# +# Debian Package + option(BUILD_DEBIAN_PACKAGE "Build a deb package" OFF) -if(BUILD_DEBIAN_PACKAGE) +if(BUILD_DEBIAN_PACKAGE AND NOT IS_SUBPROJECT) if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") message(FATAL_ERROR "CMAKE_INSTALL_PREFIX must be /usr for packaging") endif() - SET(CPACK_GENERATOR "DEB") - SET(CPACK_PACKAGE_VERSION ${DFT_TOOLS_VERSION}) - SET(CPACK_PACKAGE_CONTACT "https://github.com/TRIQS/dft_tools") - EXECUTE_PROCESS(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CMAKE_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) - SET(CPACK_DEBIAN_PACKAGE_DEPENDS "triqs (>= 2.2)") - SET(CPACK_DEBIAN_PACKAGE_CONFLICTS "dft_tools") - SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - SET(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - INCLUDE(CPack) + set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) + set(CPACK_GENERATOR "DEB") + set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) + set(CPACK_PACKAGE_CONTACT "https://github.com/TRIQS/${PROJECT_NAME}") + execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CMAKE_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CPACK_DEBIAN_PACKAGE_DEPENDS "triqs (>= 3.0)") + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + include(CPack) endif() diff --git a/ChangeLog.md b/ChangeLog.md new file mode 120000 index 00000000..9e080e26 --- /dev/null +++ b/ChangeLog.md @@ -0,0 +1 @@ +doc/ChangeLog.md \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 1d7149fb..a72f847f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,15 @@ # See ../triqs/packaging for other options -FROM flatironinstitute/triqs:master-ubuntu-clang +FROM flatironinstitute/triqs:unstable-ubuntu-clang +ARG APPNAME=triqs_dft_tools -ARG APPNAME -COPY . $SRC/$APPNAME +COPY requirements.txt /src/$APPNAME/requirements.txt +RUN pip3 install -r /src/$APPNAME/requirements.txt + +COPY --chown=build . $SRC/$APPNAME WORKDIR $BUILD/$APPNAME RUN chown build . USER build ARG BUILD_DOC=0 -RUN cmake $SRC/$APPNAME -DTRIQS_ROOT=${INSTALL} -DBuild_Documentation=${BUILD_DOC} && make -j2 && make test CTEST_OUTPUT_ON_FAILURE=1 +RUN cmake $SRC/$APPNAME -DTRIQS_ROOT=${INSTALL} -DBuild_Documentation=${BUILD_DOC} && make -j2 USER root RUN make install diff --git a/Jenkinsfile b/Jenkinsfile index 0cf7bdea..b5d89979 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,6 @@ -def projectName = "dft_tools" /* set to app/repo name */ +def projectName = "triqs_dft_tools" /* set to app/repo name */ +def dockerName = projectName.toLowerCase(); /* which platform to build documentation on */ def documentationPlatform = "ubuntu-clang" /* depend on triqs upstream branch/project */ @@ -37,7 +38,12 @@ for (int i = 0; i < dockerPlatforms.size(); i++) { mv -f Dockerfile.jenkins Dockerfile """ /* build and tag */ - def img = docker.build("flatironinstitute/${projectName}:${env.BRANCH_NAME}-${env.STAGE_NAME}", "--build-arg APPNAME=${projectName} --build-arg BUILD_DOC=${platform==documentationPlatform} .") + def img = docker.build("flatironinstitute/${dockerName}:${env.BRANCH_NAME}-${env.STAGE_NAME}", "--build-arg APPNAME=${projectName} --build-arg BUILD_DOC=${platform==documentationPlatform} .") + catchError(buildResult: 'UNSTABLE', stageResult: 'UNSTABLE') { + img.inside() { + sh "make -C \$BUILD/${projectName} test CTEST_OUTPUT_ON_FAILURE=1" + } + } if (!keepInstall) { sh "docker rmi --no-prune ${img.imageName()}" } @@ -48,7 +54,7 @@ for (int i = 0; i < dockerPlatforms.size(); i++) { /****************** osx builds (on host) */ def osxPlatforms = [ ["gcc", ['CC=gcc-9', 'CXX=g++-9', 'FC=gfortran-9']], - ["clang", ['CC=$BREW/opt/llvm/bin/clang', 'CXX=$BREW/opt/llvm/bin/clang++', 'CXXFLAGS=-I$BREW/opt/llvm/include', 'LDFLAGS=-L$BREW/opt/llvm/lib', 'FC=gfortran-9']] + ["clang", ['CC=$BREW/opt/llvm/bin/clang', 'CXX=$BREW/opt/llvm/bin/clang++', 'FC=gfortran-9', 'CXXFLAGS=-I$BREW/opt/llvm/include', 'LDFLAGS=-L$BREW/opt/llvm/lib']] ] for (int i = 0; i < osxPlatforms.size(); i++) { def platformEnv = osxPlatforms[i] @@ -72,15 +78,15 @@ for (int i = 0; i < osxPlatforms.size(); i++) { "CMAKE_PREFIX_PATH=$triqsDir/lib/cmake/triqs"]) { deleteDir() /* note: this is installing into the parent (triqs) venv (install dir), which is thus shared among apps and so not be completely safe */ - sh "pip install -r $srcDir/requirements.txt" + sh "pip3 install -r $srcDir/requirements.txt" sh "cmake $srcDir -DCMAKE_INSTALL_PREFIX=$installDir -DTRIQS_ROOT=$triqsDir" - sh "make -j3" - try { + sh "make -j2" + catchError(buildResult: 'UNSTABLE', stageResult: 'UNSTABLE') { try { sh "make test CTEST_OUTPUT_ON_FAILURE=1" } catch (exc) { archiveArtifacts(artifacts: 'Testing/Temporary/LastTest.log') throw exc - } + } } sh "make install" } } } } @@ -95,15 +101,20 @@ try { stage("publish") { timeout(time: 5, unit: 'MINUTES') { def commit = sh(returnStdout: true, script: "git rev-parse HEAD").trim() def release = env.BRANCH_NAME == "master" || env.BRANCH_NAME == "unstable" || sh(returnStdout: true, script: "git describe --exact-match HEAD || true").trim() - def workDir = pwd() + def workDir = pwd(tmp:true) lock('triqs_publish') { /* Update documention on gh-pages branch */ dir("$workDir/gh-pages") { def subdir = "${projectName}/${env.BRANCH_NAME}" git(url: "ssh://git@github.com/TRIQS/TRIQS.github.io.git", branch: "master", credentialsId: "ssh", changelog: false) sh "rm -rf ${subdir}" - docker.image("flatironinstitute/${projectName}:${env.BRANCH_NAME}-${documentationPlatform}").inside() { - sh "cp -rp \$INSTALL/share/doc/triqs_${projectName} ${subdir}" + docker.image("flatironinstitute/${dockerName}:${env.BRANCH_NAME}-${documentationPlatform}").inside() { + sh """#!/bin/bash -ex + base=\$INSTALL/share/doc + dir="${projectName}" + [[ -d \$base/triqs_\$dir ]] && dir=triqs_\$dir || [[ -d \$base/\$dir ]] + cp -rp \$base/\$dir ${subdir} + """ } sh "git add -A ${subdir}" sh """ @@ -149,7 +160,7 @@ Changes: End of build log: \${BUILD_LOG,maxLines=60} """, - to: 'mzingl@flatironinstitute.org, hstrand@flatironinstitute.org, nwentzell@flatironinstitute.org, dsimon@flatironinstitute.org', + to: 'nwentzell@flatironinstitute.org', recipientProviders: [ [$class: 'DevelopersRecipientProvider'], ], diff --git a/README.txt b/README.md similarity index 100% rename from README.txt rename to README.md diff --git a/shells/CMakeLists.txt b/bin/CMakeLists.txt similarity index 80% rename from shells/CMakeLists.txt rename to bin/CMakeLists.txt index 42e6bc38..0d5af60b 100644 --- a/shells/CMakeLists.txt +++ b/bin/CMakeLists.txt @@ -1,9 +1,9 @@ -configure_file(plovasp.bash.in plovasp) +configure_file(plovasp.in plovasp) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plovasp DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -configure_file(vasp_dmft.bash.in vasp_dmft) +configure_file(vasp_dmft.in vasp_dmft) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vasp_dmft DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/shells/plovasp.bash.in b/bin/plovasp.in similarity index 100% rename from shells/plovasp.bash.in rename to bin/plovasp.in diff --git a/shells/vasp_dmft.bash.in b/bin/vasp_dmft.in similarity index 100% rename from shells/vasp_dmft.bash.in rename to bin/vasp_dmft.in diff --git a/c++/plovasp/atm/.gitignore b/c++/plovasp/atm/.gitignore deleted file mode 100644 index 675673c3..00000000 --- a/c++/plovasp/atm/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -makefile -Makefile -*.so -*.o -*.pyc diff --git a/c++/plovasp/atm/CMakeLists.txt b/c++/plovasp/atm/CMakeLists.txt deleted file mode 100644 index afcb0176..00000000 --- a/c++/plovasp/atm/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_library(atm_c dos_tetra3d.hpp dos_tetra3d.cpp argsort.hpp argsort.cpp) -target_link_libraries(atm_c triqs) -target_compile_options(atm_c PRIVATE -std=c++17) - -install(TARGETS atm_c DESTINATION lib) - -add_subdirectory(test) diff --git a/c++/plovasp/atm/test/CMakeLists.txt b/c++/plovasp/atm/test/CMakeLists.txt deleted file mode 100644 index d592f23c..00000000 --- a/c++/plovasp/atm/test/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -enable_testing() - -FILE(GLOB TestList RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) -FOREACH( TestName1 ${TestList} ) - STRING(REPLACE ".cpp" "" TestName ${TestName1}) - add_executable( ${TestName} ${TestName}.cpp ) - target_link_libraries( ${TestName} atm_c triqs) - triqs_set_rpath_for_target( ${TestName} ) - add_test(NAME ${TestName} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${t}) -ENDFOREACH( TestName1 ${TestList} ) - - - diff --git a/c++/triqs_dft_tools/CMakeLists.txt b/c++/triqs_dft_tools/CMakeLists.txt new file mode 100644 index 00000000..e847bf2f --- /dev/null +++ b/c++/triqs_dft_tools/CMakeLists.txt @@ -0,0 +1,81 @@ +file(GLOB_RECURSE sources *.cpp) +add_library(${PROJECT_NAME}_c ${sources}) +add_library(${PROJECT_NAME}::${PROJECT_NAME}_c ALIAS ${PROJECT_NAME}_c) + +# Link against triqs and enable warnings +target_link_libraries(${PROJECT_NAME}_c PUBLIC triqs PRIVATE $) + +# Configure target and compilation +set_property(TARGET ${PROJECT_NAME}_c PROPERTY POSITION_INDEPENDENT_CODE ON) +target_include_directories(${PROJECT_NAME}_c PUBLIC $) +target_include_directories(${PROJECT_NAME}_c SYSTEM INTERFACE $) +target_compile_definitions(${PROJECT_NAME}_c PUBLIC + TRIQS_DFT_TOOLS_GIT_HASH=${PROJECT_GIT_HASH} + TRIQS_GIT_HASH=${TRIQS_GIT_HASH} + $<$:TRIQS_DFT_TOOLS_DEBUG> + $<$:TRIQS_DEBUG> + $<$:TRIQS_ARRAYS_ENFORCE_BOUNDCHECK> + ) + +# Install library and headers +install(TARGETS ${PROJECT_NAME}_c EXPORT ${PROJECT_NAME}-targets DESTINATION lib) +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h") + + +# ========= Static Analyzer Checks ========== + +option(ANALYZE_SOURCES OFF "Run static analyzer checks if found (clang-tidy, cppcheck)") +if(ANALYZE_SOURCES) + + # Locate static analyzer tools + find_program(CPPCHECK_EXECUTABLE NAMES "cppcheck" PATHS ENV PATH) + find_program(CLANG_TIDY_EXECUTABLE NAMES "clang-tidy" PATHS ENV PATH) + + # Run clang-tidy if found + if(CLANG_TIDY_EXECUTABLE) + message(STATUS "clang-tidy found: ${CLANG_TIDY_EXECUTABLE}") + set_target_properties(${PROJECT_NAME}_c PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXECUTABLE}") + else() + message(STATUS "clang-tidy not found in $PATH. Please consider installing clang-tidy for additional checks!") + endif() + + # Run cppcheck if found + if(CPPCHECK_EXECUTABLE) + message(STATUS "cppcheck found: ${CPPCHECK_EXECUTABLE}") + add_custom_command( + TARGET ${PROJECT_NAME}_c + COMMAND ${CPPCHECK_EXECUTABLE} + --enable=warning,style,performance,portability + --std=c++17 + --template=gcc + --verbose + --force + --quiet + ${sources} + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR} + ) + else() + message(STATUS "cppcheck not found in $PATH. Please consider installing cppcheck for additional checks!") + endif() + +endif() + + +# ========= Dynamic Analyzer Checks ========== + +option(ASAN OFF "Compile library and executables with LLVM Address Sanitizer") +option(UBSAN OFF "Compile library and executables with LLVM Undefined Behavior Sanitizer") + +if(ASAN) + if(NOT TARGET asan) + find_package(sanitizer REQUIRED "asan") + endif() + target_link_libraries(${PROJECT_NAME}_c PUBLIC $) +endif() +if(UBSAN) + if(NOT TARGET ubsan) + find_package(sanitizer REQUIRED "ubsan") + endif() + target_link_libraries(${PROJECT_NAME}_c PUBLIC $) +endif() diff --git a/c++/triqs_dft_tools/converters/vasp.hpp b/c++/triqs_dft_tools/converters/vasp.hpp new file mode 100644 index 00000000..0aa018d7 --- /dev/null +++ b/c++/triqs_dft_tools/converters/vasp.hpp @@ -0,0 +1,3 @@ +#pragma once +#include "./vasp/argsort.hpp" +#include "./vasp/dos_tetra3d.hpp" diff --git a/c++/plovasp/atm/__init__.py b/c++/triqs_dft_tools/converters/vasp/__init__.py similarity index 100% rename from c++/plovasp/atm/__init__.py rename to c++/triqs_dft_tools/converters/vasp/__init__.py diff --git a/c++/plovasp/atm/argsort.cpp b/c++/triqs_dft_tools/converters/vasp/argsort.cpp similarity index 100% rename from c++/plovasp/atm/argsort.cpp rename to c++/triqs_dft_tools/converters/vasp/argsort.cpp diff --git a/c++/plovasp/atm/argsort.hpp b/c++/triqs_dft_tools/converters/vasp/argsort.hpp similarity index 100% rename from c++/plovasp/atm/argsort.hpp rename to c++/triqs_dft_tools/converters/vasp/argsort.hpp diff --git a/c++/plovasp/atm/dos_tetra3d.cpp b/c++/triqs_dft_tools/converters/vasp/dos_tetra3d.cpp similarity index 100% rename from c++/plovasp/atm/dos_tetra3d.cpp rename to c++/triqs_dft_tools/converters/vasp/dos_tetra3d.cpp diff --git a/c++/plovasp/atm/dos_tetra3d.hpp b/c++/triqs_dft_tools/converters/vasp/dos_tetra3d.hpp similarity index 86% rename from c++/plovasp/atm/dos_tetra3d.hpp rename to c++/triqs_dft_tools/converters/vasp/dos_tetra3d.hpp index abdda06b..5420f9f2 100644 --- a/c++/plovasp/atm/dos_tetra3d.hpp +++ b/c++/triqs_dft_tools/converters/vasp/dos_tetra3d.hpp @@ -22,16 +22,14 @@ #include -using triqs::arrays::array; -using triqs::arrays::array_view; /// DOS of a band by analytical tetrahedron method /// /// Returns corner weights for all tetrahedra for a given band and real energy. -array -dos_tetra_weights_3d(array_view eigk, /// Band energies for each k-point +triqs::arrays::array +dos_tetra_weights_3d(triqs::arrays::array_view eigk, /// Band energies for each k-point double en, /// Energy at which DOS weights are to be calculated - array_view itt /// Tetrahedra defined by k-point indices + triqs::arrays::array_view itt /// Tetrahedra defined by k-point indices ); //array //dos_tetra_weights_3d(array eigk, /// Band energies for each k-point diff --git a/c++/plovasp/atm/makefile.linux b/c++/triqs_dft_tools/converters/vasp/makefile.linux similarity index 100% rename from c++/plovasp/atm/makefile.linux rename to c++/triqs_dft_tools/converters/vasp/makefile.linux diff --git a/c++/plovasp/atm/setup.py b/c++/triqs_dft_tools/converters/vasp/setup.py similarity index 100% rename from c++/plovasp/atm/setup.py rename to c++/triqs_dft_tools/converters/vasp/setup.py diff --git a/c++/triqs_dft_tools/triqs_dft_tools.hpp b/c++/triqs_dft_tools/triqs_dft_tools.hpp new file mode 100644 index 00000000..ee70a5dc --- /dev/null +++ b/c++/triqs_dft_tools/triqs_dft_tools.hpp @@ -0,0 +1,3 @@ +#pragma once +#include "./converters/vasp.hpp" + diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 0e137f0e..efd0c2ca 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,23 +1,80 @@ -# generate the conf.py +# Generate the sphinx config file configure_file(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY) +# ----------------------------------------------------------------------------- +# Create an optional target that allows us to regenerate the C++ doc with c++2rst +# ----------------------------------------------------------------------------- +add_custom_target(${PROJECT_NAME}_docs_cpp2rst) +include(${PROJECT_SOURCE_DIR}/share/cmake/extract_flags.cmake) +extract_flags(${PROJECT_NAME}_c BUILD_INTERFACE) +separate_arguments(${PROJECT_NAME}_c_CXXFLAGS) +macro(generate_docs header_file) + add_custom_command( + TARGET ${PROJECT_NAME}_docs_cpp2rst + COMMAND rm -rf ${CMAKE_CURRENT_SOURCE_DIR}/cpp2rst_generated + COMMAND + PYTHONPATH=${CPP2PY_BINARY_DIR}:$ENV{PYTHONPATH} + ${CPP2PY_BINARY_DIR}/bin/c++2rst + ${header_file} + -N ${PROJECT_NAME} + --output_directory ${CMAKE_CURRENT_SOURCE_DIR}/cpp2rst_generated + -I${PROJECT_SOURCE_DIR}/c++ + --cxxflags="${${PROJECT_NAME}_c_CXXFLAGS}" + ) +endmacro(generate_docs) + +generate_docs(${PROJECT_SOURCE_DIR}/c++/${PROJECT_NAME}/${PROJECT_NAME}.hpp) + +# -------------------------------------------------------- +# Build & Run the C++ doc examples and capture the output +# -------------------------------------------------------- + +add_custom_target(${PROJECT_NAME}_docs_example_output) +file(GLOB_RECURSE ExampleList RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) +foreach(example ${ExampleList}) + get_filename_component(f ${example} NAME_WE) + get_filename_component(d ${example} DIRECTORY) + add_executable(${PROJECT_NAME}_doc_${f} EXCLUDE_FROM_ALL ${example}) + set_property(TARGET ${PROJECT_NAME}_doc_${f} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${d}) + target_link_libraries(${PROJECT_NAME}_doc_${f} triqs) + add_custom_command(TARGET ${PROJECT_NAME}_doc_${f} + COMMAND ${PROJECT_NAME}_doc_${f} > ${CMAKE_CURRENT_SOURCE_DIR}/${d}/${f}.output 2>/dev/null + WORKING_DIRECTORY ${d} + ) + add_dependencies(${PROJECT_NAME}_docs_example_output ${PROJECT_NAME}_doc_${f}) +endforeach() + # --------------------------------- # Top Sphinx target # --------------------------------- -# Sources -file(GLOB_RECURSE sources *.rst) +if(NOT DEFINED SPHINXBUILD_EXECUTABLE) + find_package(Sphinx) +endif() -# create documentation target -set(sphinx_top ${CMAKE_CURRENT_BINARY_DIR}/html/index.html) -add_custom_command(OUTPUT ${sphinx_top} DEPENDS ${sources} - COMMAND ${TRIQS_SPHINXBUILD_EXECUTABLE} -c . -j8 -b html ${CMAKE_CURRENT_SOURCE_DIR} html) -add_custom_target(doc_sphinx ALL DEPENDS ${sphinx_top} ${CMAKE_CURRENT_BINARY_DIR}) +# Sphinx has internal caching, always run it +add_custom_target(${PROJECT_NAME}_docs_sphinx ALL) +add_custom_command( + TARGET ${PROJECT_NAME}_docs_sphinx + COMMAND PYTHONPATH=${PROJECT_BINARY_DIR}/python:$ENV{PYTHONPATH} ${SPHINXBUILD_EXECUTABLE} -c . -j8 -b html ${CMAKE_CURRENT_SOURCE_DIR} html +) + +option(Sphinx_Only "When building the documentation, skip the Python Modules and the generation of C++ Api and example outputs" OFF) +if(NOT Sphinx_Only) + # Autodoc usage requires the python modules to be built first + get_property(CPP2PY_MODULES_LIST GLOBAL PROPERTY CPP2PY_MODULES_LIST) + if(CPP2PY_MODULES_LIST) + add_dependencies(${PROJECT_NAME}_docs_sphinx ${CPP2PY_MODULES_LIST}) + endif() + + # Generation of C++ Api and Example Outputs + add_dependencies(${PROJECT_NAME}_docs_sphinx ${PROJECT_NAME}_docs_cpp2rst ${PROJECT_NAME}_docs_example_output) +endif() # --------------------------------- # Install # --------------------------------- -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ COMPONENT documentation DESTINATION share/doc/triqs_dft_tools - FILES_MATCHING - REGEX "\\.(html|pdf|png|gif|jpg|js|xsl|css|py|txt|inv|bib|cfg)$" - PATTERN "_*" - ) +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ COMPONENT documentation DESTINATION share/doc/${PROJECT_NAME} + FILES_MATCHING + REGEX "\\.(html|pdf|png|gif|jpg|svg|js|xsl|css|py|txt|inv|bib)$" + PATTERN "_*" +) diff --git a/doc/_templates/sideb.html b/doc/_templates/sideb.html index 24d2ffc2..563bba82 100644 --- a/doc/_templates/sideb.html +++ b/doc/_templates/sideb.html @@ -10,5 +10,5 @@


- Visit the project on GitHub + Visit the project on GitHub

diff --git a/doc/changelog.rst b/doc/changelog.rst index b1e75038..7465fef9 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -3,6 +3,6 @@ Changelog ========= -This document describes the main changes in DFTTools. +This document describes the main changes in TRIQS_DFT_TOOLS. .. include:: ChangeLog.md diff --git a/doc/conf.py.in b/doc/conf.py.in index 111490f5..46897e7f 100644 --- a/doc/conf.py.in +++ b/doc/conf.py.in @@ -3,34 +3,36 @@ # TRIQS documentation build configuration file import sys -sys.path.insert(0, "@TRIQS_SPHINXEXT_PATH@/numpydoc") +sys.path.insert(0, "@CMAKE_CURRENT_SOURCE_DIR@/sphinxext/autorun") +sys.path.insert(0, "@CMAKE_CURRENT_SOURCE_DIR@/sphinxext/numpydoc") sys.path.insert(0, "@CMAKE_BINARY_DIR@/python") extensions = ['sphinx.ext.autodoc', 'sphinx.ext.mathjax', 'sphinx.ext.intersphinx', - 'matplotlib.sphinxext.plot_directive', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.viewcode', 'sphinx.ext.autosummary', - 'nbsphinx', - 'numpydoc', 'sphinx.ext.githubpages', - 'IPython.sphinxext.ipython_console_highlighting' - ] + 'matplotlib.sphinxext.plot_directive', + 'autorun', + 'nbsphinx', + 'IPython.sphinxext.ipython_console_highlighting', + 'numpydoc'] source_suffix = '.rst' -project = 'TRIQS DFTTools' -copyright = '2011-2019' -version = '@DFT_TOOLS_VERSION@' +project = '@PROJECT_NAME@' +version = '@PROJECT_VERSION@' -mathjax_path = "@TRIQS_MATHJAX_PATH@/MathJax.js?config=default" -templates_path = ['@CMAKE_SOURCE_DIR@/doc/_templates'] +copyright = '2011-2020' + +mathjax_path = "https://raw.githubusercontent.com/mathjax/MathJax/2.7.8/MathJax.js" +templates_path = ['@CMAKE_CURRENT_SOURCE_DIR@/_templates'] html_theme = 'triqs' -html_theme_path = ['@TRIQS_THEMES_PATH@'] +html_theme_path = ['@CMAKE_CURRENT_SOURCE_DIR@/themes'] html_show_sphinx = False html_context = {'header_title': 'dft tools', 'header_subtitle': 'connecting TRIQS to DFT packages', @@ -39,9 +41,9 @@ html_context = {'header_title': 'dft tools', ['Tutorials', 'tutorials'], ['Issues', 'issues'], ['About DFTTools', 'about']]} -html_static_path = ['@CMAKE_SOURCE_DIR@/doc/_static'] +html_static_path = ['@CMAKE_CURRENT_SOURCE_DIR@/_static'] html_sidebars = {'index': ['sideb.html', 'searchbox.html']} -htmlhelp_basename = 'TRIQSDFTToolsdoc' +htmlhelp_basename = '@PROJECT_NAME@doc' -intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None), 'triqslibs': ('http://triqs.github.io/triqs/latest', None), 'triqscthyb': ('https://triqs.github.io/cthyb/latest', None)} +intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None), 'triqslibs': ('https://triqs.github.io/triqs/latest', None), 'triqscthyb': ('https://triqs.github.io/cthyb/latest', None)} diff --git a/doc/contents.rst b/doc/contents.rst index 4f990b6a..7b55d920 100644 --- a/doc/contents.rst +++ b/doc/contents.rst @@ -7,6 +7,7 @@ Table of contents index install documentation + tutorials issues changelog about diff --git a/doc/install.rst b/doc/install.rst index 8d2a1bc0..0def24bd 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -37,34 +37,41 @@ Compiling DFTTools from source Prerequisites ------------- -#. The :ref:`TRIQS ` toolbox. - +#. The :ref:`TRIQS ` library, see :ref:`TRIQS installation instruction `. + In the following, we assume that TRIQS is installed in the directory ``path_to_triqs``. #. Likely, you will also need at least one impurity solver, e.g. the :ref:`CTHYB solver `. -Installation steps +Installation steps ------------------ -#. Download the source code by cloning the ``TRIQS/dft_tools`` repository from GitHub:: - - $ git clone https://github.com/TRIQS/dft_tools.git dft_tools.src - +#. Download the source code of the latest stable version by cloning the ``TRIQS/dft_tools`` repository from GitHub:: + + $ git clone https://github.com/TRIQS/dft_tools dft_tools.src + +#. Make sure that all additional dependencies are installed on your system and available in your environment. + Alternatively build the dependencies from source instead with:: + + $ (cd deps && ./download.sh) + + In this case they will be installed together with your application. + #. Create and move to a new directory where you will compile the code:: - + $ mkdir dft_tools.build && cd dft_tools.build - + #. Ensure that your shell contains the TRIQS environment variables by sourcing the ``triqsvars.sh`` file from your TRIQS installation:: $ source path_to_triqs/share/triqsvarsh.sh - + #. In the build directory call cmake, including any additional custom CMake options, see below:: $ cmake ../dft_tools.src - -#. Compile the code, run the tests and install the application:: - - $ make - $ make test - $ make install + +#. Compile the code, run the tests and install the application:: + + $ make + $ make test + $ make install Installation steps for the use with WIEN2K version 14.2 and older @@ -114,37 +121,41 @@ Finally, you will have to change the calls to :program:`python_with_DMFT` to your :program:`python` installation in the Wien2k :file:`path_to_Wien2k/run*` files. -Version compatibility +Version compatibility --------------------- - -Be careful that the version of the TRIQS library and of the :program:`DFTTools` must be -compatible (more information on the :ref:`TRIQS website `. -If you want to use a version of the :program:`DFTTools` that is not the latest one, go -into the directory with the sources and look at all available versions:: - - $ cd src && git tag - -Checkout the version of the code that you want, for instance:: - - $ git co 2.1 - -Then follow the steps 2 to 5 described above to compile the code. + +Keep in mind that the version of ``dft_tools`` must be compatible with your TRIQS library version, +see :ref:`TRIQS website `. +In particular the Major and Minor Version numbers have to be the same. +To use a particular version, go into the directory with the sources, and look at all available versions:: + + $ cd dft_tools.src && git tag + +Checkout the version of the code that you want:: + + $ git checkout 2.1.0 + +and follow steps 2 to 4 above to compile the code. Custom CMake options -------------------- -Functionality of ``dft_tools`` can be tweaked using extra compile-time options passed to CMake:: +The compilation of ``dft_tools`` can be configured using CMake-options:: - cmake -DOPTION1=value1 -DOPTION2=value2 ... ../dft_tools.src + cmake ../dft_tools.src -DOPTION1=value1 -DOPTION2=value2 ... -+---------------------------------------------------------------+-----------------------------------------------+ -| Options | Syntax | -+===============================================================+===============================================+ -| Disable testing (not recommended) | -DBuild_Tests=OFF | -+---------------------------------------------------------------+-----------------------------------------------+ -| Build the documentation locally | -DBuild_Documentation=ON | -+---------------------------------------------------------------+-----------------------------------------------+ -| Check test coverage when testing | -DTEST_COVERAGE=ON | -| (run ``make coverage`` to show the results; requires the | | -| python ``coverage`` package) | | -+---------------------------------------------------------------+-----------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------+ +| Options | Syntax | ++=================================================================+===============================================+ +| Specify an installation path other than path_to_triqs | -DCMAKE_INSTALL_PREFIX=path_to_dft_tools| ++-----------------------------------------------------------------+-----------------------------------------------+ +| Build in Debugging Mode | -DCMAKE_BUILD_TYPE=Debug | ++-----------------------------------------------------------------+-----------------------------------------------+ +| Disable testing (not recommended) | -DBuild_Tests=OFF | ++-----------------------------------------------------------------+-----------------------------------------------+ +| Build the documentation | -DBuild_Documentation=ON | ++-----------------------------------------------------------------+-----------------------------------------------+ +| Check test coverage when testing | -DTEST_COVERAGE=ON | +| (run ``make coverage`` to show the results; requires the | | +| python ``coverage`` package) | | ++-----------------------------------------------------------------+-----------------------------------------------+ diff --git a/doc/issues.rst b/doc/issues.rst index efe3e9ca..d89de6d2 100644 --- a/doc/issues.rst +++ b/doc/issues.rst @@ -1,13 +1,14 @@ +.. _issues: Reporting issues ================ Please report all problems and bugs directly at the github issue page -``_. In order to make it easier -for us to solve the issue please follow these guidelines: +``_. In order to make it easier for us +to solve the issue please follow these guidelines: #. In all cases specify which version of the application you are using. You can - find the version number in the file :file:`README.txt` at the root of the + find the version number in the file :file:`CMakeLists.txt` at the root of the application sources. #. If you have a problem during the installation, give us information about diff --git a/doc/sphinxext/autorun/__pycache__/autorun.cpython-38.pyc b/doc/sphinxext/autorun/__pycache__/autorun.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..282cb6b9306fbdc9c845f588c418aa97dbea5c57 GIT binary patch literal 2990 zcmZuzUymF)5x3ocr|0i(_5wjCZiG0ALCP%RkT}6A3UC(=>9ni}$4M=q)jRgg^rokK zV!M;gs0SgE6Yy}~VdpV?0zL*$Jopiw^3D@HK$UxDclM5M*gM9=4GXa=~N4OBXFLVlPBXSir#=<$mxg~@2p&k!nkKY zJNs}%jaPsk1w`wEOp1xlo(W(gzGHBz{n%Rgp_HXW$$2)L=g>6HoxRZWviMkB3Y_bH zq!;<4QZ7;rc1&>5{f7ec5Ski5CkTXx#EjF}vCeQz7k2k!G}*4T>VYHd4u%5PJ{`Fx zOp+p9h$Jylk}OJIho0cccZF5;staqEu>?tAwj?LhkpG<6rcnp}`8TGI=5K`xvPgq=^NHXJ0a%G%!xx9&@Jb)EUXZu@{ z6`B49E^IAgtD~(`#`^-NqrU8bknCdDLj|l<#$Bd*Zi4h&SptAH%`BMQxsbxR7iCtM z01^RFC2?oQ<=I5bdq}n?d8*Vx0Qk9l2Nho4*?r36YkRJmlAO*5d)7* zkY|M`N;N@t_w<24sA34!+c2Za1zl4JBIM;gvSu}_>61WyQ$vo{>@Gm?4-nj%-6L1- zhO8a#tihnQSJNx6X50nn0+9bqw!8w<2r|-wzTd5LvlD)iY!U1^zxSy(QC5#7U8(`)) z)!Tld)ZK~@LID%{J&e%TpsUGm4k1GHPmoxjK^%TXD0#{-$s}UU!Vj{CjlW}D4Ebwn zI{OKKgHO{snTbMNF6Dzqs2!Ja2_vg_b^sd7su-U@MNV_|V0D3>~e8aC=1SBZRTmzM9NqzmgS z)5{7lIN*(w;4skF63RBHm)42M( zC}sfW`V;zv}(N$+ZGN+^V z7b{zPo~i_@Ec(tIO7XOUlbk2lJ~xMrXTVc8WA~<6u{V%BpM&{O7AHdbV5f1Xc{(%g z=Fdbe#YBD#YgomBbfLWG<(E{um$@vM%@3pp2XQ(=*C*)L9@pP`m-iiP(d`* z5Q;S8Ov9nMqds*U=pw=Mhk@mvsGz76_}BZ_CEz;sj2lk01Z zHN=9ffJ;w$ zBnjLkl0*)HH<7B&5kx|%J(PzaQRysK4Tz6+?05+Wvyf^mm6qt9CJx=^S~9k`AtkYH z8#w-FO*Vzd_IK40@$&(|*l=ne)y{2wH@45|PC literal 0 HcmV?d00001 diff --git a/doc/sphinxext/autorun/autorun.py b/doc/sphinxext/autorun/autorun.py new file mode 100644 index 00000000..cbd29742 --- /dev/null +++ b/doc/sphinxext/autorun/autorun.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +""" +sphinxcontirb.autorun +~~~~~~~~~~~~~~~~~~~~~~ + +Run the code and insert stdout after the code block. + + +""" +import os +from subprocess import Popen,PIPE + +from docutils import nodes +from docutils.parsers.rst import Directive +from docutils.parsers.rst import directives +from sphinx.errors import SphinxError +from pygments import highlight +from pygments.lexers import PythonLexer +from pygments.formatters import HtmlFormatter + +class RunBlockError(SphinxError): + category = 'runblock error' + +class AutoRun: + here = os.path.abspath(__file__) + pycon = os.path.join(os.path.dirname(here),'pycon.py') + config = dict( + pycon = 'python ' + pycon, + pycon_prefix_chars = 4, + pycon_show_source = False, + console = 'bash', + console_prefix_chars = 1 , + ) + @classmethod + def builder_init(cls,app): + cls.config.update(app.builder.config.autorun_languages) + + + +class RunBlock(Directive): + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'linenos': directives.flag, + } + + + def run(self): + config = AutoRun.config + language = self.arguments[0] + + if language not in config: + raise RunBlockError('Unknown language %s' % language) + + + # Get configuration values for the language + args = config[language].split() + #input_encoding = config.get(language+'_input_encoding','ascii') + input_encoding = 'utf8' + output_encoding = 'utf8' + #output_encoding = config.get(language+'_output_encoding','ascii') + prefix_chars = config.get(language+'_prefix_chars',0) + show_source = config.get(language+'_show_source',True) + + + # Build the code text + proc = Popen(args,bufsize=1,stdin=PIPE,stdout=PIPE,stderr=PIPE) + codelines = (line[prefix_chars:] for line in self.content) + code = '\n'.join(codelines).encode(input_encoding) + + # Run the code + stdout,stderr = proc.communicate(code) + + # Process output + out ='' + if stdout: + out += ''.join(stdout).decode(output_encoding) + if stderr: + out += ''.join(stderr).decode(output_encoding) + + # Get the original code with prefixes + if show_source: + code = '\n'.join(self.content) + else: + code = '' + #code_out = u'\n\n ---Output:---\n'.join((highlight(code, PythonLexer(), HtmlFormatter()),out)) + code_out = '\n\n ---Output:---\n'.join((code,out)) + + literal = nodes.literal_block(code_out,code_out) + #literal['language'] = language + literal['language'] = 'python' + literal['linenos'] = 'linenos' in self.options + return [literal] + + + +def setup(app): + app.add_directive('runblock', RunBlock) + app.connect('builder-inited',AutoRun.builder_init) + app.add_config_value('autorun_languages', AutoRun.config, 'env') + +# vim: set expandtab shiftwidth=4 softtabstop=4 : diff --git a/doc/sphinxext/autorun/pycon.py b/doc/sphinxext/autorun/pycon.py new file mode 100644 index 00000000..22ad46c8 --- /dev/null +++ b/doc/sphinxext/autorun/pycon.py @@ -0,0 +1,34 @@ +import sys +from code import InteractiveInterpreter + + +def main(): + """ + Print lines of input along with output. + """ + source_lines = (line.rstrip() for line in sys.stdin) + console = InteractiveInterpreter() + source = '' + try: + while True: + source = next(source_lines) + print('>>>', source) + more = console.runsource(source) + while more: + next_line = next(source_lines) + print('...', next_line) + source += '\n' + next_line + more = console.runsource(source) + except StopIteration: + if more: + print('... ') + more = console.runsource(source + '\n') + + + +if __name__ == '__main__': + main() + + +# vim: set expandtab shiftwidth=4 softtabstop=4 : + diff --git a/doc/sphinxext/numpydoc/__pycache__/docscrape.cpython-38.pyc b/doc/sphinxext/numpydoc/__pycache__/docscrape.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b83545fd8fb84fd45e91145b239f391939f353ec GIT binary patch literal 14820 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 literal 0 HcmV?d00001 diff --git a/doc/sphinxext/numpydoc/__pycache__/docscrape_sphinx.cpython-38.pyc b/doc/sphinxext/numpydoc/__pycache__/docscrape_sphinx.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..feb31f16a6174c833f7e9c4913661d975eae347a GIT binary patch literal 4620 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 docwriter = ApiDocWriter('sphinx') + >>> import sphinx + >>> docwriter.root_path == sphinx.__path__[0] + True + >>> docwriter.package_name = 'docutils' + >>> import docutils + >>> docwriter.root_path == docutils.__path__[0] + True + ''' + # It's also possible to imagine caching the module parsing here + self._package_name = package_name + self.root_module = __import__(package_name) + self.root_path = self.root_module.__path__[0] + self.written_modules = None + + package_name = property(get_package_name, set_package_name, None, + 'get/set package_name') + + def _get_object_name(self, line): + ''' Get second token in line + >>> docwriter = ApiDocWriter('sphinx') + >>> docwriter._get_object_name(" def func(): ") + 'func' + >>> docwriter._get_object_name(" class Klass: ") + 'Klass' + >>> docwriter._get_object_name(" class Klass: ") + 'Klass' + ''' + name = line.split()[1].split('(')[0].strip() + # in case we have classes which are not derived from object + # ie. old style classes + return name.rstrip(':') + + def _uri2path(self, uri): + ''' Convert uri to absolute filepath + + Parameters + ---------- + uri : string + URI of python module to return path for + + Returns + ------- + path : None or string + Returns None if there is no valid path for this URI + Otherwise returns absolute file system path for URI + + Examples + -------- + >>> docwriter = ApiDocWriter('sphinx') + >>> import sphinx + >>> modpath = sphinx.__path__[0] + >>> res = docwriter._uri2path('sphinx.builder') + >>> res == os.path.join(modpath, 'builder.py') + True + >>> res = docwriter._uri2path('sphinx') + >>> res == os.path.join(modpath, '__init__.py') + True + >>> docwriter._uri2path('sphinx.does_not_exist') + + ''' + if uri == self.package_name: + return os.path.join(self.root_path, '__init__.py') + path = uri.replace('.', os.path.sep) + path = path.replace(self.package_name + os.path.sep, '') + path = os.path.join(self.root_path, path) + # XXX maybe check for extensions as well? + if os.path.exists(path + '.py'): # file + path += '.py' + elif os.path.exists(os.path.join(path, '__init__.py')): + path = os.path.join(path, '__init__.py') + else: + return None + return path + + def _path2uri(self, dirpath): + ''' Convert directory path to uri ''' + relpath = dirpath.replace(self.root_path, self.package_name) + if relpath.startswith(os.path.sep): + relpath = relpath[1:] + return relpath.replace(os.path.sep, '.') + + def _parse_module(self, uri): + ''' Parse module defined in *uri* ''' + filename = self._uri2path(uri) + if filename is None: + # nothing that we could handle here. + return ([],[]) + f = open(filename, 'rt') + functions, classes = self._parse_lines(f) + f.close() + return functions, classes + + def _parse_lines(self, linesource): + ''' Parse lines of text for functions and classes ''' + functions = [] + classes = [] + for line in linesource: + if line.startswith('def ') and line.count('('): + # exclude private stuff + name = self._get_object_name(line) + if not name.startswith('_'): + functions.append(name) + elif line.startswith('class '): + # exclude private stuff + name = self._get_object_name(line) + if not name.startswith('_'): + classes.append(name) + else: + pass + functions.sort() + classes.sort() + return functions, classes + + def generate_api_doc(self, uri): + '''Make autodoc documentation template string for a module + + Parameters + ---------- + uri : string + python location of module - e.g 'sphinx.builder' + + Returns + ------- + S : string + Contents of API doc + ''' + # get the names of all classes and functions + functions, classes = self._parse_module(uri) + if not len(functions) and not len(classes): + print('WARNING: Empty -',uri) # dbg + return '' + + # Make a shorter version of the uri that omits the package name for + # titles + uri_short = re.sub(r'^%s\.' % self.package_name,'',uri) + + ad = '.. AUTO-GENERATED FILE -- DO NOT EDIT!\n\n' + + chap_title = uri_short + ad += (chap_title+'\n'+ self.rst_section_levels[1] * len(chap_title) + + '\n\n') + + # Set the chapter title to read 'module' for all modules except for the + # main packages + if '.' in uri: + title = 'Module: :mod:`' + uri_short + '`' + else: + title = ':mod:`' + uri_short + '`' + ad += title + '\n' + self.rst_section_levels[2] * len(title) + + if len(classes): + ad += '\nInheritance diagram for ``%s``:\n\n' % uri + ad += '.. inheritance-diagram:: %s \n' % uri + ad += ' :parts: 3\n' + + ad += '\n.. automodule:: ' + uri + '\n' + ad += '\n.. currentmodule:: ' + uri + '\n' + multi_class = len(classes) > 1 + multi_fx = len(functions) > 1 + if multi_class: + ad += '\n' + 'Classes' + '\n' + \ + self.rst_section_levels[2] * 7 + '\n' + elif len(classes) and multi_fx: + ad += '\n' + 'Class' + '\n' + \ + self.rst_section_levels[2] * 5 + '\n' + for c in classes: + ad += '\n:class:`' + c + '`\n' \ + + self.rst_section_levels[multi_class + 2 ] * \ + (len(c)+9) + '\n\n' + ad += '\n.. autoclass:: ' + c + '\n' + # must NOT exclude from index to keep cross-refs working + ad += ' :members:\n' \ + ' :undoc-members:\n' \ + ' :show-inheritance:\n' \ + ' :inherited-members:\n' \ + '\n' \ + ' .. automethod:: __init__\n' + if multi_fx: + ad += '\n' + 'Functions' + '\n' + \ + self.rst_section_levels[2] * 9 + '\n\n' + elif len(functions) and multi_class: + ad += '\n' + 'Function' + '\n' + \ + self.rst_section_levels[2] * 8 + '\n\n' + for f in functions: + # must NOT exclude from index to keep cross-refs working + ad += '\n.. autofunction:: ' + uri + '.' + f + '\n\n' + return ad + + def _survives_exclude(self, matchstr, match_type): + ''' Returns True if *matchstr* does not match patterns + + ``self.package_name`` removed from front of string if present + + Examples + -------- + >>> dw = ApiDocWriter('sphinx') + >>> dw._survives_exclude('sphinx.okpkg', 'package') + True + >>> dw.package_skip_patterns.append('^\\.badpkg$') + >>> dw._survives_exclude('sphinx.badpkg', 'package') + False + >>> dw._survives_exclude('sphinx.badpkg', 'module') + True + >>> dw._survives_exclude('sphinx.badmod', 'module') + True + >>> dw.module_skip_patterns.append('^\\.badmod$') + >>> dw._survives_exclude('sphinx.badmod', 'module') + False + ''' + if match_type == 'module': + patterns = self.module_skip_patterns + elif match_type == 'package': + patterns = self.package_skip_patterns + else: + raise ValueError('Cannot interpret match type "%s"' + % match_type) + # Match to URI without package name + L = len(self.package_name) + if matchstr[:L] == self.package_name: + matchstr = matchstr[L:] + for pat in patterns: + try: + pat.search + except AttributeError: + pat = re.compile(pat) + if pat.search(matchstr): + return False + return True + + def discover_modules(self): + ''' Return module sequence discovered from ``self.package_name`` + + + Parameters + ---------- + None + + Returns + ------- + mods : sequence + Sequence of module names within ``self.package_name`` + + Examples + -------- + >>> dw = ApiDocWriter('sphinx') + >>> mods = dw.discover_modules() + >>> 'sphinx.util' in mods + True + >>> dw.package_skip_patterns.append('\.util$') + >>> 'sphinx.util' in dw.discover_modules() + False + >>> + ''' + modules = [self.package_name] + # raw directory parsing + for dirpath, dirnames, filenames in os.walk(self.root_path): + # Check directory names for packages + root_uri = self._path2uri(os.path.join(self.root_path, + dirpath)) + for dirname in dirnames[:]: # copy list - we modify inplace + package_uri = '.'.join((root_uri, dirname)) + if (self._uri2path(package_uri) and + self._survives_exclude(package_uri, 'package')): + modules.append(package_uri) + else: + dirnames.remove(dirname) + # Check filenames for modules + for filename in filenames: + module_name = filename[:-3] + module_uri = '.'.join((root_uri, module_name)) + if (self._uri2path(module_uri) and + self._survives_exclude(module_uri, 'module')): + modules.append(module_uri) + return sorted(modules) + + def write_modules_api(self, modules,outdir): + # write the list + written_modules = [] + for m in modules: + api_str = self.generate_api_doc(m) + if not api_str: + continue + # write out to file + outfile = os.path.join(outdir, + m + self.rst_extension) + fileobj = open(outfile, 'wt') + fileobj.write(api_str) + fileobj.close() + written_modules.append(m) + self.written_modules = written_modules + + def write_api_docs(self, outdir): + """Generate API reST files. + + Parameters + ---------- + outdir : string + Directory name in which to store files + We create automatic filenames for each module + + Returns + ------- + None + + Notes + ----- + Sets self.written_modules to list of written modules + """ + if not os.path.exists(outdir): + os.mkdir(outdir) + # compose list of modules + modules = self.discover_modules() + self.write_modules_api(modules,outdir) + + def write_index(self, outdir, froot='gen', relative_to=None): + """Make a reST API index file from written files + + Parameters + ---------- + path : string + Filename to write index to + outdir : string + Directory to which to write generated index file + froot : string, optional + root (filename without extension) of filename to write to + Defaults to 'gen'. We add ``self.rst_extension``. + relative_to : string + path to which written filenames are relative. This + component of the written file path will be removed from + outdir, in the generated index. Default is None, meaning, + leave path as it is. + """ + if self.written_modules is None: + raise ValueError('No modules written') + # Get full filename path + path = os.path.join(outdir, froot+self.rst_extension) + # Path written into index is relative to rootpath + if relative_to is not None: + relpath = outdir.replace(relative_to + os.path.sep, '') + else: + relpath = outdir + idx = open(path,'wt') + w = idx.write + w('.. AUTO-GENERATED FILE -- DO NOT EDIT!\n\n') + w('.. toctree::\n\n') + for f in self.written_modules: + w(' %s\n' % os.path.join(relpath,f)) + idx.close() diff --git a/doc/sphinxext/numpydoc/docscrape.py b/doc/sphinxext/numpydoc/docscrape.py new file mode 100644 index 00000000..25489154 --- /dev/null +++ b/doc/sphinxext/numpydoc/docscrape.py @@ -0,0 +1,497 @@ +"""Extract reference documentation from the NumPy source tree. + +""" + +import inspect +import textwrap +import re +import pydoc +from io import StringIO +from warnings import warn +4 +class Reader: + """A line-based string reader. + + """ + def __init__(self, data): + """ + Parameters + ---------- + data : str + String with lines separated by '\n'. + + """ + if isinstance(data,list): + self._str = data + else: + self._str = data.split('\n') # store string as list of lines + + self.reset() + + def __getitem__(self, n): + return self._str[n] + + def reset(self): + self._l = 0 # current line nr + + def read(self): + if not self.eof(): + out = self[self._l] + self._l += 1 + return out + else: + return '' + + def seek_next_non_empty_line(self): + for l in self[self._l:]: + if l.strip(): + break + else: + self._l += 1 + + def eof(self): + return self._l >= len(self._str) + + def read_to_condition(self, condition_func): + start = self._l + for line in self[start:]: + if condition_func(line): + return self[start:self._l] + self._l += 1 + if self.eof(): + return self[start:self._l+1] + return [] + + def read_to_next_empty_line(self): + self.seek_next_non_empty_line() + def is_empty(line): + return not line.strip() + return self.read_to_condition(is_empty) + + def read_to_next_unindented_line(self): + def is_unindented(line): + return (line.strip() and (len(line.lstrip()) == len(line))) + return self.read_to_condition(is_unindented) + + def peek(self,n=0): + if self._l + n < len(self._str): + return self[self._l + n] + else: + return '' + + def is_empty(self): + return not ''.join(self._str).strip() + + +class NumpyDocString: + def __init__(self,docstring): + docstring = textwrap.dedent(docstring).split('\n') + + self._doc = Reader(docstring) + self._parsed_data = { + 'Signature': '', + 'Summary': [''], + 'Extended Summary': [], + 'Parameters': [], + 'Returns': [], + 'Raises': [], + 'Warns': [], + 'Other Parameters': [], + 'Attributes': [], + 'Methods': [], + 'See Also': [], + 'Notes': [], + 'Warnings': [], + 'References': '', + 'Examples': '', + 'index': {} + } + + self._parse() + + def __getitem__(self,key): + return self._parsed_data[key] + + def __setitem__(self,key,val): + if key not in self._parsed_data: + warn("Unknown section %s" % key) + else: + self._parsed_data[key] = val + + def _is_at_section(self): + self._doc.seek_next_non_empty_line() + + if self._doc.eof(): + return False + + l1 = self._doc.peek().strip() # e.g. Parameters + + if l1.startswith('.. index::'): + return True + + l2 = self._doc.peek(1).strip() # ---------- or ========== + return l2.startswith('-'*len(l1)) or l2.startswith('='*len(l1)) + + def _strip(self,doc): + i = 0 + j = 0 + for i,line in enumerate(doc): + if line.strip(): break + + for j,line in enumerate(doc[::-1]): + if line.strip(): break + + return doc[i:len(doc)-j] + + def _read_to_next_section(self): + section = self._doc.read_to_next_empty_line() + + while not self._is_at_section() and not self._doc.eof(): + if not self._doc.peek(-1).strip(): # previous line was empty + section += [''] + + section += self._doc.read_to_next_empty_line() + + return section + + def _read_sections(self): + while not self._doc.eof(): + data = self._read_to_next_section() + name = data[0].strip() + + if name.startswith('..'): # index section + yield name, data[1:] + elif len(data) < 2: + yield StopIteration + else: + yield name, self._strip(data[2:]) + + def _parse_param_list(self,content): + r = Reader(content) + params = [] + while not r.eof(): + header = r.read().strip() + if ' : ' in header: + arg_name, arg_type = header.split(' : ')[:2] + else: + arg_name, arg_type = header, '' + + desc = r.read_to_next_unindented_line() + desc = dedent_lines(desc) + + params.append((arg_name,arg_type,desc)) + + return params + + + _name_rgx = re.compile(r"^\s*(:(?P\w+):`(?P[a-zA-Z0-9_.-]+)`|" + r" (?P[a-zA-Z0-9_.-]+))\s*", re.X) + def _parse_see_also(self, content): + """ + func_name : Descriptive text + continued text + another_func_name : Descriptive text + func_name1, func_name2, :meth:`func_name`, func_name3 + + """ + items = [] + + def parse_item_name(text): + """Match ':role:`name`' or 'name'""" + m = self._name_rgx.match(text) + if m: + g = m.groups() + if g[1] is None: + return g[3], None + else: + return g[2], g[1] + raise ValueError("%s is not a item name" % text) + + def push_item(name, rest): + if not name: + return + name, role = parse_item_name(name) + items.append((name, list(rest), role)) + del rest[:] + + current_func = None + rest = [] + + for line in content: + if not line.strip(): continue + + m = self._name_rgx.match(line) + if m and line[m.end():].strip().startswith(':'): + push_item(current_func, rest) + current_func, line = line[:m.end()], line[m.end():] + rest = [line.split(':', 1)[1].strip()] + if not rest[0]: + rest = [] + elif not line.startswith(' '): + push_item(current_func, rest) + current_func = None + if ',' in line: + for func in line.split(','): + push_item(func, []) + elif line.strip(): + current_func = line + elif current_func is not None: + rest.append(line.strip()) + push_item(current_func, rest) + return items + + def _parse_index(self, section, content): + """ + .. index: default + :refguide: something, else, and more + + """ + def strip_each_in(lst): + return [s.strip() for s in lst] + + out = {} + section = section.split('::') + if len(section) > 1: + out['default'] = strip_each_in(section[1].split(','))[0] + for line in content: + line = line.split(':') + if len(line) > 2: + out[line[1]] = strip_each_in(line[2].split(',')) + return out + + def _parse_summary(self): + """Grab signature (if given) and summary""" + if self._is_at_section(): + return + + summary = self._doc.read_to_next_empty_line() + summary_str = " ".join([s.strip() for s in summary]).strip() + if re.compile('^([\w., ]+=)?\s*[\w\.]+\(.*\)$').match(summary_str): + self['Signature'] = summary_str + if not self._is_at_section(): + self['Summary'] = self._doc.read_to_next_empty_line() + else: + self['Summary'] = summary + + if not self._is_at_section(): + self['Extended Summary'] = self._read_to_next_section() + + def _parse(self): + self._doc.reset() + self._parse_summary() + + for (section,content) in self._read_sections(): + if not section.startswith('..'): + section = ' '.join([s.capitalize() for s in section.split(' ')]) + if section in ('Parameters', 'Attributes', 'Methods', + 'Returns', 'Raises', 'Warns'): + self[section] = self._parse_param_list(content) + elif section.startswith('.. index::'): + self['index'] = self._parse_index(section, content) + elif section == 'See Also': + self['See Also'] = self._parse_see_also(content) + else: + self[section] = content + + # string conversion routines + + def _str_header(self, name, symbol='-'): + return [name, len(name)*symbol] + + def _str_indent(self, doc, indent=4): + out = [] + for line in doc: + out += [' '*indent + line] + return out + + def _str_signature(self): + if self['Signature']: + return [self['Signature'].replace('*','\*')] + [''] + else: + return [''] + + def _str_summary(self): + if self['Summary']: + return self['Summary'] + [''] + else: + return [] + + def _str_extended_summary(self): + if self['Extended Summary']: + return self['Extended Summary'] + [''] + else: + return [] + + def _str_param_list(self, name): + out = [] + if self[name]: + out += self._str_header(name) + for param,param_type,desc in self[name]: + out += ['%s : %s' % (param, param_type)] + out += self._str_indent(desc) + out += [''] + return out + + def _str_section(self, name): + out = [] + if self[name]: + out += self._str_header(name) + out += self[name] + out += [''] + return out + + def _str_see_also(self, func_role): + if not self['See Also']: return [] + out = [] + out += self._str_header("See Also") + last_had_desc = True + for func, desc, role in self['See Also']: + if role: + link = ':%s:`%s`' % (role, func) + elif func_role: + link = ':%s:`%s`' % (func_role, func) + else: + link = "`%s`_" % func + if desc or last_had_desc: + out += [''] + out += [link] + else: + out[-1] += ", %s" % link + if desc: + out += self._str_indent([' '.join(desc)]) + last_had_desc = True + else: + last_had_desc = False + out += [''] + return out + + def _str_index(self): + idx = self['index'] + out = [] + out += ['.. index:: %s' % idx.get('default','')] + for section, references in idx.items(): + if section == 'default': + continue + out += [' :%s: %s' % (section, ', '.join(references))] + return out + + def __str__(self, func_role=''): + out = [] + out += self._str_signature() + out += self._str_summary() + out += self._str_extended_summary() + for param_list in ('Parameters','Returns','Raises'): + out += self._str_param_list(param_list) + out += self._str_section('Warnings') + out += self._str_see_also(func_role) + for s in ('Notes','References','Examples'): + out += self._str_section(s) + out += self._str_index() + return '\n'.join(out) + + +def indent(str,indent=4): + indent_str = ' '*indent + if str is None: + return indent_str + lines = str.split('\n') + return '\n'.join(indent_str + l for l in lines) + +def dedent_lines(lines): + """Deindent a list of lines maximally""" + return textwrap.dedent("\n".join(lines)).split("\n") + +def header(text, style='-'): + return text + '\n' + style*len(text) + '\n' + + +class FunctionDoc(NumpyDocString): + def __init__(self, func, role='func', doc=None): + self._f = func + self._role = role # e.g. "func" or "meth" + if doc is None: + doc = inspect.getdoc(func) or '' + try: + NumpyDocString.__init__(self, doc) + except ValueError as e: + print('*'*78) + print("ERROR: '%s' while parsing `%s`" % (e, self._f)) + print('*'*78) + #print "Docstring follows:" + #print doclines + #print '='*78 + + if not self['Signature']: + func, func_name = self.get_func() + try: + # try to read signature + argspec = inspect.getargspec(func) + argspec = inspect.formatargspec(*argspec) + argspec = argspec.replace('*','\*') + signature = '%s%s' % (func_name, argspec) + except TypeError as e: + signature = '%s()' % func_name + self['Signature'] = signature + + def get_func(self): + func_name = getattr(self._f, '__name__', self.__class__.__name__) + if inspect.isclass(self._f): + func = getattr(self._f, '__call__', self._f.__init__) + else: + func = self._f + return func, func_name + + def __str__(self): + out = '' + + func, func_name = self.get_func() + signature = self['Signature'].replace('*', '\*') + + roles = {'func': 'function', + 'meth': 'method'} + + if self._role: + if self._role not in roles: + print("Warning: invalid role %s" % self._role) + out += '.. %s:: %s\n \n\n' % (roles.get(self._role,''), + func_name) + + out += super(FunctionDoc, self).__str__(func_role=self._role) + return out + + +class ClassDoc(NumpyDocString): + def __init__(self,cls,modulename='',func_doc=FunctionDoc,doc=None): + if not inspect.isclass(cls): + raise ValueError("Initialise using a class. Got %r" % cls) + self._cls = cls + + if modulename and not modulename.endswith('.'): + modulename += '.' + self._mod = modulename + self._name = cls.__name__ + self._func_doc = func_doc + + if doc is None: + doc = pydoc.getdoc(cls) + + NumpyDocString.__init__(self, doc) + + @property + def methods(self): + return [name for name,func in inspect.getmembers(self._cls) + if not name.startswith('_') and callable(func)] + + def __str__(self): + out = '' + out += super(ClassDoc, self).__str__() + out += "\n\n" + + #for m in self.methods: + # print "Parsing `%s`" % m + # out += str(self._func_doc(getattr(self._cls,m), 'meth')) + '\n\n' + # out += '.. index::\n single: %s; %s\n\n' % (self._name, m) + + return out + + diff --git a/doc/sphinxext/numpydoc/docscrape_sphinx.py b/doc/sphinxext/numpydoc/docscrape_sphinx.py new file mode 100644 index 00000000..2660f14f --- /dev/null +++ b/doc/sphinxext/numpydoc/docscrape_sphinx.py @@ -0,0 +1,136 @@ +import re, inspect, textwrap, pydoc +from docscrape import NumpyDocString, FunctionDoc, ClassDoc + +class SphinxDocString(NumpyDocString): + # string conversion routines + def _str_header(self, name, symbol='`'): + return ['.. rubric:: ' + name, ''] + + def _str_field_list(self, name): + return [':' + name + ':'] + + def _str_indent(self, doc, indent=4): + out = [] + for line in doc: + out += [' '*indent + line] + return out + + def _str_signature(self): + return [''] + if self['Signature']: + return ['``%s``' % self['Signature']] + [''] + else: + return [''] + + def _str_summary(self): + return self['Summary'] + [''] + + def _str_extended_summary(self): + return self['Extended Summary'] + [''] + + def _str_param_list(self, name): + out = [] + if self[name]: + out += self._str_field_list(name) + out += [''] + for param,param_type,desc in self[name]: + out += self._str_indent(['**%s** : %s' % (param.strip(), + param_type)]) + out += [''] + out += self._str_indent(desc,8) + out += [''] + return out + + def _str_section(self, name): + out = [] + if self[name]: + out += self._str_header(name) + out += [''] + content = textwrap.dedent("\n".join(self[name])).split("\n") + out += content + out += [''] + return out + + def _str_see_also(self, func_role): + out = [] + if self['See Also']: + see_also = super(SphinxDocString, self)._str_see_also(func_role) + out = ['.. seealso::', ''] + out += self._str_indent(see_also[2:]) + return out + + def _str_warnings(self): + out = [] + if self['Warnings']: + out = ['.. warning::', ''] + out += self._str_indent(self['Warnings']) + return out + + def _str_index(self): + idx = self['index'] + out = [] + if len(idx) == 0: + return out + + out += ['.. index:: %s' % idx.get('default','')] + for section, references in idx.items(): + if section == 'default': + continue + elif section == 'refguide': + out += [' single: %s' % (', '.join(references))] + else: + out += [' %s: %s' % (section, ','.join(references))] + return out + + def _str_references(self): + out = [] + if self['References']: + out += self._str_header('References') + if isinstance(self['References'], str): + self['References'] = [self['References']] + out.extend(self['References']) + out += [''] + return out + + def __str__(self, indent=0, func_role="obj"): + out = [] + out += self._str_signature() + out += self._str_index() + [''] + out += self._str_summary() + out += self._str_extended_summary() + for param_list in ('Parameters', 'Attributes', 'Methods', + 'Returns','Raises'): + out += self._str_param_list(param_list) + out += self._str_warnings() + out += self._str_see_also(func_role) + out += self._str_section('Notes') + out += self._str_references() + out += self._str_section('Examples') + out = self._str_indent(out,indent) + return '\n'.join(out) + +class SphinxFunctionDoc(SphinxDocString, FunctionDoc): + pass + +class SphinxClassDoc(SphinxDocString, ClassDoc): + pass + +def get_doc_object(obj, what=None, doc=None): + if what is None: + if inspect.isclass(obj): + what = 'class' + elif inspect.ismodule(obj): + what = 'module' + elif callable(obj): + what = 'function' + else: + what = 'object' + if what == 'class': + return SphinxClassDoc(obj, '', func_doc=SphinxFunctionDoc, doc=doc) + elif what in ('function', 'method'): + return SphinxFunctionDoc(obj, '', doc=doc) + else: + if doc is None: + doc = pydoc.getdoc(obj) + return SphinxDocString(doc) + diff --git a/doc/sphinxext/numpydoc/inheritance_diagram.py b/doc/sphinxext/numpydoc/inheritance_diagram.py new file mode 100644 index 00000000..a1ba7e7e --- /dev/null +++ b/doc/sphinxext/numpydoc/inheritance_diagram.py @@ -0,0 +1,407 @@ +""" +Defines a docutils directive for inserting inheritance diagrams. + +Provide the directive with one or more classes or modules (separated +by whitespace). For modules, all of the classes in that module will +be used. + +Example:: + + Given the following classes: + + class A: pass + class B(A): pass + class C(A): pass + class D(B, C): pass + class E(B): pass + + .. inheritance-diagram: D E + + Produces a graph like the following: + + A + / \ + B C + / \ / + E D + +The graph is inserted as a PNG+image map into HTML and a PDF in +LaTeX. +""" + +import inspect +import os +import re +import subprocess +try: + from hashlib import md5 +except ImportError: + from md5 import md5 + +from docutils.nodes import Body, Element +from docutils.parsers.rst import directives +from sphinx.roles import xfileref_role + +def my_import(name): + """Module importer - taken from the python documentation. + + This function allows importing names with dots in them.""" + + mod = __import__(name) + components = name.split('.') + for comp in components[1:]: + mod = getattr(mod, comp) + return mod + +class DotException(Exception): + pass + +class InheritanceGraph: + """ + Given a list of classes, determines the set of classes that + they inherit from all the way to the root "object", and then + is able to generate a graphviz dot graph from them. + """ + def __init__(self, class_names, show_builtins=False): + """ + *class_names* is a list of child classes to show bases from. + + If *show_builtins* is True, then Python builtins will be shown + in the graph. + """ + self.class_names = class_names + self.classes = self._import_classes(class_names) + self.all_classes = self._all_classes(self.classes) + if len(self.all_classes) == 0: + raise ValueError("No classes found for inheritance diagram") + self.show_builtins = show_builtins + + py_sig_re = re.compile(r'''^([\w.]*\.)? # class names + (\w+) \s* $ # optionally arguments + ''', re.VERBOSE) + + def _import_class_or_module(self, name): + """ + Import a class using its fully-qualified *name*. + """ + try: + path, base = self.py_sig_re.match(name).groups() + except: + raise ValueError( + "Invalid class or module '%s' specified for inheritance diagram" % name) + fullname = (path or '') + base + path = (path and path.rstrip('.')) + if not path: + path = base + try: + module = __import__(path, None, None, []) + # We must do an import of the fully qualified name. Otherwise if a + # subpackage 'a.b' is requested where 'import a' does NOT provide + # 'a.b' automatically, then 'a.b' will not be found below. This + # second call will force the equivalent of 'import a.b' to happen + # after the top-level import above. + my_import(fullname) + + except ImportError: + raise ValueError( + "Could not import class or module '%s' specified for inheritance diagram" % name) + + try: + todoc = module + for comp in fullname.split('.')[1:]: + todoc = getattr(todoc, comp) + except AttributeError: + raise ValueError( + "Could not find class or module '%s' specified for inheritance diagram" % name) + + # If a class, just return it + if inspect.isclass(todoc): + return [todoc] + elif inspect.ismodule(todoc): + classes = [] + for cls in list(todoc.__dict__.values()): + if inspect.isclass(cls) and cls.__module__ == todoc.__name__: + classes.append(cls) + return classes + raise ValueError( + "'%s' does not resolve to a class or module" % name) + + def _import_classes(self, class_names): + """ + Import a list of classes. + """ + classes = [] + for name in class_names: + classes.extend(self._import_class_or_module(name)) + return classes + + def _all_classes(self, classes): + """ + Return a list of all classes that are ancestors of *classes*. + """ + all_classes = {} + + def recurse(cls): + all_classes[cls] = None + for c in cls.__bases__: + if c not in all_classes: + recurse(c) + + for cls in classes: + recurse(cls) + + return list(all_classes.keys()) + + def class_name(self, cls, parts=0): + """ + Given a class object, return a fully-qualified name. This + works for things I've tested in matplotlib so far, but may not + be completely general. + """ + module = cls.__module__ + if module == '__builtin__': + fullname = cls.__name__ + else: + fullname = "%s.%s" % (module, cls.__name__) + if parts == 0: + return fullname + name_parts = fullname.split('.') + return '.'.join(name_parts[-parts:]) + + def get_all_class_names(self): + """ + Get all of the class names involved in the graph. + """ + return [self.class_name(x) for x in self.all_classes] + + # These are the default options for graphviz + default_graph_options = { + "rankdir": "LR", + "size": '"8.0, 12.0"' + } + default_node_options = { + "shape": "box", + "fontsize": 10, + "height": 0.25, + "fontname": "Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans", + "style": '"setlinewidth(0.5)"' + } + default_edge_options = { + "arrowsize": 0.5, + "style": '"setlinewidth(0.5)"' + } + + def _format_node_options(self, options): + return ','.join(["%s=%s" % x for x in list(options.items())]) + def _format_graph_options(self, options): + return ''.join(["%s=%s;\n" % x for x in list(options.items())]) + + def generate_dot(self, fd, name, parts=0, urls={}, + graph_options={}, node_options={}, + edge_options={}): + """ + Generate a graphviz dot graph from the classes that + were passed in to __init__. + + *fd* is a Python file-like object to write to. + + *name* is the name of the graph + + *urls* is a dictionary mapping class names to http urls + + *graph_options*, *node_options*, *edge_options* are + dictionaries containing key/value pairs to pass on as graphviz + properties. + """ + g_options = self.default_graph_options.copy() + g_options.update(graph_options) + n_options = self.default_node_options.copy() + n_options.update(node_options) + e_options = self.default_edge_options.copy() + e_options.update(edge_options) + + fd.write('digraph %s {\n' % name) + fd.write(self._format_graph_options(g_options)) + + for cls in self.all_classes: + if not self.show_builtins and cls in list(__builtins__.values()): + continue + + name = self.class_name(cls, parts) + + # Write the node + this_node_options = n_options.copy() + url = urls.get(self.class_name(cls)) + if url is not None: + this_node_options['URL'] = '"%s"' % url + fd.write(' "%s" [%s];\n' % + (name, self._format_node_options(this_node_options))) + + # Write the edges + for base in cls.__bases__: + if not self.show_builtins and base in list(__builtins__.values()): + continue + + base_name = self.class_name(base, parts) + fd.write(' "%s" -> "%s" [%s];\n' % + (base_name, name, + self._format_node_options(e_options))) + fd.write('}\n') + + def run_dot(self, args, name, parts=0, urls={}, + graph_options={}, node_options={}, edge_options={}): + """ + Run graphviz 'dot' over this graph, returning whatever 'dot' + writes to stdout. + + *args* will be passed along as commandline arguments. + + *name* is the name of the graph + + *urls* is a dictionary mapping class names to http urls + + Raises DotException for any of the many os and + installation-related errors that may occur. + """ + try: + dot = subprocess.Popen(['dot'] + list(args), + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + close_fds=True) + except OSError: + raise DotException("Could not execute 'dot'. Are you sure you have 'graphviz' installed?") + except ValueError: + raise DotException("'dot' called with invalid arguments") + except: + raise DotException("Unexpected error calling 'dot'") + + self.generate_dot(dot.stdin, name, parts, urls, graph_options, + node_options, edge_options) + dot.stdin.close() + result = dot.stdout.read() + returncode = dot.wait() + if returncode != 0: + raise DotException("'dot' returned the errorcode %d" % returncode) + return result + +class inheritance_diagram(Body, Element): + """ + A docutils node to use as a placeholder for the inheritance + diagram. + """ + pass + +def inheritance_diagram_directive(name, arguments, options, content, lineno, + content_offset, block_text, state, + state_machine): + """ + Run when the inheritance_diagram directive is first encountered. + """ + node = inheritance_diagram() + + class_names = arguments + + # Create a graph starting with the list of classes + graph = InheritanceGraph(class_names) + + # Create xref nodes for each target of the graph's image map and + # add them to the doc tree so that Sphinx can resolve the + # references to real URLs later. These nodes will eventually be + # removed from the doctree after we're done with them. + for name in graph.get_all_class_names(): + refnodes, x = xfileref_role( + 'class', ':class:`%s`' % name, name, 0, state) + node.extend(refnodes) + # Store the graph object so we can use it to generate the + # dot file later + node['graph'] = graph + # Store the original content for use as a hash + node['parts'] = options.get('parts', 0) + node['content'] = " ".join(class_names) + return [node] + +def get_graph_hash(node): + return md5(node['content'] + str(node['parts'])).hexdigest()[-10:] + +def html_output_graph(self, node): + """ + Output the graph for HTML. This will insert a PNG with clickable + image map. + """ + graph = node['graph'] + parts = node['parts'] + + graph_hash = get_graph_hash(node) + name = "inheritance%s" % graph_hash + path = '_images' + dest_path = os.path.join(setup.app.builder.outdir, path) + if not os.path.exists(dest_path): + os.makedirs(dest_path) + png_path = os.path.join(dest_path, name + ".png") + path = setup.app.builder.imgpath + + # Create a mapping from fully-qualified class names to URLs. + urls = {} + for child in node: + if child.get('refuri') is not None: + urls[child['reftitle']] = child.get('refuri') + elif child.get('refid') is not None: + urls[child['reftitle']] = '#' + child.get('refid') + + # These arguments to dot will save a PNG file to disk and write + # an HTML image map to stdout. + image_map = graph.run_dot(['-Tpng', '-o%s' % png_path, '-Tcmapx'], + name, parts, urls) + return ('%s' % + (path, name, name, image_map)) + +def latex_output_graph(self, node): + """ + Output the graph for LaTeX. This will insert a PDF. + """ + graph = node['graph'] + parts = node['parts'] + + graph_hash = get_graph_hash(node) + name = "inheritance%s" % graph_hash + dest_path = os.path.abspath(os.path.join(setup.app.builder.outdir, '_images')) + if not os.path.exists(dest_path): + os.makedirs(dest_path) + pdf_path = os.path.abspath(os.path.join(dest_path, name + ".pdf")) + + graph.run_dot(['-Tpdf', '-o%s' % pdf_path], + name, parts, graph_options={'size': '"6.0,6.0"'}) + return '\n\\includegraphics{%s}\n\n' % pdf_path + +def visit_inheritance_diagram(inner_func): + """ + This is just a wrapper around html/latex_output_graph to make it + easier to handle errors and insert warnings. + """ + def visitor(self, node): + try: + content = inner_func(self, node) + except DotException as e: + # Insert the exception as a warning in the document + warning = self.document.reporter.warning(str(e), line=node.line) + warning.parent = node + node.children = [warning] + else: + source = self.document.attributes['source'] + self.body.append(content) + node.children = [] + return visitor + +def do_nothing(self, node): + pass + +def setup(app): + setup.app = app + setup.confdir = app.confdir + + app.add_node( + inheritance_diagram, + latex=(visit_inheritance_diagram(latex_output_graph), do_nothing), + html=(visit_inheritance_diagram(html_output_graph), do_nothing)) + app.add_directive( + 'inheritance-diagram', inheritance_diagram_directive, + False, (1, 100, 0), parts = directives.nonnegative_int) diff --git a/doc/sphinxext/numpydoc/ipython_console_highlighting.py b/doc/sphinxext/numpydoc/ipython_console_highlighting.py new file mode 100644 index 00000000..217b779d --- /dev/null +++ b/doc/sphinxext/numpydoc/ipython_console_highlighting.py @@ -0,0 +1,114 @@ +"""reST directive for syntax-highlighting ipython interactive sessions. + +XXX - See what improvements can be made based on the new (as of Sept 2009) +'pycon' lexer for the python console. At the very least it will give better +highlighted tracebacks. +""" + +#----------------------------------------------------------------------------- +# Needed modules + +# Standard library +import re + +# Third party +from pygments.lexer import Lexer, do_insertions +from pygments.lexers.agile import (PythonConsoleLexer, PythonLexer, + PythonTracebackLexer) +from pygments.token import Comment, Generic + +from sphinx import highlighting + +#----------------------------------------------------------------------------- +# Global constants +line_re = re.compile('.*?\n') + +#----------------------------------------------------------------------------- +# Code begins - classes and functions + +class IPythonConsoleLexer(Lexer): + """ + For IPython console output or doctests, such as: + + .. sourcecode:: ipython + + In [1]: a = 'foo' + + In [2]: a + Out[2]: 'foo' + + In [3]: print a + foo + + In [4]: 1 / 0 + + Notes: + + - Tracebacks are not currently supported. + + - It assumes the default IPython prompts, not customized ones. + """ + + name = 'IPython console session' + aliases = ['ipython'] + mimetypes = ['text/x-ipython-console'] + input_prompt = re.compile("(In \[[0-9]+\]: )|( \.\.\.+:)") + output_prompt = re.compile("(Out\[[0-9]+\]: )|( \.\.\.+:)") + continue_prompt = re.compile(" \.\.\.+:") + tb_start = re.compile("\-+") + + def get_tokens_unprocessed(self, text): + pylexer = PythonLexer(**self.options) + tblexer = PythonTracebackLexer(**self.options) + + curcode = '' + insertions = [] + for match in line_re.finditer(text): + line = match.group() + input_prompt = self.input_prompt.match(line) + continue_prompt = self.continue_prompt.match(line.rstrip()) + output_prompt = self.output_prompt.match(line) + if line.startswith("#"): + insertions.append((len(curcode), + [(0, Comment, line)])) + elif input_prompt is not None: + insertions.append((len(curcode), + [(0, Generic.Prompt, input_prompt.group())])) + curcode += line[input_prompt.end():] + elif continue_prompt is not None: + insertions.append((len(curcode), + [(0, Generic.Prompt, continue_prompt.group())])) + curcode += line[continue_prompt.end():] + elif output_prompt is not None: + # Use the 'error' token for output. We should probably make + # our own token, but error is typicaly in a bright color like + # red, so it works fine for our output prompts. + insertions.append((len(curcode), + [(0, Generic.Error, output_prompt.group())])) + curcode += line[output_prompt.end():] + else: + if curcode: + for item in do_insertions(insertions, + pylexer.get_tokens_unprocessed(curcode)): + yield item + curcode = '' + insertions = [] + yield match.start(), Generic.Output, line + if curcode: + for item in do_insertions(insertions, + pylexer.get_tokens_unprocessed(curcode)): + yield item + + +def setup(app): + """Setup as a sphinx extension.""" + + # This is only a lexer, so adding it below to pygments appears sufficient. + # But if somebody knows that the right API usage should be to do that via + # sphinx, by all means fix it here. At least having this setup.py + # suppresses the sphinx warning we'd get without it. + pass + +#----------------------------------------------------------------------------- +# Register the extension as a valid pygments lexer +highlighting.lexers['ipython'] = IPythonConsoleLexer() diff --git a/doc/sphinxext/numpydoc/numpydoc.py b/doc/sphinxext/numpydoc/numpydoc.py new file mode 100644 index 00000000..eea482dc --- /dev/null +++ b/doc/sphinxext/numpydoc/numpydoc.py @@ -0,0 +1,116 @@ +""" +======== +numpydoc +======== + +Sphinx extension that handles docstrings in the Numpy standard format. [1] + +It will: + +- Convert Parameters etc. sections to field lists. +- Convert See Also section to a See also entry. +- Renumber references. +- Extract the signature from the docstring, if it can't be determined otherwise. + +.. [1] http://projects.scipy.org/scipy/numpy/wiki/CodingStyleGuidelines#docstring-standard + +""" + +import os, re, pydoc +from docscrape_sphinx import get_doc_object, SphinxDocString +import inspect + +def mangle_docstrings(app, what, name, obj, options, lines, + reference_offset=[0]): + if what == 'module': + # Strip top title + title_re = re.compile(r'^\s*[#*=]{4,}\n[a-z0-9 -]+\n[#*=]{4,}\s*', + re.I|re.S) + lines[:] = title_re.sub('', "\n".join(lines)).split("\n") + else: + doc = get_doc_object(obj, what, "\n".join(lines)) + lines[:] = str(doc).split("\n") + + if app.config.numpydoc_edit_link and hasattr(obj, '__name__') and \ + obj.__name__: + if hasattr(obj, '__module__'): + v = dict(full_name="%s.%s" % (obj.__module__, obj.__name__)) + else: + v = dict(full_name=obj.__name__) + lines += ['', '.. htmlonly::', ''] + lines += [' %s' % x for x in + (app.config.numpydoc_edit_link % v).split("\n")] + + # replace reference numbers so that there are no duplicates + references = [] + for l in lines: + l = l.strip() + if l.startswith('.. ['): + try: + references.append(int(l[len('.. ['):l.index(']')])) + except ValueError: + print("WARNING: invalid reference in %s docstring" % name) + + # Start renaming from the biggest number, otherwise we may + # overwrite references. + references.sort() + if references: + for i, line in enumerate(lines): + for r in references: + new_r = reference_offset[0] + r + lines[i] = lines[i].replace('[%d]_' % r, + '[%d]_' % new_r) + lines[i] = lines[i].replace('.. [%d]' % r, + '.. [%d]' % new_r) + + reference_offset[0] += len(references) + +def mangle_signature(app, what, name, obj, options, sig, retann): + # Do not try to inspect classes that don't define `__init__` + if (inspect.isclass(obj) and + 'initializes x; see ' in pydoc.getdoc(obj.__init__)): + return '', '' + + if not (callable(obj) or hasattr(obj, '__argspec_is_invalid_')): return + if not hasattr(obj, '__doc__'): return + + doc = SphinxDocString(pydoc.getdoc(obj)) + if doc['Signature']: + sig = re.sub("^[^(]*", "", doc['Signature']) + return sig, '' + +def initialize(app): + try: + app.connect('autodoc-process-signature', mangle_signature) + except: + monkeypatch_sphinx_ext_autodoc() + +def setup(app, get_doc_object_=get_doc_object): + global get_doc_object + get_doc_object = get_doc_object_ + + app.connect('autodoc-process-docstring', mangle_docstrings) + app.connect('builder-inited', initialize) + app.add_config_value('numpydoc_edit_link', None, True) + +#------------------------------------------------------------------------------ +# Monkeypatch sphinx.ext.autodoc to accept argspecless autodocs (Sphinx < 0.5) +#------------------------------------------------------------------------------ + +def monkeypatch_sphinx_ext_autodoc(): + global _original_format_signature + import sphinx.ext.autodoc + + if sphinx.ext.autodoc.format_signature is our_format_signature: + return + + print("[numpydoc] Monkeypatching sphinx.ext.autodoc ...") + _original_format_signature = sphinx.ext.autodoc.format_signature + sphinx.ext.autodoc.format_signature = our_format_signature + +def our_format_signature(what, obj): + r = mangle_signature(None, what, None, obj, None, None, None) + if r is not None: + return r[0] + else: + return _original_format_signature(what, obj) diff --git a/doc/sphinxext/numpydoc/plot_directive.py b/doc/sphinxext/numpydoc/plot_directive.py new file mode 100644 index 00000000..be03c357 --- /dev/null +++ b/doc/sphinxext/numpydoc/plot_directive.py @@ -0,0 +1,773 @@ +""" +A directive for including a matplotlib plot in a Sphinx document. + +By default, in HTML output, `plot` will include a .png file with a +link to a high-res .png and .pdf. In LaTeX output, it will include a +.pdf. + +The source code for the plot may be included in one of three ways: + + 1. **A path to a source file** as the argument to the directive:: + + .. plot:: path/to/plot.py + + When a path to a source file is given, the content of the + directive may optionally contain a caption for the plot:: + + .. plot:: path/to/plot.py + + This is the caption for the plot + + Additionally, one my specify the name of a function to call (with + no arguments) immediately after importing the module:: + + .. plot:: path/to/plot.py plot_function1 + + 2. Included as **inline content** to the directive:: + + .. plot:: + + import matplotlib.pyplot as plt + import matplotlib.image as mpimg + import numpy as np + img = mpimg.imread('_static/stinkbug.png') + imgplot = plt.imshow(img) + + 3. Using **doctest** syntax:: + + .. plot:: + A plotting example: + >>> import matplotlib.pyplot as plt + >>> plt.plot([1,2,3], [4,5,6]) + +Options +------- + +The ``plot`` directive supports the following options: + + format : {'python', 'doctest'} + Specify the format of the input + + include-source : bool + Whether to display the source code. The default can be changed + using the `plot_include_source` variable in conf.py + + encoding : str + If this source file is in a non-UTF8 or non-ASCII encoding, + the encoding must be specified using the `:encoding:` option. + The encoding will not be inferred using the ``-*- coding -*-`` + metacomment. + + context : bool + If provided, the code will be run in the context of all + previous plot directives for which the `:context:` option was + specified. This only applies to inline code plot directives, + not those run from files. + + nofigs : bool + If specified, the code block will be run, but no figures will + be inserted. This is usually useful with the ``:context:`` + option. + +Additionally, this directive supports all of the options of the +`image` directive, except for `target` (since plot will add its own +target). These include `alt`, `height`, `width`, `scale`, `align` and +`class`. + +Configuration options +--------------------- + +The plot directive has the following configuration options: + + plot_include_source + Default value for the include-source option + + plot_pre_code + Code that should be executed before each plot. + + plot_basedir + Base directory, to which ``plot::`` file names are relative + to. (If None or empty, file names are relative to the + directoly where the file containing the directive is.) + + plot_formats + File formats to generate. List of tuples or strings:: + + [(suffix, dpi), suffix, ...] + + that determine the file format and the DPI. For entries whose + DPI was omitted, sensible defaults are chosen. + + plot_html_show_formats + Whether to show links to the files in HTML. + + plot_rcparams + A dictionary containing any non-standard rcParams that should + be applied before each plot. + +""" + +import sys, os, glob, shutil, imp, warnings, io, re, textwrap, \ + traceback, exceptions + +from docutils.parsers.rst import directives +from docutils import nodes +from docutils.parsers.rst.directives.images import Image +align = Image.align +import sphinx + +sphinx_version = sphinx.__version__.split(".") +# The split is necessary for sphinx beta versions where the string is +# '6b1' +sphinx_version = tuple([int(re.split('[a-z]', x)[0]) + for x in sphinx_version[:2]]) + +try: + # Sphinx depends on either Jinja or Jinja2 + import jinja2 + def format_template(template, **kw): + return jinja2.Template(template).render(**kw) +except ImportError: + import jinja + def format_template(template, **kw): + return jinja.from_string(template, **kw) + +import matplotlib +import matplotlib.cbook as cbook +matplotlib.use('Agg') +import matplotlib.pyplot as plt +from matplotlib import _pylab_helpers + +__version__ = 2 + +#------------------------------------------------------------------------------ +# Relative pathnames +#------------------------------------------------------------------------------ + +# os.path.relpath is new in Python 2.6 +try: + from os.path import relpath +except ImportError: + # Copied from Python 2.7 + if 'posix' in sys.builtin_module_names: + def relpath(path, start=os.path.curdir): + """Return a relative version of a path""" + from os.path import sep, curdir, join, abspath, commonprefix, \ + pardir + + if not path: + raise ValueError("no path specified") + + start_list = abspath(start).split(sep) + path_list = abspath(path).split(sep) + + # Work out how much of the filepath is shared by start and path. + i = len(commonprefix([start_list, path_list])) + + rel_list = [pardir] * (len(start_list)-i) + path_list[i:] + if not rel_list: + return curdir + return join(*rel_list) + elif 'nt' in sys.builtin_module_names: + def relpath(path, start=os.path.curdir): + """Return a relative version of a path""" + from os.path import sep, curdir, join, abspath, commonprefix, \ + pardir, splitunc + + if not path: + raise ValueError("no path specified") + start_list = abspath(start).split(sep) + path_list = abspath(path).split(sep) + if start_list[0].lower() != path_list[0].lower(): + unc_path, rest = splitunc(path) + unc_start, rest = splitunc(start) + if bool(unc_path) ^ bool(unc_start): + raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" + % (path, start)) + else: + raise ValueError("path is on drive %s, start on drive %s" + % (path_list[0], start_list[0])) + # Work out how much of the filepath is shared by start and path. + for i in range(min(len(start_list), len(path_list))): + if start_list[i].lower() != path_list[i].lower(): + break + else: + i += 1 + + rel_list = [pardir] * (len(start_list)-i) + path_list[i:] + if not rel_list: + return curdir + return join(*rel_list) + else: + raise RuntimeError("Unsupported platform (no relpath available!)") + +#------------------------------------------------------------------------------ +# Registration hook +#------------------------------------------------------------------------------ + +def plot_directive(name, arguments, options, content, lineno, + content_offset, block_text, state, state_machine): + return run(arguments, content, options, state_machine, state, lineno) +plot_directive.__doc__ = __doc__ + +def _option_boolean(arg): + if not arg or not arg.strip(): + # no argument given, assume used as a flag + return True + elif arg.strip().lower() in ('no', '0', 'false'): + return False + elif arg.strip().lower() in ('yes', '1', 'true'): + return True + else: + raise ValueError('"%s" unknown boolean' % arg) + +def _option_format(arg): + return directives.choice(arg, ('python', 'doctest')) + +def _option_align(arg): + return directives.choice(arg, ("top", "middle", "bottom", "left", "center", + "right")) + +def mark_plot_labels(app, document): + """ + To make plots referenceable, we need to move the reference from + the "htmlonly" (or "latexonly") node to the actual figure node + itself. + """ + for name, explicit in document.nametypes.items(): + if not explicit: + continue + labelid = document.nameids[name] + if labelid is None: + continue + node = document.ids[labelid] + if node.tagname in ('html_only', 'latex_only'): + for n in node: + if n.tagname == 'figure': + sectname = name + for c in n: + if c.tagname == 'caption': + sectname = c.astext() + break + + node['ids'].remove(labelid) + node['names'].remove(name) + n['ids'].append(labelid) + n['names'].append(name) + document.settings.env.labels[name] = \ + document.settings.env.docname, labelid, sectname + break + +def setup(app): + setup.app = app + setup.config = app.config + setup.confdir = app.confdir + + options = {'alt': directives.unchanged, + 'height': directives.length_or_unitless, + 'width': directives.length_or_percentage_or_unitless, + 'scale': directives.nonnegative_int, + 'align': _option_align, + 'class': directives.class_option, + 'include-source': _option_boolean, + 'format': _option_format, + 'context': directives.flag, + 'nofigs': directives.flag, + 'encoding': directives.encoding + } + + app.add_directive('plot', plot_directive, True, (0, 2, False), **options) + app.add_config_value('plot_pre_code', None, True) + app.add_config_value('plot_include_source', False, True) + app.add_config_value('plot_formats', ['png', 'hires.png', 'pdf'], True) + app.add_config_value('plot_basedir', None, True) + app.add_config_value('plot_html_show_formats', True, True) + app.add_config_value('plot_rcparams', {}, True) + + app.connect('doctree-read', mark_plot_labels) + +#------------------------------------------------------------------------------ +# Doctest handling +#------------------------------------------------------------------------------ + +def contains_doctest(text): + try: + # check if it's valid Python as-is + compile(text, '', 'exec') + return False + except SyntaxError: + pass + r = re.compile(r'^\s*>>>', re.M) + m = r.search(text) + return bool(m) + +def unescape_doctest(text): + """ + Extract code from a piece of text, which contains either Python code + or doctests. + + """ + if not contains_doctest(text): + return text + + code = "" + for line in text.split("\n"): + m = re.match(r'^\s*(>>>|\.\.\.) (.*)$', line) + if m: + code += m.group(2) + "\n" + elif line.strip(): + code += "# " + line.strip() + "\n" + else: + code += "\n" + return code + +def split_code_at_show(text): + """ + Split code at plt.show() + + """ + + parts = [] + is_doctest = contains_doctest(text) + + part = [] + for line in text.split("\n"): + if (not is_doctest and line.strip() == 'plt.show()') or \ + (is_doctest and line.strip() == '>>> plt.show()'): + part.append(line) + parts.append("\n".join(part)) + part = [] + else: + part.append(line) + if "\n".join(part).strip(): + parts.append("\n".join(part)) + return parts + +#------------------------------------------------------------------------------ +# Template +#------------------------------------------------------------------------------ + + +TEMPLATE = """ +{{ source_code }} + +{{ only_html }} + + {% if source_link or (html_show_formats and not multi_image) %} + ( + {%- if source_link -%} + `Source code <{{ source_link }}>`__ + {%- endif -%} + {%- if html_show_formats and not multi_image -%} + {%- for img in images -%} + {%- for fmt in img.formats -%} + {%- if source_link or not loop.first -%}, {% endif -%} + `{{ fmt }} <{{ dest_dir }}/{{ img.basename }}.{{ fmt }}>`__ + {%- endfor -%} + {%- endfor -%} + {%- endif -%} + ) + {% endif %} + + {% for img in images %} + .. figure:: {{ build_dir }}/{{ img.basename }}.png + {%- for option in options %} + {{ option }} + {% endfor %} + + {% if html_show_formats and multi_image -%} + ( + {%- for fmt in img.formats -%} + {%- if not loop.first -%}, {% endif -%} + `{{ fmt }} <{{ dest_dir }}/{{ img.basename }}.{{ fmt }}>`__ + {%- endfor -%} + ) + {%- endif -%} + + {{ caption }} + {% endfor %} + +{{ only_latex }} + + {% for img in images %} + .. image:: {{ build_dir }}/{{ img.basename }}.pdf + {% endfor %} + +""" + +exception_template = """ +.. htmlonly:: + + [`source code <%(linkdir)s/%(basename)s.py>`__] + +Exception occurred rendering plot. + +""" + +# the context of the plot for all directives specified with the +# :context: option +plot_context = dict() + +class ImageFile: + def __init__(self, basename, dirname): + self.basename = basename + self.dirname = dirname + self.formats = [] + + def filename(self, format): + return os.path.join(self.dirname, "%s.%s" % (self.basename, format)) + + def filenames(self): + return [self.filename(fmt) for fmt in self.formats] + +def out_of_date(original, derived): + """ + Returns True if derivative is out-of-date wrt original, + both of which are full file paths. + """ + return (not os.path.exists(derived) or + (os.path.exists(original) and + os.stat(derived).st_mtime < os.stat(original).st_mtime)) + +class PlotError(RuntimeError): + pass + +def run_code(code, code_path, ns=None, function_name=None): + """ + Import a Python module from a path, and run the function given by + name, if function_name is not None. + """ + + # Change the working directory to the directory of the example, so + # it can get at its data files, if any. Add its path to sys.path + # so it can import any helper modules sitting beside it. + + pwd = os.getcwd() + old_sys_path = list(sys.path) + if code_path is not None: + dirname = os.path.abspath(os.path.dirname(code_path)) + os.chdir(dirname) + sys.path.insert(0, dirname) + + # Redirect stdout + stdout = sys.stdout + sys.stdout = io.StringIO() + + # Reset sys.argv + old_sys_argv = sys.argv + sys.argv = [code_path] + + try: + try: + code = unescape_doctest(code) + if ns is None: + ns = {} + if not ns: + if setup.config.plot_pre_code is None: + exec("import numpy as np\nfrom matplotlib import pyplot as plt\n", ns) + else: + exec(setup.config.plot_pre_code, ns) + if "__main__" in code: + exec("__name__ = '__main__'", ns) + exec(code, ns) + if function_name is not None: + exec(function_name + "()", ns) + except (Exception, SystemExit) as err: + raise PlotError(traceback.format_exc()) + finally: + os.chdir(pwd) + sys.argv = old_sys_argv + sys.path[:] = old_sys_path + sys.stdout = stdout + return ns + +def clear_state(plot_rcparams): + plt.close('all') + matplotlib.rc_file_defaults() + matplotlib.rcParams.update(plot_rcparams) + +def render_figures(code, code_path, output_dir, output_base, context, + function_name, config): + """ + Run a pyplot script and save the low and high res PNGs and a PDF + in outdir. + + Save the images under *output_dir* with file names derived from + *output_base* + """ + # -- Parse format list + default_dpi = {'png': 80, 'hires.png': 200, 'pdf': 200} + formats = [] + plot_formats = config.plot_formats + if isinstance(plot_formats, str): + plot_formats = eval(plot_formats) + for fmt in plot_formats: + if isinstance(fmt, str): + formats.append((fmt, default_dpi.get(fmt, 80))) + elif type(fmt) in (tuple, list) and len(fmt)==2: + formats.append((str(fmt[0]), int(fmt[1]))) + else: + raise PlotError('invalid image format "%r" in plot_formats' % fmt) + + # -- Try to determine if all images already exist + + code_pieces = split_code_at_show(code) + + # Look for single-figure output files first + # Look for single-figure output files first + all_exists = True + img = ImageFile(output_base, output_dir) + for format, dpi in formats: + if out_of_date(code_path, img.filename(format)): + all_exists = False + break + img.formats.append(format) + + if all_exists: + return [(code, [img])] + + # Then look for multi-figure output files + results = [] + all_exists = True + for i, code_piece in enumerate(code_pieces): + images = [] + for j in range(1000): + if len(code_pieces) > 1: + img = ImageFile('%s_%02d_%02d' % (output_base, i, j), output_dir) + else: + img = ImageFile('%s_%02d' % (output_base, j), output_dir) + for format, dpi in formats: + if out_of_date(code_path, img.filename(format)): + all_exists = False + break + img.formats.append(format) + + # assume that if we have one, we have them all + if not all_exists: + all_exists = (j > 0) + break + images.append(img) + if not all_exists: + break + results.append((code_piece, images)) + + if all_exists: + return results + + # We didn't find the files, so build them + + results = [] + if context: + ns = plot_context + else: + ns = {} + + for i, code_piece in enumerate(code_pieces): + if not context: + clear_state(config.plot_rcparams) + run_code(code_piece, code_path, ns, function_name) + + images = [] + fig_managers = _pylab_helpers.Gcf.get_all_fig_managers() + for j, figman in enumerate(fig_managers): + if len(fig_managers) == 1 and len(code_pieces) == 1: + img = ImageFile(output_base, output_dir) + elif len(code_pieces) == 1: + img = ImageFile("%s_%02d" % (output_base, j), output_dir) + else: + img = ImageFile("%s_%02d_%02d" % (output_base, i, j), + output_dir) + images.append(img) + for format, dpi in formats: + try: + figman.canvas.figure.savefig(img.filename(format), dpi=dpi) + except Exception as err: + raise PlotError(traceback.format_exc()) + img.formats.append(format) + + results.append((code_piece, images)) + + if not context: + clear_state(config.plot_rcparams) + + return results + +def run(arguments, content, options, state_machine, state, lineno): + # The user may provide a filename *or* Python code content, but not both + if arguments and content: + raise RuntimeError("plot:: directive can't have both args and content") + + document = state_machine.document + config = document.settings.env.config + nofigs = 'nofigs' in options + + options.setdefault('include-source', config.plot_include_source) + context = 'context' in options + + rst_file = document.attributes['source'] + rst_dir = os.path.dirname(rst_file) + + if len(arguments): + if not config.plot_basedir: + source_file_name = os.path.join(setup.app.builder.srcdir, + directives.uri(arguments[0])) + else: + source_file_name = os.path.join(setup.app.builder.srcdir, config.plot_basedir, + directives.uri(arguments[0])) + + # If there is content, it will be passed as a caption. + caption = '\n'.join(content) + + # If the optional function name is provided, use it + if len(arguments) == 2: + function_name = arguments[1] + else: + function_name = None + + fd = open(source_file_name, 'r') + code = fd.read() + fd.close() + output_base = os.path.basename(source_file_name) + else: + source_file_name = rst_file + code = textwrap.dedent("\n".join(map(str, content))) + counter = document.attributes.get('_plot_counter', 0) + 1 + document.attributes['_plot_counter'] = counter + base, ext = os.path.splitext(os.path.basename(source_file_name)) + output_base = '%s-%d.py' % (base, counter) + function_name = None + caption = '' + + base, source_ext = os.path.splitext(output_base) + if source_ext in ('.py', '.rst', '.txt'): + output_base = base + else: + source_ext = '' + + # ensure that LaTeX includegraphics doesn't choke in foo.bar.pdf filenames + output_base = output_base.replace('.', '-') + + # is it in doctest format? + is_doctest = contains_doctest(code) + if 'format' in options: + if options['format'] == 'python': + is_doctest = False + else: + is_doctest = True + + # determine output directory name fragment + source_rel_name = relpath(source_file_name, setup.app.srcdir) + source_rel_dir = os.path.dirname(source_rel_name) + while source_rel_dir.startswith(os.path.sep): + source_rel_dir = source_rel_dir[1:] + + # build_dir: where to place output files (temporarily) + build_dir = os.path.join(os.path.dirname(setup.app.doctreedir), + 'plot_directive', + source_rel_dir) + # get rid of .. in paths, also changes pathsep + # see note in Python docs for warning about symbolic links on Windows. + # need to compare source and dest paths at end + build_dir = os.path.normpath(build_dir) + + if not os.path.exists(build_dir): + os.makedirs(build_dir) + + # output_dir: final location in the builder's directory + dest_dir = os.path.abspath(os.path.join(setup.app.builder.outdir, + source_rel_dir)) + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) # no problem here for me, but just use built-ins + + # how to link to files from the RST file + dest_dir_link = os.path.join(relpath(setup.app.srcdir, rst_dir), + source_rel_dir).replace(os.path.sep, '/') + build_dir_link = relpath(build_dir, rst_dir).replace(os.path.sep, '/') + source_link = dest_dir_link + '/' + output_base + source_ext + + # make figures + try: + results = render_figures(code, source_file_name, build_dir, output_base, + context, function_name, config) + errors = [] + except PlotError as err: + reporter = state.memo.reporter + sm = reporter.system_message( + 2, "Exception occurred in plotting %s\n from %s:\n%s" % (output_base, + source_file_name, err), + line=lineno) + results = [(code, [])] + errors = [sm] + + # Properly indent the caption + caption = '\n'.join(' ' + line.strip() + for line in caption.split('\n')) + + # generate output restructuredtext + total_lines = [] + for j, (code_piece, images) in enumerate(results): + if options['include-source']: + if is_doctest: + lines = [''] + lines += [row.rstrip() for row in code_piece.split('\n')] + else: + lines = ['.. code-block:: python', ''] + lines += [' %s' % row.rstrip() + for row in code_piece.split('\n')] + source_code = "\n".join(lines) + else: + source_code = "" + + if nofigs: + images = [] + + opts = [':%s: %s' % (key, val) for key, val in list(options.items()) + if key in ('alt', 'height', 'width', 'scale', 'align', 'class')] + + only_html = ".. only:: html" + only_latex = ".. only:: latex" + + if j == 0: + src_link = source_link + else: + src_link = None + + result = format_template( + TEMPLATE, + dest_dir=dest_dir_link, + build_dir=build_dir_link, + source_link=src_link, + multi_image=len(images) > 1, + only_html=only_html, + only_latex=only_latex, + options=opts, + images=images, + source_code=source_code, + html_show_formats=config.plot_html_show_formats, + caption=caption) + + total_lines.extend(result.split("\n")) + total_lines.extend("\n") + + if total_lines: + state_machine.insert_input(total_lines, source=source_file_name) + + # copy image files to builder's output directory, if necessary + if not os.path.exists(dest_dir): + cbook.mkdirs(dest_dir) + + for code_piece, images in results: + for img in images: + for fn in img.filenames(): + destimg = os.path.join(dest_dir, os.path.basename(fn)) + if fn != destimg: + shutil.copyfile(fn, destimg) + + # copy script (if necessary) + #if source_file_name == rst_file: + target_name = os.path.join(dest_dir, output_base + source_ext) + f = open(target_name, 'w') + f.write(unescape_doctest(code)) + f.close() + + return errors diff --git a/doc/sphinxext/triqs_example/triqs_example.py b/doc/sphinxext/triqs_example/triqs_example.py new file mode 100644 index 00000000..2c90ac4c --- /dev/null +++ b/doc/sphinxext/triqs_example/triqs_example.py @@ -0,0 +1,123 @@ +import tempfile +# -*- coding: utf-8 -*- +# seems to be executed at the level of the conf.py +# so we need to link the lib at that place... +""" +""" +import os +import codecs +from os import path +from subprocess import Popen,PIPE +from docutils import nodes +from docutils.parsers.rst import Directive +from docutils.parsers.rst import directives +from sphinx.errors import SphinxError + +class TriqsExampleError(SphinxError): + category = 'triqs_example error' + +class TriqsExampleRun: + #here = os.path.abspath(__file__) + #pycon = os.path.join(os.path.dirname(here),'pycon.py') + config = dict( + ) + @classmethod + def builder_init(cls,app): + #cls.config.update(app.builder.config.autorun_languages) + #cls.config.update(app.builder.config.autocompile_opts) + pass + +class TriqsExample(Directive): + has_content = True + required_arguments = 1 + optional_arguments = 0 + final_argument_whitespace = False + option_spec = { + 'linenos': directives.flag, + } + + def run(self): + document = self.state.document + filename = self.arguments[0] + if not document.settings.file_insertion_enabled: + return [document.reporter.warning('File insertion disabled', + line=self.lineno)] + env = document.settings.env + if filename.startswith('/') or filename.startswith(os.sep): + rel_fn = filename[1:] + else: + docdir = path.dirname(env.doc2path(env.docname, base=None)) + rel_fn = path.normpath(path.join(docdir, filename)) + try: + fn = path.join(env.srcdir, rel_fn) + except UnicodeDecodeError: + # the source directory is a bytestring with non-ASCII characters; + # let's try to encode the rel_fn in the file system encoding + rel_fn = rel_fn.encode(sys.getfilesystemencoding()) + fn = path.join(env.srcdir, rel_fn) + + encoding = self.options.get('encoding', env.config.source_encoding) + try: + f = codecs.open(fn, 'rU', encoding) + lines = f.readlines() + f.close() + except (IOError, OSError): + return [document.reporter.warning( + 'Include file %r not found or reading it failed' % filename, + line=self.lineno)] + except UnicodeError: + return [document.reporter.warning( + 'Encoding %r used for reading included file %r seems to ' + 'be wrong, try giving an :encoding: option' % + (encoding, filename))] + + config = TriqsExampleRun.config + + # Get configuration values for the language + input_encoding = 'utf8' #config.get(language+'_input_encoding','ascii') + output_encoding = 'utf8' #config.get(language+'_output_encoding','ascii') + show_source = True + + # Build the code text + code = ''.join(lines).strip() + filename_clean = filename.rsplit('.',1)[0] + if filename_clean.startswith('./') : filename_clean = filename_clean[2:] + #print "Running the example ....",filename_clean + #print "Root ?", env.doc2path(env.docname, base=None) + + import subprocess as S + error = True + try : + stdout ='' + #resout = S.check_output("./example_bin/doc_%s"%(filename_clean) ,stderr=S.STDOUT,shell=True) + resout = S.check_output("./%s/doc_%s"%(docdir,filename_clean) ,stderr=S.STDOUT,shell=True) + if resout : + stdout = '---------- Result is -------\n' + resout.strip() + error = False + except S.CalledProcessError as E : + stdout ='---------- RunTime error -------\n' + stdout += E.output + + # Process output + if stdout: + stdout = stdout.decode(output_encoding,'ignore') + out = ''.join(stdout).decode(output_encoding) + else: + out = '' #.join(stderr).decode(output_encoding) + + # Get the original code with prefixes + code_out = '\n'.join((code,out)) + + if error : # report on console + print(" Error in processing ") + print(code_out) + + literal = nodes.literal_block(code_out,code_out) + literal['language'] = 'c' + literal['linenos'] = 'linenos' in self.options + return [literal] + +def setup(app): + app.add_directive('triqs_example', TriqsExample) + app.connect('builder-inited',TriqsExampleRun.builder_init) + diff --git a/doc/themes/agogo/layout.html b/doc/themes/agogo/layout.html new file mode 100644 index 00000000..869d76ad --- /dev/null +++ b/doc/themes/agogo/layout.html @@ -0,0 +1,92 @@ +{# + agogo/layout.html + ~~~~~~~~~~~~~~~~~ + + Sphinx layout template for the agogo theme, originally written + by Andi Albrecht. + + :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{% extends "basic/layout.html" %} + +{% block header %} +
+
+ {%- if logo %} + + {%- endif %} + {%- block headertitle %} +

{{ shorttitle|e }}

+ {%- endblock %} +
+ HOME | + {%- for rellink in rellinks %} + {{ rellink[3] }} + {%- if not loop.last %}{{ reldelim2 }}{% endif %} + {%- endfor %} +
+
+
+{% endblock %} + +{% block content %} +
+
+
+ {%- block document %} + {{ super() }} + {%- endblock %} +
+ +
+
+
+{% endblock %} + +{% block footer %} + +{% endblock %} + +{% block relbar1 %}{% endblock %} +{% block relbar2 %}{% endblock %} diff --git a/doc/themes/agogo/static/agogo.css_t b/doc/themes/agogo/static/agogo.css_t new file mode 100644 index 00000000..5e4b0c66 --- /dev/null +++ b/doc/themes/agogo/static/agogo.css_t @@ -0,0 +1,519 @@ +/* + * agogo.css_t + * ~~~~~~~~~~~ + * + * Sphinx stylesheet -- agogo theme. + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +* { + margin: 0px; + padding: 0px; +} + +body { + font-family: {{ theme_bodyfont }}; + font-size: 100%; // TRIQS + line-height: 1.0em; // TRIQS + color: black; + background-color: {{ theme_bgcolor }}; +} + + +/* Page layout */ + +div.header, div.content, div.footer { + width: {{ theme_pagewidth }}; + margin-left: auto; + margin-right: auto; +} + +div.header-wrapper { + background: {{ theme_headerbg }}; + border-bottom: 3px solid #2e3436; +} + + +/* Default body styles */ +a { + color: {{ theme_linkcolor }}; +} + +div.bodywrapper a, div.footer a { + text-decoration: none; // TRIQS +} + +div.bodywrapper a:hover, div.footer a:hover { + text-decoration: underline; // TRIQS +} + +.clearer { + clear: both; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +h1, h2, h3, h4 { + font-family: {{ theme_headerfont }}; + font-weight: normal; + color: {{ theme_headercolor2 }}; + margin-bottom: .8em; +} + +h1 { + color: {{ theme_headercolor1 }}; +} + +h2 { + padding-bottom: .5em; + border-bottom: 1px solid {{ theme_headercolor2 }}; +} + +a.headerlink { + visibility: hidden; + color: #dddddd; + padding-left: .3em; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +img { + border: 0; +} + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 2px 7px 1px 7px; + border-left: 0.2em solid black; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; + color: red; // TRIQS +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +/* Header */ + +div.header { + padding-top: 10px; + padding-bottom: 10px; +} + +div.header h1 { + font-family: {{ theme_headerfont }}; + font-weight: normal; + font-size: 180%; + letter-spacing: .08em; +} + +div.header h1 a { + color: white; +} + +div.header div.rel { + margin-top: -1em; // TRIQS +} + +div.header div.rel a { + color: {{ theme_headerlinkcolor }}; + letter-spacing: .1em; + text-transform: uppercase; +} + +p.logo { + float: right; +} + +img.logo { + border: 0; +} + + +/* Content */ +div.content-wrapper { + background-color: white; + padding-top: 20px; + padding-bottom: 20px; +} + +div.document { + width: {{ theme_documentwidth }}; + float: left; +} + +div.body { + padding-right: 2em; + text-align: {{ theme_textalign }}; +} + +div.document ul { + margin: 1.5em; + list-style-type: square; +} + +div.document dd { + margin-left: 1.2em; + margin-top: .4em; + margin-bottom: 1em; +} + +div.document .section { + margin-top: 1.7em; +} +div.document .section:first-child { + margin-top: 0px; +} + +div.document div.highlight { + line-height: 1.0em; // TRIQS + padding: 3px; + background-color: #eeeeec; + border-top: 2px solid #dddddd; + border-bottom: 2px solid #dddddd; + margin-top: .8em; + margin-bottom: .8em; +} + +div.document h2 { + margin-top: .7em; +} + +div.document p { + margin-bottom: .5em; +} + +div.document li.toctree-l1 { + margin-bottom: 0em; // TRIQS +} +div.document li.toctree-l2 { + margin-bottom: 0em; // TRIQS +} + +div.document .descname { + font-weight: bold; + color: blue; // TRIQS +} + +div.document .docutils.literal { + background-color: #eeeeec; + padding: 1px; +} + +div.document .docutils.xref.literal { + background-color: transparent; + padding: 0px; +} + +div.document blockquote { + margin: 1em; +} + +div.document ol { + margin: 1.5em; +} + + +/* Sidebar */ + +div.sidebar { + width: {{ theme_sidebarwidth }}; + float: right; + font-size: .9em; +} + +div.sidebar a, div.header a { + text-decoration: none; +} + +div.sidebar a:hover, div.header a:hover { + text-decoration: underline; +} + +div.sidebar h3 { + color: #2e3436; + text-transform: uppercase; + font-size: 130%; + letter-spacing: .1em; +} + +div.sidebar ul { + list-style-type: none; +} + +div.sidebar li.toctree-l1 a { + display: block; + padding: 1px; + border: 1px solid #dddddd; + background-color: #eeeeec; + margin-bottom: .4em; + padding-left: 3px; + color: #2e3436; +} + +div.sidebar li.toctree-l2 a { + background-color: transparent; + border: none; + margin-left: 1em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l3 a { + background-color: transparent; + border: none; + margin-left: 2em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l2:last-child a { + border-bottom: none; +} + +div.sidebar li.toctree-l1.current a { + border-right: 5px solid {{ theme_headerlinkcolor }}; +} + +div.sidebar li.toctree-l1.current li.toctree-l2 a { + border-right: none; +} + + +/* Footer */ + +div.footer-wrapper { + background: {{ theme_footerbg }}; + border-top: 4px solid #babdb6; + padding-top: 10px; + padding-bottom: 10px; + min-height: 80px; +} + +div.footer, div.footer a { + color: #888a85; +} + +div.footer .right { + text-align: right; +} + +div.footer .left { + text-transform: uppercase; +} + + +/* Styles copied from basic theme */ + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 100%; +} + +table.contentstable td { + padding: 10px 10px 10px 0; +} + +table.contentstable p.biglink { + line-height: 150%; + text-align: left; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +/* -- viewcode extension ---------------------------------------------------- */ + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family:: {{ theme_bodyfont }}; +} + +div.viewcode-block:target { + margin: -1px -3px; + padding: 0 3px; + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +/* -- added for TRIQS ------------------------------------------------------- */ + +div.warning { + margin: 1em 0 1em 0; + border: 1px solid #86989B; + background-color: lightpink; //#f7f7f7; +} + +div.note { + margin: 1em 0 1em 0; + border: 1px solid #86989B; + background-color: lightcyan; //#f7f7f7; +} + +div.note p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; + color : blue; +} + +div.highlight-python { + margin-top : 5px; + margin-bottom : 7px; + background-color: lightcyan; //#f4debf; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils head { + color : blue; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + diff --git a/doc/themes/agogo/theme.conf b/doc/themes/agogo/theme.conf new file mode 100644 index 00000000..e2108d96 --- /dev/null +++ b/doc/themes/agogo/theme.conf @@ -0,0 +1,20 @@ +[theme] +inherit = basic +stylesheet = agogo.css +pygments_style = tango + +[options] +bodyfont = "Verdana", Arial, sans-serif +headerfont = "Georgia", "Times New Roman", serif +pagewidth = 80% +documentwidth = 75% +sidebarwidth = 22.5% +bgcolor = #eeeeec +headerbg = url(bgtop.png) top left repeat-x +footerbg = url(bgfooter.png) top left repeat-x +linkcolor = #ce5c00 +headercolor1 = #204a87 +headercolor2 = #3465a4 +headerlinkcolor = #fcaf3e +textalign = justify +index = index diff --git a/doc/themes/triqs/layout.html b/doc/themes/triqs/layout.html new file mode 100644 index 00000000..0275e11a --- /dev/null +++ b/doc/themes/triqs/layout.html @@ -0,0 +1,52 @@ +{# + layout.html + ~~~~~~~~~~~ + + TRIQS layout template heavily based on the sphinxdoc theme. + + :copyright: Copyright 2013 by the TRIQS team. + :copyright: Copyright 2007-2013 by the Sphinx team. + :license: BSD, see LICENSE for details. +#} +{%- extends "basic/layout.html" %} + +{# put the sidebar before the body #} +{% block sidebar1 %}{{ sidebar() }}{% endblock %} +{% block sidebar2 %}{% endblock %} + +{% block extrahead %} + + + + +{{ super() }} +{%- if not embedded %} + +{%- endif %} +{% endblock %} + +{% block rootrellink %} +
  • Home »
  • +{% endblock %} + +{% block header %} + +{% endblock %} diff --git a/doc/themes/triqs/static/cufon-yui.js b/doc/themes/triqs/static/cufon-yui.js new file mode 100644 index 00000000..935614e1 --- /dev/null +++ b/doc/themes/triqs/static/cufon-yui.js @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2009 Simo Kinnunen. + * Licensed under the MIT license. + * + * @version 1.09i + */ +var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E0){E=" "+E}}else{if(B400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||JD){D=J}K.push(J)}if(ID){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?ML:(M<=I&&L<=I)?M>L:Mcufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;mO){O=K}if(I>N){N=I}if(K":{"w":232},"?":{"d":"413,-133r0,133r-192,0r0,-133r192,0xm221,-188v-13,-173,78,-281,237,-282r341,0v53,0,80,-24,80,-71v0,-47,-27,-71,-80,-71r-799,0r0,-166r817,-1v141,-1,227,93,227,236v0,149,-87,234,-227,234r-315,0v-67,-1,-99,45,-89,121r-192,0","w":1218},"@":{"d":"305,-388v0,55,25,70,85,70r436,0r0,-146r-439,0v-55,0,-82,25,-82,76xm339,-62v-218,3,-334,-116,-339,-327v-4,-168,93,-282,227,-315v106,-26,574,-16,605,-3v56,23,105,70,105,151r0,316r-579,0v-98,2,-164,-54,-164,-148v0,-106,69,-154,188,-154r444,0v-2,-97,-62,-97,-185,-100v-135,-3,-342,-4,-427,22v-86,26,-136,115,-136,231v0,166,96,250,261,250r483,0r0,77r-483,0","w":1060},"A":{"d":"754,-341v0,-61,-24,-84,-89,-84r-626,0r0,-131r667,0v135,5,215,66,215,217r0,339r-745,0v-108,1,-176,-63,-176,-171v0,-107,69,-171,176,-170r578,0xm754,-131r0,-85r-534,0v-35,0,-53,14,-53,43v0,28,18,42,53,42r534,0","w":1096},"B":{"d":"969,-278v0,176,-93,278,-267,278r-702,0r0,-778r167,0r0,222r535,0v170,-2,267,101,267,278xm794,-278v0,-81,-38,-139,-114,-139r-513,0r0,278r513,0v76,0,114,-58,114,-139","w":1097},"C":{"d":"0,-278v0,-173,94,-278,267,-278r595,0r0,139r-573,0v-76,0,-114,58,-114,139v0,81,38,139,114,139r573,0r0,139r-595,0v-173,1,-267,-105,-267,-278","w":1022},"D":{"d":"0,-278v-1,-176,93,-278,267,-278r521,0r0,-222r167,0r0,778r-688,0v-171,2,-266,-102,-267,-278xm175,-278v0,81,38,139,114,139r499,0r0,-278r-499,0v-76,0,-114,58,-114,139","w":1130},"E":{"d":"176,-216v24,58,48,85,113,85r581,0r0,131r-603,0v-173,1,-267,-105,-267,-278v0,-173,94,-278,267,-278r603,0r0,131r-581,0v-65,4,-87,27,-113,84r694,0r0,125r-694,0","w":1022},"F":{"d":"105,-341v-10,-142,29,-222,167,-222r501,1r0,130r-423,0v-60,-4,-81,31,-78,91r501,-2r0,131r-501,2r0,425r-167,0r0,-425r-105,0r0,-131r105,0","w":906},"G":{"d":"0,-278v0,-173,94,-278,267,-278r770,1r0,571v3,126,-82,208,-203,208r-773,-2r0,-130r743,1v55,0,68,-33,66,-93r-603,0v-173,1,-267,-105,-267,-278xm175,-278v0,81,37,139,114,139r581,-2r0,-275r-581,-1v-76,0,-114,58,-114,139","w":1204},"H":{"d":"735,-359v1,-35,-25,-58,-58,-58r-510,0r0,417r-167,0r0,-778r167,0r0,222r537,0v116,-4,198,68,198,170r0,386r-167,0r0,-359"},"I":{"d":"167,0r-167,0r0,-556r167,0r0,556xm167,-612r-167,0r0,-133r167,0r0,133","w":334},"J":{"d":"743,-612r-167,0r0,-133r167,0r0,133xm743,40v-5,114,-100,182,-221,182r-522,0r0,-139r510,0v44,0,66,-24,66,-73r0,-566r167,0r0,596","w":916},"K":{"d":"767,-481r146,0r0,-77r-146,0r0,77xm1040,-2v25,-199,-69,-334,-263,-334r-610,1r0,-442r-167,0r0,775r167,0r0,-195r588,0v95,-4,128,100,107,195r178,0xm914,-481v0,97,-49,145,-146,145r0,-145r146,0xm767,-481v4,77,-98,149,-175,146r175,0r0,-146","w":1195},"L":{"d":"183,-299v0,80,47,132,132,132r523,0r0,167r-569,0v-174,4,-268,-107,-268,-282r0,-276r182,0r0,259","w":996},"M":{"d":"961,-556v116,-4,197,66,197,170r0,386r-167,0r0,-359v0,-39,-19,-58,-58,-58r-273,0r0,417r-167,0r0,-417r-326,0r0,417r-167,0r0,-556r961,0","w":1312},"N":{"d":"688,-556v116,-4,198,68,198,170r0,386r-167,0r0,-359v0,-39,-19,-58,-58,-58r-494,0r0,417r-167,0r0,-556r688,0","w":1057},"O":{"d":"7,-368v-3,-111,96,-207,207,-207r536,0v112,-3,207,95,207,207r0,162v3,111,-96,207,-207,207r-536,0v-110,3,-207,-97,-207,-207r0,-162xm264,-445v-45,-1,-85,40,-85,85r0,138v-1,45,40,85,85,85r428,0v45,1,85,-40,85,-85r0,-138v1,-45,-40,-85,-85,-85r-428,0","w":1104},"P":{"d":"986,-278v1,176,-93,278,-267,278r-552,0r0,222r-167,0r0,-778r719,0v171,-2,266,102,267,278xm811,-278v0,-81,-38,-139,-114,-139r-530,0r0,278r530,0v76,0,114,-58,114,-139","w":1141},"Q":{"d":"0,-278v-1,-176,93,-278,267,-278r777,2r0,776r-167,0r0,-223r-610,1v-171,2,-266,-102,-267,-278xm175,-278v0,81,38,139,114,139r588,-1r0,-275r-588,-2v-77,0,-114,58,-114,139","w":1211},"R":{"d":"610,-558v134,0,213,83,197,228r-167,0v4,-51,-8,-86,-58,-86r-415,-1r0,417r-167,0r0,-556","w":950},"S":{"d":"913,-170v0,103,-65,170,-175,170r-738,0r0,-131r705,1v37,0,55,-14,55,-43v0,-28,-18,-42,-55,-42r-530,-1v-102,1,-175,-66,-175,-169v0,-101,66,-171,175,-171r708,0r0,131r-675,0v-37,0,-55,14,-55,42v0,28,18,42,55,42r530,1v102,-1,175,67,175,170","w":1039},"T":{"d":"267,-208v1,58,20,77,78,77r425,0r0,131r-504,0v-116,-3,-166,-47,-166,-167r0,-258r-100,0r0,-131r100,0r0,-222r167,0r0,222r503,0r0,131r-503,0r0,217","w":917},"U":{"d":"198,0v-119,6,-198,-71,-198,-170r0,-386r167,0r0,358v0,39,19,59,58,59r506,0r0,-417r167,0r0,556r-700,0"},"V":{"d":"167,-139r564,0r0,-417r167,0r0,556r-898,0r0,-556r167,0r0,417"},"W":{"d":"197,0v-115,4,-197,-68,-197,-170r0,-386r167,0r0,358v0,39,19,59,58,59r273,0r0,-417r167,0r0,417r326,0r0,-417r167,0r0,556r-961,0","w":1323},"X":{"d":"132,-208r646,0r0,-131r-646,0r0,131xm1,-138v-2,-70,61,-133,131,-131r0,131r-131,0xm0,-138r132,0r0,138r-132,0r0,-138xm1,-396v-2,71,61,133,131,131r0,-131r-131,0xm0,-396r132,0r0,-158r-132,0r0,158xm909,-138v2,-70,-61,-133,-131,-131r0,131r131,0xm910,-138r-132,0r0,138r132,0r0,-138xm909,-396v2,71,-61,133,-131,131r0,-131r131,0xm910,-396r-132,0r0,-158r132,0r0,158xm133,-454v-2,62,53,117,115,115r-115,0r0,-115xm133,-94v-2,-62,53,-117,115,-115r-115,0r0,115xm777,-454v2,62,-53,117,-115,115r115,0r0,-115xm778,-93v2,-62,-54,-117,-115,-115r115,0r0,115","w":1017},"Y":{"d":"754,92v53,-1,68,-31,66,-92r-622,0v-119,6,-198,-71,-198,-170r0,-386r167,0r0,336v-1,49,32,82,81,81r572,0r0,-417r167,0r0,576v3,124,-85,207,-204,207r-769,0r0,-135r740,0","w":1169},"Z":{"d":"0,-170v0,101,66,170,175,170r738,0r0,-131r-704,1v-37,0,-56,-14,-56,-43v0,-28,19,-42,56,-42r529,-1v102,1,175,-66,175,-169v0,-102,-66,-171,-175,-171r-707,-2r0,131r674,2v37,0,55,14,55,42v0,28,-18,42,-55,42r-530,1v-102,-1,-175,67,-175,170","w":1039},"[":{"d":"0,-931r306,0r0,153r-153,0r0,778r153,0r0,153r-306,0r0,-1084","w":361},"\\":{"d":"877,0r-692,-778r-185,0r681,778r196,0","w":942},"]":{"w":366},"^":{"w":406},"_":{"d":"0,61r1001,0r0,161r-1001,0r0,-161","w":1172},"`":{"d":"0,-806r94,0r112,111r-95,0","w":261},"a":{"d":"754,-341v0,-61,-24,-84,-89,-84r-626,0r0,-131r667,0v135,5,215,66,215,217r0,339r-745,0v-108,1,-176,-63,-176,-171v0,-107,69,-171,176,-170r578,0xm754,-131r0,-85r-534,0v-35,0,-53,14,-53,43v0,28,18,42,53,42r534,0","w":1096},"b":{"d":"969,-278v0,176,-93,278,-267,278r-702,0r0,-778r167,0r0,222r535,0v170,-2,267,101,267,278xm794,-278v0,-81,-38,-139,-114,-139r-513,0r0,278r513,0v76,0,114,-58,114,-139","w":1097},"c":{"d":"0,-278v0,-173,94,-278,267,-278r595,0r0,139r-573,0v-76,0,-114,58,-114,139v0,81,38,139,114,139r573,0r0,139r-595,0v-173,1,-267,-105,-267,-278","w":1022},"d":{"d":"0,-278v-1,-176,93,-278,267,-278r521,0r0,-222r167,0r0,778r-688,0v-171,2,-266,-102,-267,-278xm175,-278v0,81,38,139,114,139r499,0r0,-278r-499,0v-76,0,-114,58,-114,139","w":1130},"e":{"d":"176,-216v24,58,48,85,113,85r581,0r0,131r-603,0v-173,1,-267,-105,-267,-278v0,-173,94,-278,267,-278r603,0r0,131r-581,0v-65,4,-87,27,-113,84r694,0r0,125r-694,0","w":1022},"f":{"d":"105,-341v-10,-142,29,-222,167,-222r501,1r0,130r-423,0v-60,-4,-81,31,-78,91r501,-2r0,131r-501,2r0,425r-167,0r0,-425r-105,0r0,-131r105,0","w":906},"g":{"d":"0,-278v0,-173,94,-278,267,-278r770,1r0,571v3,126,-82,208,-203,208r-773,-2r0,-130r743,1v55,0,68,-33,66,-93r-603,0v-173,1,-267,-105,-267,-278xm175,-278v0,81,37,139,114,139r581,-2r0,-275r-581,-1v-76,0,-114,58,-114,139","w":1204},"h":{"d":"735,-359v1,-35,-25,-58,-58,-58r-510,0r0,417r-167,0r0,-778r167,0r0,222r537,0v116,-4,198,68,198,170r0,386r-167,0r0,-359"},"i":{"d":"167,0r-167,0r0,-556r167,0r0,556xm167,-612r-167,0r0,-133r167,0r0,133","w":334},"j":{"d":"743,-612r-167,0r0,-133r167,0r0,133xm743,40v-5,114,-100,182,-221,182r-522,0r0,-139r510,0v44,0,66,-24,66,-73r0,-566r167,0r0,596","w":916},"k":{"d":"767,-481r146,0r0,-77r-146,0r0,77xm1040,-2v25,-199,-69,-334,-263,-334r-610,1r0,-442r-167,0r0,775r167,0r0,-195r588,0v95,-4,128,100,107,195r178,0xm914,-481v0,97,-49,145,-146,145r0,-145r146,0xm767,-481v4,77,-98,149,-175,146r175,0r0,-146","w":1195},"l":{"d":"183,-299v0,80,47,132,132,132r523,0r0,167r-569,0v-174,4,-268,-107,-268,-282r0,-276r182,0r0,259","w":996},"m":{"d":"961,-556v116,-4,197,66,197,170r0,386r-167,0r0,-359v0,-39,-19,-58,-58,-58r-273,0r0,417r-167,0r0,-417r-326,0r0,417r-167,0r0,-556r961,0","w":1312},"n":{"d":"688,-556v116,-4,198,68,198,170r0,386r-167,0r0,-359v0,-39,-19,-58,-58,-58r-494,0r0,417r-167,0r0,-556r688,0","w":1057},"o":{"d":"7,-368v-3,-111,96,-207,207,-207r536,0v112,-3,207,95,207,207r0,162v3,111,-96,207,-207,207r-536,0v-110,3,-207,-97,-207,-207r0,-162xm264,-445v-45,-1,-85,40,-85,85r0,138v-1,45,40,85,85,85r428,0v45,1,85,-40,85,-85r0,-138v1,-45,-40,-85,-85,-85r-428,0","w":1104},"p":{"d":"986,-278v1,176,-93,278,-267,278r-552,0r0,222r-167,0r0,-778r719,0v171,-2,266,102,267,278xm811,-278v0,-81,-38,-139,-114,-139r-530,0r0,278r530,0v76,0,114,-58,114,-139","w":1141},"q":{"d":"0,-278v-1,-176,93,-278,267,-278r777,2r0,776r-167,0r0,-223r-610,1v-171,2,-266,-102,-267,-278xm175,-278v0,81,38,139,114,139r588,-1r0,-275r-588,-2v-77,0,-114,58,-114,139","w":1211},"r":{"d":"610,-558v134,0,213,83,197,228r-167,0v4,-51,-8,-86,-58,-86r-415,-1r0,417r-167,0r0,-556","w":950},"s":{"d":"913,-170v0,103,-65,170,-175,170r-738,0r0,-131r705,1v37,0,55,-14,55,-43v0,-28,-18,-42,-55,-42r-530,-1v-102,1,-175,-66,-175,-169v0,-101,66,-171,175,-171r708,0r0,131r-675,0v-37,0,-55,14,-55,42v0,28,18,42,55,42r530,1v102,-1,175,67,175,170","w":1039},"t":{"d":"267,-208v1,58,20,77,78,77r425,0r0,131r-504,0v-116,-3,-166,-47,-166,-167r0,-258r-100,0r0,-131r100,0r0,-222r167,0r0,222r503,0r0,131r-503,0r0,217","w":917},"u":{"d":"198,0v-119,6,-198,-71,-198,-170r0,-386r167,0r0,358v0,39,19,59,58,59r506,0r0,-417r167,0r0,556r-700,0"},"v":{"d":"167,-139r564,0r0,-417r167,0r0,556r-898,0r0,-556r167,0r0,417"},"w":{"d":"197,0v-115,4,-197,-68,-197,-170r0,-386r167,0r0,358v0,39,19,59,58,59r273,0r0,-417r167,0r0,417r326,0r0,-417r167,0r0,556r-961,0","w":1323},"x":{"d":"132,-208r646,0r0,-131r-646,0r0,131xm1,-138v-2,-70,61,-133,131,-131r0,131r-131,0xm0,-138r132,0r0,138r-132,0r0,-138xm1,-396v-2,71,61,133,131,131r0,-131r-131,0xm0,-396r132,0r0,-158r-132,0r0,158xm909,-138v2,-70,-61,-133,-131,-131r0,131r131,0xm910,-138r-132,0r0,138r132,0r0,-138xm909,-396v2,71,-61,133,-131,131r0,-131r131,0xm910,-396r-132,0r0,-158r132,0r0,158xm133,-454v-2,62,53,117,115,115r-115,0r0,-115xm133,-94v-2,-62,53,-117,115,-115r-115,0r0,115xm777,-454v2,62,-53,117,-115,115r115,0r0,-115xm778,-93v2,-62,-54,-117,-115,-115r115,0r0,115","w":1017},"y":{"d":"754,92v53,-1,68,-31,66,-92r-622,0v-119,6,-198,-71,-198,-170r0,-386r167,0r0,336v-1,49,32,82,81,81r572,0r0,-417r167,0r0,576v3,124,-85,207,-204,207r-769,0r0,-135r740,0","w":1169},"z":{"d":"0,-170v0,101,66,170,175,170r738,0r0,-131r-704,1v-37,0,-56,-14,-56,-43v0,-28,19,-42,56,-42r529,-1v102,1,175,-66,175,-169v0,-102,-66,-171,-175,-171r-707,-2r0,131r674,2v37,0,55,14,55,42v0,28,-18,42,-55,42r-530,1v-102,-1,-175,67,-175,170","w":1039},"{":{"d":"0,-466v58,7,98,-17,100,-66v3,-102,-10,-222,10,-308v23,-50,68,-91,143,-91r196,0r0,153r-163,0v-22,0,-33,11,-33,33r0,289v1,35,-29,68,-64,67v36,0,65,30,64,66r0,290v0,22,11,33,33,33r163,0r0,153r-196,0v-87,1,-153,-65,-153,-153r0,-246v-1,-49,-42,-75,-100,-67r0,-153","w":515},"|":{"w":211},"}":{"d":"349,-778v0,-93,-61,-152,-153,-153r-196,0r0,153r163,0v22,0,33,11,33,33r0,289v-1,35,29,68,64,67v-36,0,-65,30,-64,66r0,290v0,22,-11,33,-33,33r-163,0r0,153r196,0v91,0,153,-64,153,-153r0,-246v1,-49,42,-75,100,-67r0,-153v-58,7,-99,-17,-100,-66r0,-246","w":515},"~":{"w":342},"\u0131":{"w":256},"\u00c7":{"w":729},"\u00d6":{"w":1084},"\u00dc":{"w":761},"\u00e7":{"w":578},"\u00f6":{"d":"7,-368v-3,-111,96,-207,207,-207r536,0v112,-3,207,95,207,207r0,162v3,111,-96,207,-207,207r-536,0v-110,3,-207,-97,-207,-207r0,-162xm264,-445v-45,-1,-85,40,-85,85r0,138v-1,45,40,85,85,85r428,0v45,1,85,-40,85,-85r0,-138v1,-45,-40,-85,-85,-85r-428,0xm289,-650r0,-128r379,0r0,128r-379,0","w":1084},"\u00fc":{"d":"198,0v-119,6,-198,-71,-198,-170r0,-386r167,0r0,358v0,39,19,59,58,59r506,0r0,-417r167,0r0,556r-700,0xm284,-650r0,-128r379,0r0,128r-379,0","w":1032},"\u00a0":{"w":668}}}); diff --git a/doc/themes/triqs/static/triqs.css b/doc/themes/triqs/static/triqs.css new file mode 100644 index 00000000..e183cb21 --- /dev/null +++ b/doc/themes/triqs/static/triqs.css @@ -0,0 +1,449 @@ +/* + * sphinx13.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- sphinx13 theme. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + text-align: center; + background-image: url(bodybg.png); + color: black; + padding: 0; + border-right: 1px solid #0a507a; + border-left: 1px solid #0a507a; + + margin: 0 auto; + min-width: 780px; + max-width: 1080px; +} + + +.red{ + color: red +} +.blue{ + color: blue +} +.green{ + color: green +} + +.param{ + color: blue +} + +a.triqs { + color: #073958; + text-decoration: none; +} + +a.triqs:hover { + color: #0a527f; + text-decoration: none; +} + +.pageheader { + background-color: #dcdcdc; + text-align: left; + padding: 10px 15px; + color: #073958; + border: none; +} + +.pageheader ul { + float: right; + color: #073958; + list-style-type: none; + padding-left: 0; + margin-top: 22px; + margin-right: 10px; +} + +.pageheader li { + float: left; + margin: 0 0 0 10px; +} + +.pageheader li a { + padding: 8px 12px; + color: #073958; + text-shadow: none; +} + +.pageheader li a:hover { + background-color: #f9f9f0; + color: #0a507a; + text-shadow: none; +} + +div.document { + background-color: white; + text-align: left; +} + +div.bodywrapper { + margin: 0 240px 0 0; + border-right: 1px solid #0a507a; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} + +div.related { + font-size: 1em; + color: white; +} + +div.related ul { + background-image: url(relbg.png); + height: 1.9em; + border-top: 1px solid #002e50; + border-bottom: 1px solid #002e50; +} + +div.related ul li { + margin: 0 5px 0 0; + padding: 0; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #f9f9f0; + text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5); +} + +div.related ul li a:hover { + color: white; + /*text-decoration: underline;*/ + text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); +} + +div.sphinxsidebarwrapper { + position: relative; + top: 0px; + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + padding: 0 15px 15px 0; + width: 210px; + float: right; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar .logo { + font-size: 1.8em; + color: #0A507A; + font-weight: 300; + text-align: center; +} + +div.sphinxsidebar .logo img { + vertical-align: middle; +} + +div.sphinxsidebar input { + border: 1px solid #aaa; + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 1em; +} + +div.sphinxsidebar h3 { + font-size: 1.5em; + border-top: 1px solid #0a507a; + margin-top: 1em; + margin-bottom: 0.5em; + padding-top: 0.5em; +} + +div.sphinxsidebar h4 { + font-size: 1.2em; + margin-bottom: 0; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin-right: -15px; + margin-left: -15px; + padding-right: 14px; + padding-left: 14px; + color: #333; + font-weight: 300; + /*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/ +} + +div.sphinxsidebarwrapper > h3:first-child { + margin-top: 0.5em; + border: none; +} + +div.sphinxsidebar h3 a { + color: #333; +} + +div.sphinxsidebar ul { + color: #444; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; + list-style-image: url(listitem.png); +} + +div.footer { + background-image: url(footerbg.png); + color: #ccc; + text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8); + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: right; +} + +/* no need to make a visible link to Sphinx on the Sphinx page */ +div.footer a { + color: #ccc; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: #A2881D; + text-decoration: none; +} + +a:hover { + color: #E1C13F; +} + +div.body a { + text-decoration: underline; +} + +h1 { + margin: 10px 0 0 0; + font-size: 2.4em; + color: #0A507A; + font-weight: 300; +} + +h2 { + margin: 1.em 0 0.2em 0; + font-size: 1.5em; + font-weight: 300; + padding: 0; + color: #174967; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.3em; + font-weight: 300; +} + +div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { + text-decoration: none; +} + +div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, div.body h4 a tt, div.body h5 a tt, div.body h6 a tt { + color: #0A507A !important; + font-size: inherit !important; +} + +a.headerlink { + color: #0A507A !important; + font-size: 12px; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none !important; + float: right; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 14px; + letter-spacing: -0.02em; +} + +tt { + background-color: #f2f2f2; + border: 1px solid #ddd; + border-radius: 2px; + color: #333; + padding: 1px; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a tt { + border: 0; + color: #a2881d; +} + +a tt:hover { + color: #e1c13f; +} + +pre { + font-family: 'Consolas', 'DejaVu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 13px; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + border-radius: 2px; + background-color: #f8f8f8; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 0px 7px; + border: 1px solid #ccc; + margin-left: 1em; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition, div.warning { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 1px solid #86989B; + border-radius: 2px; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition p, div.warning p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition pre, div.warning pre { + margin: 0.4em 1em 0.4em 1em; +} + +div.admonition p.admonition-title, +div.warning p.admonition-title { + margin-top: 1em; + padding-top: 0.5em; + font-weight: bold; +} + +div.warning { + border: 1px solid #940000; +/* background-color: #FFCCCF;*/ +} + +div.warning p.admonition-title { +} + +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +div.admonition .highlight, div.warning .highlight { + background-color: #f7f7f7; +} + +.viewcode-back { + font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + + +.my-code-block.std-ref { + color : red; +} + +.cppbrief { + color: #C6792C; + font-style: oblique; +} + +.cppsynopsis { + background-color: #E7EDF9; + /*font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif;*/ + /*font-family: monospace; */ + font-family: Verdana, Arial, Lucida Console; + font-size=80%; + /*font-style: oblique;*/ + /* white-space: pre;*/ +} + + + diff --git a/doc/themes/triqs/theme.conf b/doc/themes/triqs/theme.conf new file mode 100644 index 00000000..96ca439a --- /dev/null +++ b/doc/themes/triqs/theme.conf @@ -0,0 +1,4 @@ +[theme] +inherit = basic +stylesheet = triqs.css +pygments_style = sphinx diff --git a/fortran/dmftproj/CMakeLists.txt b/fortran/dmftproj/CMakeLists.txt index 7e646998..a3d627ef 100644 --- a/fortran/dmftproj/CMakeLists.txt +++ b/fortran/dmftproj/CMakeLists.txt @@ -6,8 +6,7 @@ set(SOURCES modules.f dmftproj.f readcomline.f set_ang_trans.f setsym.f # The main target and what to link with... add_executable(dmftproj ${SOURCES}) -find_package(LAPACK) -target_link_libraries(dmftproj ${LAPACK_LIBRARIES}) +target_link_libraries(dmftproj triqs::blas_lapack) # where to install install (TARGETS dmftproj DESTINATION bin) @@ -17,7 +16,7 @@ SET(D ${CMAKE_CURRENT_SOURCE_DIR}/SRC_templates/) SET(WIEN_SRC_TEMPL_FILES ${D}/case.cf_f_mm2 ${D}/case.cf_p_cubic ${D}/case.indmftpr ${D}/run_triqs ${D}/runsp_triqs) message(STATUS "-----------------------------------------------------------------------------") message(STATUS " ******** WARNING ******** ") -message(STATUS " Wien2k 14.2 and older : after installation of TRIQS, copy the files from ") +message(STATUS " Wien2k 14.2 and older : after installation of DFTTools, copy the files from ") message(STATUS " ${CMAKE_INSTALL_PREFIX}/share/triqs/Wien2k_SRC_files/SRC_templates ") message(STATUS " to your Wien2k installation WIENROOT/SRC_templates (Cf documentation). ") message(STATUS " For newer versions these files are already shipped with Wien2k. ") diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt deleted file mode 100644 index 2ad35566..00000000 --- a/python/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -# where will the python end up in triqs? -set(PYTHON_LIB_DEST ${CPP2PY_PYTHON_LIB_DEST_ROOT}/triqs_dft_tools) - -# site_customize for build -set(package_name "triqs_dft_tools") - -# Create a temporary copy of the python modules so that we can run before installation with the test -FILE(GLOB PYTHON_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py ) -foreach(f ${PYTHON_SOURCES}) - configure_file(${f} ${f} COPYONLY) -endforeach() - -# add version file -configure_file(version.py.in version.py @ONLY) - -# install files -install(FILES ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/version.py DESTINATION ${PYTHON_LIB_DEST}) - -add_subdirectory(converters) diff --git a/python/converters/.gitignore b/python/converters/.gitignore deleted file mode 100644 index 0d20b648..00000000 --- a/python/converters/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/python/converters/CMakeLists.txt b/python/converters/CMakeLists.txt deleted file mode 100644 index 3c719f26..00000000 --- a/python/converters/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# Create a temporary copy of the python modules so that we can run before installation with the test -FILE(GLOB PYTHON_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) -foreach(f ${PYTHON_SOURCES}) - configure_file(${f} ${f} COPYONLY) -endforeach() - -# install files -install(FILES ${PYTHON_SOURCES} DESTINATION ${PYTHON_LIB_DEST}/converters) - -add_subdirectory(plovasp) diff --git a/python/converters/plovasp/CMakeLists.txt b/python/converters/plovasp/CMakeLists.txt deleted file mode 100644 index 9f2fbdaa..00000000 --- a/python/converters/plovasp/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -# === Build and install atm module -add_cpp2py_module(atm) -target_link_libraries(atm atm_c triqs) -target_compile_options(atm PRIVATE -std=c++17) -target_include_directories(atm PRIVATE ${CMAKE_SOURCE_DIR}/c++) - -install(TARGETS atm DESTINATION ${PYTHON_LIB_DEST}/converters/plovasp) - -# === Copy Python files to current build directory and register for install -set(PYTHON_SOURCES __init__.py converter.py elstruct.py inpconf.py plotools.py proj_group.py proj_shell.py sc_dmft.py vaspio.py) -foreach(f ${PYTHON_SOURCES}) - configure_file(${f} ${f} COPYONLY) -endforeach() - -# install files -install(FILES ${PYTHON_SOURCES} DESTINATION ${PYTHON_LIB_DEST}/converters/plovasp) - -# This we need in order for tests to work -#add_custom_command(TARGET atm POST_BUILD COMMAND ln -fs ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}/atm.so ${CMAKE_BINARY_DIR}/python/dft/converters/plovasp) diff --git a/python/triqs_dft_tools/CMakeLists.txt b/python/triqs_dft_tools/CMakeLists.txt new file mode 100644 index 00000000..5de94b6a --- /dev/null +++ b/python/triqs_dft_tools/CMakeLists.txt @@ -0,0 +1,25 @@ +# Configure the version +configure_file(version.py.in version.py) + +# All Python files. Copy them in the build dir to have a complete package for the tests. +file(GLOB_RECURSE python_sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) +file(GLOB_RECURSE wrap_generators RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_desc.py) +list(REMOVE_ITEM python_sources "${wrap_generators}") +foreach(file ${python_sources}) + configure_file(${file} ${file} COPYONLY) +endforeach() + +# Build any python modules +foreach(gen ${wrap_generators}) + string(REPLACE "_desc.py" "" gen ${gen}) + get_filename_component(module_name ${gen} NAME_WE) + get_filename_component(module_dir ${gen} DIRECTORY) + add_cpp2py_module(NAME ${module_name} DIRECTORY ${module_dir}) + target_link_libraries(${module_name} ${PROJECT_NAME}_c triqs_py) +endforeach() + +# Install python modules to proper location +set(PYTHON_LIB_DEST ${TRIQS_PYTHON_LIB_DEST_ROOT}/${PROJECT_NAME}) +get_property(CPP2PY_MODULES_LIST GLOBAL PROPERTY CPP2PY_MODULES_LIST) +install(TARGETS ${CPP2PY_MODULES_LIST} DESTINATION ${PYTHON_LIB_DEST}) +install(FILES ${python_sources} ${CMAKE_CURRENT_BINARY_DIR}/version.py DESTINATION ${PYTHON_LIB_DEST}) diff --git a/python/__init__.py b/python/triqs_dft_tools/__init__.py similarity index 100% rename from python/__init__.py rename to python/triqs_dft_tools/__init__.py diff --git a/python/block_structure.py b/python/triqs_dft_tools/block_structure.py similarity index 100% rename from python/block_structure.py rename to python/triqs_dft_tools/block_structure.py diff --git a/python/clear_h5_output.py b/python/triqs_dft_tools/clear_h5_output.py similarity index 100% rename from python/clear_h5_output.py rename to python/triqs_dft_tools/clear_h5_output.py diff --git a/python/converters/__init__.py b/python/triqs_dft_tools/converters/__init__.py similarity index 100% rename from python/converters/__init__.py rename to python/triqs_dft_tools/converters/__init__.py diff --git a/python/converters/converter_tools.py b/python/triqs_dft_tools/converters/converter_tools.py similarity index 100% rename from python/converters/converter_tools.py rename to python/triqs_dft_tools/converters/converter_tools.py diff --git a/python/converters/hk_converter.py b/python/triqs_dft_tools/converters/hk_converter.py similarity index 100% rename from python/converters/hk_converter.py rename to python/triqs_dft_tools/converters/hk_converter.py diff --git a/python/converters/plovasp/.gitignore b/python/triqs_dft_tools/converters/plovasp/.gitignore similarity index 100% rename from python/converters/plovasp/.gitignore rename to python/triqs_dft_tools/converters/plovasp/.gitignore diff --git a/python/converters/plovasp/__init__.py b/python/triqs_dft_tools/converters/plovasp/__init__.py similarity index 100% rename from python/converters/plovasp/__init__.py rename to python/triqs_dft_tools/converters/plovasp/__init__.py diff --git a/python/converters/plovasp/atm_desc.py b/python/triqs_dft_tools/converters/plovasp/atm_desc.py similarity index 82% rename from python/converters/plovasp/atm_desc.py rename to python/triqs_dft_tools/converters/plovasp/atm_desc.py index 55ff109a..383a98d9 100644 --- a/python/converters/plovasp/atm_desc.py +++ b/python/triqs_dft_tools/converters/plovasp/atm_desc.py @@ -1,5 +1,5 @@ # Generated automatically using the command : -# c++2py.py -m atm -o atm --moduledoc "Analytical Tetrahedron Method for DOS" ../../../c++/plovasp/atm/dos_tetra3d.hpp +# c++2py.py -m atm -o atm --moduledoc "Analytical Tetrahedron Method for DOS" ../../../../c++/triqs_dft_tools/converters/vasp/dos_tetra3d.hpp from cpp2py.wrap_generator import * # The module @@ -8,11 +8,12 @@ module = module_(full_name = "atm", doc = "Analytical Tetrahedron Method for cal # All the triqs C++/Python modules # Add here all includes beyond what is automatically included by the triqs modules -module.add_include("plovasp/atm/dos_tetra3d.hpp") +module.add_include("triqs_dft_tools/converters/vasp/dos_tetra3d.hpp") # Add here anything to add in the C++ code at the start, e.g. namespace using module.add_preamble(""" #include +using namespace triqs::arrays; """) module.add_function ("array dos_tetra_weights_3d (array_view eigk, double en, array_view itt)", doc = """DOS of a band by analytical tetrahedron method\n\n Returns corner weights for all tetrahedra for a given band and real energy.""") diff --git a/python/converters/plovasp/converter.py b/python/triqs_dft_tools/converters/plovasp/converter.py similarity index 100% rename from python/converters/plovasp/converter.py rename to python/triqs_dft_tools/converters/plovasp/converter.py diff --git a/python/converters/plovasp/elstruct.py b/python/triqs_dft_tools/converters/plovasp/elstruct.py similarity index 100% rename from python/converters/plovasp/elstruct.py rename to python/triqs_dft_tools/converters/plovasp/elstruct.py diff --git a/python/converters/plovasp/inpconf.py b/python/triqs_dft_tools/converters/plovasp/inpconf.py similarity index 100% rename from python/converters/plovasp/inpconf.py rename to python/triqs_dft_tools/converters/plovasp/inpconf.py diff --git a/python/converters/plovasp/plotools.py b/python/triqs_dft_tools/converters/plovasp/plotools.py similarity index 100% rename from python/converters/plovasp/plotools.py rename to python/triqs_dft_tools/converters/plovasp/plotools.py diff --git a/python/converters/plovasp/proj_group.py b/python/triqs_dft_tools/converters/plovasp/proj_group.py similarity index 100% rename from python/converters/plovasp/proj_group.py rename to python/triqs_dft_tools/converters/plovasp/proj_group.py diff --git a/python/converters/plovasp/proj_shell.py b/python/triqs_dft_tools/converters/plovasp/proj_shell.py similarity index 98% rename from python/converters/plovasp/proj_shell.py rename to python/triqs_dft_tools/converters/plovasp/proj_shell.py index 73b4c140..f6982fe0 100644 --- a/python/converters/plovasp/proj_shell.py +++ b/python/triqs_dft_tools/converters/plovasp/proj_shell.py @@ -39,12 +39,7 @@ def issue_warning(message): import itertools as it import numpy as np -try: - import atm - atmlib_present = True -except ImportError: - issue_warning("Error importing ATM libray, DOS calculation will fail!") - atmlib_present = False +from . import atm np.set_printoptions(suppress=True) @@ -399,7 +394,6 @@ class ProjectorShell: """ nion, ns, nk, nlm, nbtot = self.proj_win.shape - assert atmlib_present, "ATM library was not imported; cannot calculate DOS" # There is a problem with data storage structure of projectors that will # make life more complicated. The problem is that band-indices of projectors # for different k-points do not match because we store 'nb_max' values starting diff --git a/python/converters/plovasp/sc_dmft.py b/python/triqs_dft_tools/converters/plovasp/sc_dmft.py similarity index 100% rename from python/converters/plovasp/sc_dmft.py rename to python/triqs_dft_tools/converters/plovasp/sc_dmft.py diff --git a/python/converters/plovasp/vaspio.py b/python/triqs_dft_tools/converters/plovasp/vaspio.py similarity index 100% rename from python/converters/plovasp/vaspio.py rename to python/triqs_dft_tools/converters/plovasp/vaspio.py diff --git a/python/converters/vasp_converter.py b/python/triqs_dft_tools/converters/vasp_converter.py similarity index 100% rename from python/converters/vasp_converter.py rename to python/triqs_dft_tools/converters/vasp_converter.py diff --git a/python/converters/wannier90_converter.py b/python/triqs_dft_tools/converters/wannier90_converter.py similarity index 100% rename from python/converters/wannier90_converter.py rename to python/triqs_dft_tools/converters/wannier90_converter.py diff --git a/python/converters/wien2k_converter.py b/python/triqs_dft_tools/converters/wien2k_converter.py similarity index 100% rename from python/converters/wien2k_converter.py rename to python/triqs_dft_tools/converters/wien2k_converter.py diff --git a/python/sumk_dft.py b/python/triqs_dft_tools/sumk_dft.py similarity index 100% rename from python/sumk_dft.py rename to python/triqs_dft_tools/sumk_dft.py diff --git a/python/sumk_dft_tools.py b/python/triqs_dft_tools/sumk_dft_tools.py similarity index 100% rename from python/sumk_dft_tools.py rename to python/triqs_dft_tools/sumk_dft_tools.py diff --git a/python/symmetry.py b/python/triqs_dft_tools/symmetry.py similarity index 100% rename from python/symmetry.py rename to python/triqs_dft_tools/symmetry.py diff --git a/python/trans_basis.py b/python/triqs_dft_tools/trans_basis.py similarity index 100% rename from python/trans_basis.py rename to python/triqs_dft_tools/trans_basis.py diff --git a/python/update_archive.py b/python/triqs_dft_tools/update_archive.py similarity index 100% rename from python/update_archive.py rename to python/triqs_dft_tools/update_archive.py diff --git a/python/version.py.in b/python/triqs_dft_tools/version.py.in similarity index 73% rename from python/version.py.in rename to python/triqs_dft_tools/version.py.in index 489e0617..06a9e558 100644 --- a/python/version.py.in +++ b/python/triqs_dft_tools/version.py.in @@ -3,6 +3,9 @@ # TRIQS: a Toolbox for Research in Interacting Quantum Systems # # Copyright (C) 2011 by M. Aichhorn, L. Pourovskii, V. Vildosola +# Copyright (C) 2016-2018, N. Wentzell +# Copyright (C) 2018-2019, Simons Foundation +# author: N. Wentzell # # TRIQS is free software: you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software @@ -19,12 +22,12 @@ # ################################################################################ -version = "@DFT_TOOLS_VERSION@" +version = "@PROJECT_VERSION@" triqs_hash = "@TRIQS_GIT_HASH@" -dft_tools_hash = "@DFT_TOOLS_GIT_HASH@" +@PROJECT_NAME@_hash = "@PROJECT_GIT_HASH@" def show_version(): - print("\nYou are using the dft_tools version %s\n"%version) + print("\nYou are using @PROJECT_NAME@ version %s\n"%version) def show_git_hash(): - print("\nYou are using the dft_tools git hash %s based on triqs git hash %s\n"%(dft_tools_hash, triqs_hash)) + print("\nYou are using @PROJECT_NAME@ git hash %s based on triqs git hash %s\n"%("@PROJECT_GIT_HASH@", triqs_hash)) diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt new file mode 100644 index 00000000..f6da5199 --- /dev/null +++ b/share/CMakeLists.txt @@ -0,0 +1,28 @@ +add_subdirectory(cmake) + +if(NOT CMAKE_INSTALL_PREFIX STREQUAL TRIQS_ROOT AND NOT IS_SUBPROJECT) + + if(PythonSupport) + set(EXPORT_PYTHON_PATH "export PYTHONPATH=${CMAKE_INSTALL_PREFIX}/${CPP2PY_PYTHON_LIB_DEST_ROOT}:$PYTHONPATH") + set(MODFILE_PYTHON_PATH "prepend-path PYTHONPATH $root/${CPP2PY_PYTHON_LIB_DEST_ROOT}") + endif() + + configure_file(${PROJECT_NAME}.modulefile.in ${PROJECT_NAME}.modulefile @ONLY) + configure_file(${PROJECT_NAME}vars.sh.in ${PROJECT_NAME}vars.sh @ONLY) + + install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.modulefile + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}vars.sh + DESTINATION share + ) + + message(STATUS "***************************************************************") + message(STATUS "* Custom install Location. Use: ") + message(STATUS "* ") + message(STATUS "* source ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}vars.sh ") + message(STATUS "* ") + message(STATUS "* to set up the environment variables ") + message(STATUS "***************************************************************") + +endif() diff --git a/share/cmake/CMakeLists.txt b/share/cmake/CMakeLists.txt new file mode 100644 index 00000000..dad532b3 --- /dev/null +++ b/share/cmake/CMakeLists.txt @@ -0,0 +1,10 @@ +configure_file(${PROJECT_NAME}-config.cmake.in ${PROJECT_NAME}-config.cmake @ONLY) +configure_file(${PROJECT_NAME}-config-version.cmake.in ${PROJECT_NAME}-config-version.cmake @ONLY) +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake + DESTINATION lib/cmake/${PROJECT_NAME} +) + +install(EXPORT ${PROJECT_NAME}-targets NAMESPACE ${PROJECT_NAME}:: DESTINATION lib/cmake/${PROJECT_NAME}) diff --git a/share/cmake/Modules/FindSphinx.cmake b/share/cmake/Modules/FindSphinx.cmake new file mode 100644 index 00000000..b8cc28a8 --- /dev/null +++ b/share/cmake/Modules/FindSphinx.cmake @@ -0,0 +1,37 @@ +# Copyright Olivier Parcollet 2017. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# This module looks for sphinx documentation tool +# and define a function that prepares the Makefile for sphinx-build + +find_program(SPHINXBUILD_EXECUTABLE + NAMES sphinx-build + PATHS /usr/bin /opt/local/bin /usr/local/bin #opt/sphinx-doc/bin + PATH_SUFFIXES bin + ) + +if (NOT SPHINXBUILD_EXECUTABLE) + message(FATAL_ERROR "I cannot find sphinx to build the triqs documentation") +endif() + +execute_process( + COMMAND "${SPHINXBUILD_EXECUTABLE}" --version + OUTPUT_VARIABLE SPHINXBUILD_VERSION + ERROR_VARIABLE SPHINXBUILD_VERSION + ) +if (SPHINXBUILD_VERSION MATCHES "[Ss]phinx.* ([0-9]+\\.[0-9]+(\\.|b)[0-9]+)") + set (SPHINXBUILD_VERSION "${CMAKE_MATCH_1}") +endif() + +if (SPHINXBUILD_VERSION VERSION_EQUAL 1.6.3) + message(FATAL_ERROR "sphinx-build found at ${SPHINXBUILD_EXECUTABLE} but version 1.6.3 has a bug. Upgrade sphinx.") +else() + message(STATUS "sphinx-build program found at ${SPHINXBUILD_EXECUTABLE} with version ${SPHINXBUILD_VERSION}") +endif () + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SPHINX DEFAULT_MSG SPHINXBUILD_EXECUTABLE) + +mark_as_advanced( SPHINXBUILD_EXECUTABLE ) diff --git a/share/cmake/extract_flags.cmake b/share/cmake/extract_flags.cmake new file mode 100644 index 00000000..dfcf67b0 --- /dev/null +++ b/share/cmake/extract_flags.cmake @@ -0,0 +1,102 @@ +################################################################################### +# +# TRIQS: a Toolbox for Research in Interacting Quantum Systems +# +# Copyright (C) 2019-2020 Simons Foundation +# author: N. Wentzell +# +# TRIQS is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# TRIQS. If not, see . +# +################################################################################### + +# Recursively fetch all targets that the interface of a target depends upon +macro(get_all_interface_targets name target) + get_property(TARGET_LINK_LIBRARIES TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES) + foreach(lib IN LISTS TARGET_LINK_LIBRARIES) + if(TARGET ${lib}) + # Append to list + list(APPEND ${name}_INTERFACE_TARGETS ${lib}) + # Recure into target dependencies + get_all_interface_targets(${name} ${lib}) + endif() + endforeach() +endmacro() + +# Extract the property from the target and recursively from all targets it depends upon +macro(get_property_recursive) + cmake_parse_arguments(get_property_recursive "" "TARGET" "PROPERTY" ${ARGN}) + set(target ${get_property_recursive_TARGET}) + set(property ${get_property_recursive_PROPERTY}) + get_all_interface_targets(${target} ${target}) + foreach(t IN LISTS ${target}_INTERFACE_TARGETS ITEMS ${target}) + get_property(p TARGET ${t} PROPERTY ${property}) + list(APPEND ${ARGV0} ${p}) + endforeach() + # Clean duplicates and any occurance of '/usr/include' dirs + if(${ARGV0}) + list(REMOVE_DUPLICATES ${ARGV0}) + list(REMOVE_ITEM ${ARGV0} /usr/include) + endif() +endmacro() + +# Recursively fetch all compiler flags attached to the interface of a target +macro(extract_flags) + + cmake_parse_arguments(ARG "BUILD_INTERFACE" "" "" ${ARGN}) + + set(target ${ARGV0}) + unset(${target}_CXXFLAGS) + unset(${target}_LDFLAGS) + + get_property_recursive(opts TARGET ${target} PROPERTY INTERFACE_COMPILE_OPTIONS) + foreach(opt ${opts}) + set(${target}_LDFLAGS "${${target}_LDFLAGS} ${opt}") + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} ${opt}") + endforeach() + + get_property_recursive(defs TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS) + foreach(def ${defs}) + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -D${def}") + endforeach() + + get_property_recursive(inc_dirs TARGET ${target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES) + get_property_recursive(sys_inc_dirs TARGET ${target} PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) + if(inc_dirs) + list(REMOVE_ITEM sys_inc_dirs ${inc_dirs}) + endif() + foreach(dir ${inc_dirs}) + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -I${dir}") + endforeach() + foreach(dir ${sys_inc_dirs}) + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -isystem${dir}") + endforeach() + + get_property_recursive(libs TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES) + foreach(lib ${libs}) + if(NOT TARGET ${lib} AND NOT IS_DIRECTORY ${lib}) + set(${target}_LDFLAGS "${${target}_LDFLAGS} ${lib}") + endif() + endforeach() + + # We have to replace generator expressions explicitly + if(ARG_BUILD_INTERFACE) + string(REGEX REPLACE "\\$" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE "\\$" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + else() + string(REGEX REPLACE "\\$" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE "\\$" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + endif() + string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") +endmacro() diff --git a/share/cmake/triqs_dft_tools-config-version.cmake.in b/share/cmake/triqs_dft_tools-config-version.cmake.in new file mode 100644 index 00000000..c4c43a4b --- /dev/null +++ b/share/cmake/triqs_dft_tools-config-version.cmake.in @@ -0,0 +1,13 @@ +set(PACKAGE_VERSION @PROJECT_VERSION@) + +if (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) +endif() + +if (PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION) + set(PACKAGE_VERSION_COMPATIBLE TRUE) +endif() + +if (PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/share/cmake/triqs_dft_tools-config.cmake.in b/share/cmake/triqs_dft_tools-config.cmake.in new file mode 100644 index 00000000..e9101328 --- /dev/null +++ b/share/cmake/triqs_dft_tools-config.cmake.in @@ -0,0 +1,32 @@ +# This file allows other CMake Projects to find us +# We provide general project information +# and reestablish the exported CMake Targets + +# Multiple inclusion guard +if(NOT @PROJECT_NAME@_FOUND) +set(@PROJECT_NAME@_FOUND TRUE) +set_property(GLOBAL PROPERTY @PROJECT_NAME@_FOUND TRUE) + +# version +set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@ CACHE STRING "@PROJECT_NAME@ version") +set(@PROJECT_NAME@_GIT_HASH @PROJECT_GIT_HASH@ CACHE STRING "@PROJECT_NAME@ git hash") + +# Root of the installation +set(@PROJECT_NAME@_ROOT @CMAKE_INSTALL_PREFIX@ CACHE STRING "@PROJECT_NAME@ root directory") + +## Find the target dependencies +#include(CMakeFindDependencyMacro) +#find_dependency(... HINTS @CMAKE_INSTALL_PREFIX@) + +# Include the exported targets of this project +include(@CMAKE_INSTALL_PREFIX@/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@-targets.cmake) + +message(STATUS "Found @PROJECT_NAME@-config.cmake with version @PROJECT_VERSION@, hash = @PROJECT_GIT_HASH@") + +# Was the Project built with Documentation? +set(@PROJECT_NAME@_WITH_DOCUMENTATION @Build_Documentation@ CACHE BOOL "Was @PROJECT_NAME@ build with documentation?") + +# Was the Project built with PythonSupport? +set(@PROJECT_NAME@_WITH_PYTHON_SUPPORT @PythonSupport@ CACHE BOOL "Was @PROJECT_NAME@ build with python support?") + +endif() diff --git a/share/replace_and_rename.py b/share/replace_and_rename.py new file mode 100755 index 00000000..b183fb40 --- /dev/null +++ b/share/replace_and_rename.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python2 + +import sys +import os +import glob + +if len(sys.argv) != 2: + print("Please pass the application name") + sys.exit() + +app_name = str(sys.argv[1]).lower() +capital_name = app_name.upper() + +# Move app4triqs directories if necessary +if os.path.isdir("c++/app4triqs"): os.rename("c++/app4triqs", "c++/" + app_name) +if os.path.isdir("python/app4triqs"): os.rename("python/app4triqs", "python/" + app_name) + +# Ignore these files +ignore_lst = [".git/", "replace_and_rename.py", "squash_history.sh"] + +# Find the root directory of app4triqs +app4triqs_root = os.path.abspath(os.path.dirname(__file__) + "/..") + +# Recurse over all subdirectories and files +for root, dirs, files in os.walk(app4triqs_root): + + for fname in files: + fpath = os.path.join(root, fname) + + # Ignore certain files / directories + if any(it in fpath for it in ignore_lst): continue + + if os.path.isfile(fpath): + # Rename files containing app4triqs in their filename + if "app4triqs" in fname: + new_fpath = os.path.join(root, fname.replace("app4triqs", app_name)) + os.rename(fpath, new_fpath) + fpath = new_fpath + + # Replace app4triqs and APP4TRIQS in all files + with open(fpath, 'r') as f: + s = f.read() + if "app4triqs" in s or "APP4TRIQS" in s: + with open(fpath, 'w') as f: + f.write(s.replace("app4triqs", app_name).replace("APP4TRIQS", capital_name)) diff --git a/cmake/sitecustomize.py b/share/sitecustomize.py similarity index 100% rename from cmake/sitecustomize.py rename to share/sitecustomize.py diff --git a/share/squash_history.sh b/share/squash_history.sh new file mode 100755 index 00000000..8c03c08f --- /dev/null +++ b/share/squash_history.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +git reset $(git commit-tree HEAD\^{tree} -m "Initialize project from github.com/triqs/app4triqs@$(git rev-parse --short HEAD)") +git merge --allow-unrelated-histories -s ours HEAD@{1} -m "Track app4triqs skeleton" +git remote rm origin +git remote add app4triqs_remote https://github.com/triqs/app4triqs diff --git a/share/triqs_dft_tools.modulefile.in b/share/triqs_dft_tools.modulefile.in new file mode 100644 index 00000000..2c9befe8 --- /dev/null +++ b/share/triqs_dft_tools.modulefile.in @@ -0,0 +1,39 @@ +#%Module1.0 +# +# To be installed as ${MODULEPATH}/@PROJECT_NAME@/@PROJECT_VERSION@ + +set name @PROJECT_NAME@ +set version @PROJECT_VERSION@ +set root @CMAKE_INSTALL_PREFIX@ +set git_hash @PROJECT_GIT_HASH@ + +set url "https://github.com/TRIQS/@PROJECT_NAME@" +set description "An example application using cpp2py and triqs." + +module-whatis "$description" + +proc ModulesHelp { } { + global description url version git_hash + puts stderr "Description: $description" + puts stderr "URL: $url" + puts stderr "Version: $version" + puts stderr "Git hash: $git_hash" +} + +# You may need to edit the next line if the triqs module +# is installed under a different name in your setup. +prereq triqs/@TRIQS_VERSION@ + +# Only one version of @PROJECT_NAME@ can be loaded at a time +conflict $name + +setenv @PROJECT_NAME@_ROOT $root +setenv @PROJECT_NAME@_VERSION $version +setenv @PROJECT_NAME@_GIT_HASH $git_hash + +prepend-path PATH $root/bin +prepend-path CPLUS_INCLUDE_PATH $root/include +prepend-path LIBRARY_PATH $root/lib +prepend-path LD_LIBRARY_PATH $root/lib +prepend-path CMAKE_PREFIX_PATH $root +@MODFILE_PYTHON_PATH@ diff --git a/share/triqs_dft_toolsvars.sh.in b/share/triqs_dft_toolsvars.sh.in new file mode 100644 index 00000000..492a7a26 --- /dev/null +++ b/share/triqs_dft_toolsvars.sh.in @@ -0,0 +1,10 @@ +# Source this in your environment. + +export @PROJECT_NAME@_ROOT=@CMAKE_INSTALL_PREFIX@ + +export CPLUS_INCLUDE_PATH=@CMAKE_INSTALL_PREFIX@/include:$CPLUS_INCLUDE_PATH +export PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH +export LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:$LIBRARY_PATH +export LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:$LD_LIBRARY_PATH +export CMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@:$CMAKE_PREFIX_PATH +@EXPORT_PYTHON_PATH@ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index dac8f0db..9eaefe3d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,25 +1,6 @@ -# Copy h5 files to binary dir -FILE(GLOB all_h5_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h5) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/${all_h5_files} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -# Copy other files -FILE(COPY SrVO3.pmat SrVO3.struct SrVO3.outputs SrVO3.oubwin SrVO3.ctqmcout SrVO3.symqmc SrVO3.sympar SrVO3.parproj SrIrO3_rot.h5 hk_convert_hamiltonian.hk LaVO3-Pnma_hr.dat LaVO3-Pnma.inp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +add_subdirectory(c++) -# List all tests -set(all_tests wien2k_convert hk_convert w90_convert sumkdft_basic srvo3_Gloc srvo3_transp sigma_from_file blockstructure analyse_block_structure_from_gf analyse_block_structure_from_gf2) - -set(python_executable ${TRIQS_PYTHON_EXECUTABLE}) - -if(TEST_COVERAGE) - set(python_executable ${PYTHON_COVERAGE} run --append --source "${CMAKE_BINARY_DIR}/python") +if(PythonSupport) + add_subdirectory(python) + add_subdirectory(python/plovasp) endif() - -foreach(t ${all_tests}) - add_test(NAME ${t} COMMAND ${python_executable} ${CMAKE_CURRENT_SOURCE_DIR}/${t}.py) -endforeach() - -# Set the PythonPath : put the build dir first (in case there is an installed version). -set_property(TEST ${all_tests} PROPERTY ENVIRONMENT PYTHONPATH=${CMAKE_BINARY_DIR}/python:$ENV{PYTHONPATH} ) - - -# VASP converter tests -add_subdirectory(plovasp) diff --git a/test/c++/CMakeLists.txt b/test/c++/CMakeLists.txt new file mode 100644 index 00000000..071b5fd2 --- /dev/null +++ b/test/c++/CMakeLists.txt @@ -0,0 +1,35 @@ +# Copy h5 files to binary dir +file(GLOB_RECURSE all_h5_ref_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.ref.h5) +foreach(file ${all_h5_ref_files}) + configure_file(${file} ${file} COPYONLY) +endforeach() + +# List of all tests +file(GLOB_RECURSE all_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) + +foreach(test ${all_tests}) + get_filename_component(test_name ${test} NAME_WE) + get_filename_component(test_dir ${test} DIRECTORY) + add_executable(${test_name} ${test}) + target_link_libraries(${test_name} ${PROJECT_NAME}_c gtest_main ${PROJECT_NAME}_warnings) + set_property(TARGET ${test_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${test_dir}) + add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${test_dir}) + # Run clang-tidy if found + if(CLANG_TIDY_EXECUTABLE) + set_target_properties(${test_name} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXECUTABLE}") + endif() + # Run cppcheck if found + if(CPPCHECK_EXECUTABLE) + add_custom_command( + TARGET ${test_name} + COMMAND ${CPPCHECK_EXECUTABLE} + --enable=warning,style,performance,portability + --std=c++17 + --template=gcc + --verbose + --force + --quiet + ${CMAKE_CURRENT_SOURCE_DIR}/${test} + ) + endif() +endforeach() diff --git a/c++/plovasp/atm/test/reorder_flag.cpp b/test/c++/converters/vasp/reorder_flag.cpp similarity index 100% rename from c++/plovasp/atm/test/reorder_flag.cpp rename to test/c++/converters/vasp/reorder_flag.cpp diff --git a/c++/plovasp/atm/test/reorder_inds.cpp b/test/c++/converters/vasp/reorder_inds.cpp similarity index 100% rename from c++/plovasp/atm/test/reorder_inds.cpp rename to test/c++/converters/vasp/reorder_inds.cpp diff --git a/c++/plovasp/atm/test/testing.hpp b/test/c++/converters/vasp/testing.hpp similarity index 100% rename from c++/plovasp/atm/test/testing.hpp rename to test/c++/converters/vasp/testing.hpp diff --git a/c++/plovasp/atm/test/tet_weights.cpp b/test/c++/converters/vasp/tet_weights.cpp similarity index 100% rename from c++/plovasp/atm/test/tet_weights.cpp rename to test/c++/converters/vasp/tet_weights.cpp diff --git a/c++/plovasp/atm/test/weights1.cpp b/test/c++/converters/vasp/weights1.cpp similarity index 100% rename from c++/plovasp/atm/test/weights1.cpp rename to test/c++/converters/vasp/weights1.cpp diff --git a/test/plovasp/.gitignore b/test/plovasp/.gitignore deleted file mode 100644 index 0d20b648..00000000 --- a/test/plovasp/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/test/plovasp/converter/lunio3.out.h5_old b/test/plovasp/converter/lunio3.out.h5_old deleted file mode 100644 index fb77f35c03344aa9bc09eb2bac381cf006506b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372392 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

    F6zw0A@ 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�^u)*wa@L}6qvo~ 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 O1vxt$cmASNRC#!mprW6q zT5UN>8(9+I`Ve?lbl~~It{W(}td;Q<3(LJ$vP02N_5Ayj@2!tf_8TC1!-{i9Le`M2 zg>QCxn4Q8?oLW-Ej_k}Dhb51?AbDjlDkKb9cC6xJqQEAa3XE;%tzI86;9KyzRC4%UN4B$S zulRMKV&Uho3$6aG6uaO@k+Qkutsz6W11> z7*g!`5n;du*W84+(uD9FAJH;$AV9RK+S*lrQrRy_X=hXD#jB34L?6BIFU-p+7VPfJ zD$Kdmwai_p)8P!O(a*b|n?99D%w`q&-X|Y+q``B)chkNBQ<|ruI2X~zh$+?9)45}d zQuP!Q8Ab;!rj|OOg`%Z3+1QO<%6tA|N~*h9YU^&eE~lG9*y|tpp-u&Jd?S7?OC^#- zIATfimp7LE@yFMlYl@j`z@!MiTQZ@Cn3%5uXA`R*DWVpyVv>1k zJz~tUP5Vlo^bmb@2vt~xYKOIa+(4Kb`!xJYwGC6${klTqbWfWxNYa_de?t@#C%Ub} zMUetseR9o3I#4?2$ua%pe%S~#Q58vF4bW^Ni(L`j)bSrZc!#>mDsN_>pWqy-1D)*Ga zfj9^z-P&&UOfLI(!$m0);bz| z%O?Cj?g`KJ#ZC>}n3z*-KSm6v-1YQMg_W!S(qjN<~**{cYV7<0U*# z${zPcE`6wKbNTY2v-M})swy)X5y#gl;?ap}(8rLmvtK5&4x$+z3j$Apj|NIv2u;YX z+{kwh0Qj4q58q)|HNB`ED5CiAp|jXt(QQP8I~Q^f9pxkWFYoMzEo09FH=YJwWtAyU}J&!xG z=+BS8SxB({)=zIEsGf%zVpBY}R2Lt*5eg1PBpt0lKZq#^l#u)XVssu_>k5ZQ-G0f* z=c~rMp$@$T&el2^-{!q0XAPu+r!l2r5)dS4zO}OYCU*MZF8meEaN6o>^*}s|Ti@_C z=SJty0Q(0cQncw-8W9$Jmx>Z=29}?MXxIRZ@=8sYO~j`zo9#AohdSwLKAGM)wpH-p zTd?u5bBkcS-_cs}g&A{&2w!z|&-%GZ3>hqV2katEgLbyy%WN*u6DMniYBN~N=gzel ztOt!DV-fd>EpX}i7IOdznZ5?q=%0cC03A*|6&inU#so5w`ooXrYe|tUYj0a?>LC{! z*M$AXF$TQ&uZXVBlF6*=zc@eQ=numt*fYKT7N@28R_R8(hLG%fFLoTrb351ZHt@S3 z>7oe0Wt0zYncMQHa;~@Q*?4f8Bes+`uqoqfpCqaH4yB1f{blmfp8o5pdV}#s?~9t`=1Ap>(ZUH2;AK*5jR&6FCbGrh zh8tI!6tkjvN3BQpuI)VM`Q)|3r8`PEnH3#vcvYxu65s~FRSqnQMU&lVpKjE-&fMt{ zU>~8tjPn#J-2z`~tt;QYh;pa;!2+~P8(QhlBR-AYKk;zacK2az3k9@s^9yXjlET9U zB<30OPu6STY{BKs9^=-kL&s+l(o*064*MU%kL(b|du{I*qn_mF(KR1>JY&dT;;r$b z>`I=nw1fo9PUF|dM9x6cGj0_j=HWp7D%(kX}=h<=i0yD zm9*V5x3;>OWa&oQf8f77(ynOEO0$>5Y9oQ^rg#FB>!xe=zeueywlBAk_+Ej_XBzJB zt~){V`EWLo^We<0Rc&1+Hym#N6M3*RSbG|@_2cC=B;vM}W8ql1gGLS!>HosSU$wKw z1@l%40FW^(GrI^I{%iAp(&-iE^;CwCg(D`zx`6G=#4Z$9Z8irhypT!Y=fA?I$nx+43 z&h+s#wZAuy&efJ0aNuV`MZrAXYl2T=)*5VzloAW(H=2*g?@nk zVqnsvURD$(ao*+TN|xx`URB1S0UPsckG26=P=k(0Lu!?H-f$Jxg|9DTA646BTPeLHlrB~V8pf)r|5lg<*l=I+g#`o-O7>*Uo z41s1t3HEqv$K6YqqRd7;rAZ8p^6TbCbQZrChdqvMGs8du2lS5nyP$!$@0u^@{UK8H-7gg_>IM z?aK1va!i$%tpBS8f~bvdc{a*6v6wGn9RKFTY5=~gei49Q_1 zeKOPim_yb3k}$O6d6(0JzY|`FV@EYZ*&>Oti!}Q^cOwDHFSr6UD;gBYCHxyGE-G0< zEy7zaww_p?B5Oq|3b-j;KflVwzUGX-+CALUp&E2AwVGD2G9(ZDqU&_|@NKBgNdDI@ z_AvQ7{^Befe)sYwgD*;N?tcZs+>nJcXfgMhi@wJEp@hrs74y04Wl2smy5XA@9oxLx zD9qHt&N8X!69|?WwYb%?ryxa?xRes~5n1Q%QWEZ_b1GerH7lKf`9sag{+9X{=UoLu zgq~pB`{SyX{%9U%IrfXCi)-D7>g^>Vna8S8k##m4Q&sd$2PYZlYj14)w{7O6nz_Re zNfD9rEG%;M(M5)oNvuyr(*bWsRHJCFH0QWHKQtNmYo;{tQwYm?&Gq9ecz}ghXJJt` zO`Gy%#ePP_Q%n!9+8bHAKjRm7(S>MT3oK5EPUqp3P^2Gj*uGhdCu_s&{cOWqOTD7p z!4~`TOKNnl;@efWNynuS&e&FK{%K7$=ea6kDCtwOUPZDe6koUBc3Nx@{W`$cy6$=@ zbp>XiATR1MPrc}MUk=jma``W7+=)5-H{wN_*rX&OP)XLkA0GkhD zWcKlRKoEU&AIQ~zW`?KGK*OQqtV65P>FPJ}fjnQo&{Pzbjf$DWbLYK9)L+sFO`9{( zK&klL=WS2i!)JPHF%`2y?9Sc9rsFG5rB10p(9%=<4SurMOTFF0_qm9lm6HSAb@S@@ zQQsSDxr^PEzOTfDSPt63CQOOWMtw9PuAd%wvsF|`67}C`ByeMjYroerGF@3~5~bM` z)U4Q1M`;sfVbD^+zFv9XKXNCIzLf>wfX6CXsNzc6uNvT(NHr#V7$~A5O8W#^HA}u( zL-CKfF|mgidOO9wzC|rrjv~QKVdTC2t{lxduj_Deb!7Rh=3#jiGm(Z#*#ib9#pCve z<*en@Gb9?3&b`ku!uhbj42!##*0GQPdmc4-Xen7;1;=5Q2kOvqpO?R>D`mu4fZqU} zGjVblzAruwc$>*D1YcU9Cm9Y`-!C3hT6<@-dr>h}HeO0`8p~ot1n3PIPc>IV_v?F) zrdX-^VR^u=TE~Lj8;h^6-JdH2@8@moo#CmvGbvFXh4ctg$0k+h7s2pu{K&3zAws$=)u2YwmuHd*njnpSW?QnR1@Ec z(B*Qf8vIb~HrE>`wM$E~bCcjW<6396I4VV*_2|{B=be4Rt$dc{6XN_F)OII}x-YGL ztT0&AsPEzdo~iBC^}zo6}y%IJIi zaoxMm>U~metiNLZ(l8m^LZ&^6S`!jW>xFs$SoR$Z#^|Ve zew$Z2Lyu-ApszL3IIvm=M>l7i!Apj4c+&-GKUzQ3WMsRvdz~^7J#FuN!n#z;2Il8R z%a#BwJha`ckwC~lSCGNDRx@dI=1cC^XSoih>lWA@mLg zrMHBd&;tY#LMWGewyyQ=eb;;Lde2?wkMrJ>f1a7FXXZEa{XM^#=eJfeA8;M+;`OK@ zlpo*+BK_zEG}Nw{JQo8Od7p;3%+RVYNqk+_G1DE?e@Z(U_mS7Qf+BKB;Drl`B}iAK%A%aw z_LNa3>4l1aryNI;Sfww>SLB_`mf(d4Sl#W7wyqwL2S>5e;7vMT%1OhiDC*-62K8h2 zt-DE5(o@<&ujm;TjNlfEA!5~6=(T6L3tZ-XfU6qUtMif^Qq8T$^5!|+XK8bN4h+e? zeuKr-w6e<@n>xJDQrnNadYjm)Sl^j7?H`=C=z7&g(3`~p!XFwxNlIuzG4@^P!P%S) zH`~qIQZTs8qGVxQdtg!YyN+h8k?V5LOHVgpb4t!-IR`D?eMkzUi>1162KL%CnH}O% z4lN15kHmWfXrAO9QW449E1m2t{K_Y*cNHB2;ChrE%lKpK#o-G}g5)!oQGr5HmW>i> zTl*`~sh6Kl+78xUS5Pj_E2_PJvMcX@a9=x7fGo{I$u3QwL>Z6n z>^qix4!h2q4~;j~fW^Dd&`u{xqes5%(aK%Xrk$0s!xK3b!n_+!`Wjve*Rnc38k5iN zIoCg87~m@ILew2uE9F!#nl)k;BCtrGTwTlgCzk&_?>P;lpP(D0u?mA6x z3FB+8cmF;^?03sn5}M_+m9Pg8c9+wOLR5d0YWOgE-qNF*qL-y*`*8&r`8>k>$CD2I2=5E9>7tM?hksIX} zZKk500(Fb+SdH@oeXP&9PCxygu7E@z>MYNSJ+zeavY7QobvFwAP!G+ z2gqc6xvobm2-^WiRWj8PZvmUMM73$P_8VF%sqb+H$0j%i~N1EegwW6fj%)AB11 zv+O{SVS%k0V-V0Kb|NZsAH!wFw%gR7PM&%)jfy_EjWe>eDRyF*X^3;H& zsquCLanDz!7?x=TyvsLv@%d^eeh0sQssdkuZ111f)7z5;61H>8c5}+^ZM~_&vOYiB zoqy4yl-hgyt!Lu-=Bq64=4$a@y7j~nI_*vmcrFB#?3MQyD~gw8-~C2$2L&MY+c6pr z%Wc;a;|3Sj87IFNzq@pMG^%@rDQs4r<>n{arn4v3uZ+`Nz9EtE-nZ)SnQcrDKU)ot zA5ISQzo1uNYd(sU=f#_ zJ~MBnL@`nb#1tvr=x^@7_-;D0;uKK-hLL}7-q`FwOW~LYqkvS4+gFVzcS-LgPRG)3 ztiG~}7G1hOxG{K#l=3X3v@N_L-@U`O#GFgMI+QVSBD{grWIbSA^gN~lJ!~PK&pj*^ z>1&at7yuz!sp5VUV_NW{;`931pLj9soli}%`m)L9Xt$;i&{bKL`=%xOjK|s?x2dDf zJiu~y#ADXH4Q-IB&+{XsJ2IB5N!LT5_bpUI?YAT?$(hqP!q1(kBR%f@kP}MBW1`|G zL4lk|wr}}jzGirkMP+_RV!*my%E)8+%{64(dRq+B)h|j)<)dJXtv?HI<%-UwRo7#6 z+3z4q8N6qA77dR*rqJvR9_;)sVQ$3|c6DvR%jUo>1tQnpM&&V12ncKJiaH0{T+dDn z?&f}5A1r9f!j;T^xk5cSgj07vVb9mql-C( z8WBdvP<+jEM4O=p&Du|Kb+H~{9Y;XMRALVa6zp5VmT|?9VYwHom=;ygNbfyht6 zIeM{YJNK)md5TP#7!}JbG6gjhgohP;$PalCODW$Z<78XcDbQ{+Z~lM?<-59!+%x6I zi$dYqQqhmz-yL3-Z>4g9zvcHQ1Tq|g*g0d=6x8bAYv1Ff+>mqizB7vgUi6*M#dA;| z5%q7V(pA-09jXMt56O52y(PM|?YU6*K2k&d;{^}yGc=@Rx)(Rk=`I|rh`2K^!vSa6*%03B$ zBdt1O14?}K8NrY6h!{&h&al#2xTn8yfb}{NIs^gS(a@flRw=i2VCl!j*|*7zkz zI~p}|4VvJ6uXlf$JN-tmRP8G3O6)i|-Y#UIB9hHU)A(g>jyB*xOxlZ$U0?L^fkl6Ss{ehm~vso zwIG1rmm#)a(Dub)t@aVyb6HmU53_!5zBZ4(r4}XafwhpJRfF5D?#>++Hg8^hVp35( zdTOAk&EVxXg~)hwHc_?|q`a}XTL2asI=<)VwvSo-4d@ie_BzVXcCQdOT?DGK%ecO# zSh{(OvoKIM0!S(`5~c5kfF{a$RlfTd3d50J+`*e#FhsTZl4|33IaKtpUZ?|A~)3dt`tBG{#@ z^4aZ&rSWYEnvyzrOm|<#Cb+Ch{346WkU)f)jiABU#nRLHZvD{%$K3UtHkR0&Y*xy& z<-UIku75V;TQK%a(rKt11vGKIC1X#fRvhP*;ZA+X?v&3MlATFS=PdV8ozlr_Hxln3 z6f!X08JVVgdNAtSy42sX)XmSRXi2=m<)V>MdldeRgMI-tHdV#`cI@uJ_>s@7J6U(g zFDl#C(iYY;bGm>6NN{E2=#ZeQ(IlB9)8f=K_r>NY&C}dNUU`>pt_i7QQKW|i&*n?vZJ!YU`M|p(82Tck z=B&jfmH0YOj{cR}+YHtGHv~OltqC8GvI2$UPqAcZcz6u@l}xaGsa(nW&A!*6+jF#L z%5LNcNMV0?V$bKI2}l87bVas)pO$ruL+LK}K+#+Gy7HrZWh$gjBju?`_>k9XtwR8= zG`FT}IQ=_XeAbp{K-|7#zjR4ES~_<9*(_ZQ_c9(%-2&<=&y2VRQaV9GtCYGBC3@JLj93TVa}YUiKUh=bVoa?fL43{1eX!v25uLc~YzL z{#r7}NKd!+;Lhgj1>W}sGM)*7eWor@X{BPAj7?sOw#%!>Lp=V;mR?OHOv_5Y%A0rV z9aJZ=mPg>yL$dADth0W--ay$7m56mxW`FxY>P?3mB3?I&Py=ZhjJeih4TC zztYAFsT`EQl?~t9gTDv(Yz;M&nd9`LpEdc?%NrFp?GG6uSNd3;Uy5s<_EQawQ1xO< zE{6!nA*Ckv-z|f4xAzm~3Y?f2t&ty246)ez%R9~tknFbYCT8}{zH`)iQHPWA%LCr@ zB2cI1?ko%BOmv)fK6>#M5p*h1Vj5sw8;x4M;IrhuU^tK%@o?*I(6jJ8IfS*97qF!2 z73g!P#ff2j2x4_#u0%dj(kA@-aOu9>@gig$yrGjtF-tB!QO;GZDdp_Kt}w_M?4dww zDSp6RI#?*H;>{Ckc6@BOsG?C8SMq_Jnz$}@>nvFPJCl(f?}u1LleMoOqQBz|pSh{t zN<4@Nkeh0Ddio7Cv1ub;T}-iiAOw~Lb7frLWxY{*LGRD^t7cXH49 zvG?Y-k79*!>~r`#D(yv%p~A$62*<)5Yp9XgT;)Axqg`2}qD|JD!FdazchA2F_`Z}~ zvLF`N-k7+nr#TNef)BICe7}`n@U>=BYfi;yhiElhJo?1w)5S;Q1-~6BIyV%MEPV3O zUXubIa_Qy_iH9OUIkVfiuS?83|8hG!Zi@;RP-x%l-fOUY)d{;Ik3JVZKBz5J9=h7( zoZUMuognF)Y2=e~-wPNbd&uz>X^M%|m@QtMMy~l(UFurD!IwVok|vn!-Ka&%j-{=h zi2n{O{#-S1k{u>eqI=_<;zy=gyDC8adUqbM$v11Q<|WAUZs zoZMnQ%fFjLUc+&4t4NFKL1Lr$nZF|L@S<+ViTk~ObX}dOHt~Q}4?DS=)+k5qwCdN} zQn`#9V<#qgAySFj(bKb`kkk?4m(s|=7&kGsRMJ;jXsKoW%I%Rg)z{~fo`^S}|42Qj z;YT!+^84Ie_8tq=cR|0}RUwx^2MdZHRGZ4w5YK~I-&eh8cz>ZT;rdcv!s!58!7xK# zO_kLxF+JZ{naZuYdj&XzJHsI0e6pM#oNbxZc&bZ6ewxu^^$a~#t=9(^@KxwDPofK3 zM~9z3!$nxvXeQt1B)oElL+t^-y$cqznY<{$wDOv!=LhAEElYvrWv&X?R*nv&mIDI_ zTL}v&eX4<3^X})t!l;|sA6RWN{C~gCb0J~}oVE75`xv%y+eKF}?6jW=chH`9*~`fE z1+^X*)8OUOjE3kPyR@ijPp_JJQ91lRBku9+wZiL&;FSI2iD~U7_QQkbg$v5Beq@z` z#H=w5IX%j!{flZfZ@EMLGBokGYEjwEtx_SYi!eb30LMMas)E`pG%=Snz&XeT3cnDq zLyvWl-n2M($+#?y$I5T;hr{vRR^zBtwMAX5!0N$l%R$HXk|lgsAH0k8-OfO)snVv$ z{HZ}q2di8MhU~isTb;X>wQIP#E%inJr8ftP?7LXl6wV*Zao~yD&hV?>I9N(tI#}W= z+poy@LdN?w9c&8v?NnG6ui*V!4>pzep@6jmY**kx56eCj<+hB6HI4cc&mKq@ZD+t* zll+PNItT3RWe1_m+dy>v!Q{!vy$JbjAo%uo|MgP`LC_=$2sbt0zkWvffE}c~ADTG7 z1wv)c)%hI4cdg6lTt(}uK9QvT7WghZ@X0_OBJkY7#>xFqSGTb`#H+o7jq{ENT~Pa7 ze}pDg71Q+5pSE`J{P{i!GDHQcmRa1iS=TuTW{%^LWxu9b zdffMGLb0IpP=g`6z8L9eJrBpeE6L}nt7$E#{Z?ZX9=v&n*ng3Nq4-o6x)dEu?)A~P z5MTh6zS26lSv$^&*O9^-O5x3RXz*_AZY|-qKla)N6{X_Gz7~sTsRAV8IBamd%VhW~ zgHWc?e^-RsK#bq*T+P@FJG~nY}j3?cYBFRdT6s1TiZ?{$2 zb?dmQF4YRVhEuPk@8PbH0Xcd20`q0+b>3ZEP8hz)YYU#Nyo(Yd<8ov0Gd8%TPg*3J z(mIN0TSw)Yfdze)+4QFjd~hM;nK4wJI-NW+hb&9d>#v%U}=Uv=Imn>Yvyf!8EwJ(n;R7KT@Q`|qTV4Bwr9Z5O zS?UB+4~dMJL`58P+z1!>1GNLOh?K6QLQ?u_iwFm`Si5_p-cjL5c@hlxP0Ya(1EI`y z-=%Mc73&L^y5`kU*RQW(P~DIWJqP@O%`%;51%8AD0eTWoI_b4h8z_X)yf+JHWcZ;n zqdqQOSx-HkyA5b`MS|WJldgSQuMJMXwDpQkI7z&LvkhQ~Yh7L>fmIdGZ9uaMhHJf= zq-DMg=cvem_gl^Y?zrUc5Ng9s5ZKIg(qr&4oLdYDnz6$7RgO{Rq^Jr~RHeZkRND-Vty)_HA5G4kk3NDlx7q&vVpeVyvo*>LZi`M;eST(Y}&sh)K9=q5^w;2fE%f zhHLUM@uYpy29x1s*PCC-C(s1+F`y#0{y>3rQ;5BxH$G7T06U3E-Qd($N4@kQiXSp< zxzk8!rZ&g}RFEz%i0507n`UPOm>+glJ6-sF1X*aeAI2%+W)ZBM4xKtpd@SM(2obyn zQk%7XNCLA_v(b8S?PIeza_7vKei*+L43L|R#tygB*TTp*(M0r_t#o0lWU>a|b3ho> z&|(4AF1B7y)=a}kwEEx34Q z<#RAeiXx~Lnbx+`o=I;6Of7^ zetonAmQPeB>FE#~u6bIdv0c;Ox0&roo;*b2rfcT;cNQFoZ!GG1qteaNy@|TSsRkHK zLqQ)4Ca%EnFodsSk-iF%#Y`h@*ak-Uk zhkGhvwZQE?{d#;Asc~$z$*qNm37_-y2`TaEguRO>0v>Z-cjrUuXa$npT}| z^dcoJenS@NXOZqarZ&v4V7N1C4qu^GQ`a-;_M4uTZw6OO*OTck@ipvi+SECpF{F|d zQdy%qs_iCqtFi+Lxll#YjG+f?dRazSj0&@r*80Lx4>|lCq z_lt~J@_5Cp2KB~B#!gClW>JR}Rq+rwE9^PWob#TZX;h`(DN5B-oPvllOqg8lgWBfO z3&#nN>$T&FIf3*t!~#Z~cf2j9h+b{J0s%!;lXOb&E;5kA>5aPj$Z2|}ezyemP4Wyx z3RG3ptxZiX0y`^CSqh*Ch~GM7tJg$BAqO}fTPF;YtBH_8!QP?Zgtw&Q3 z)#p1ONmypWQAs@d$f~@4z_l>>FAyIFR$cJR(aE!tUFc(x!1LIErZDd>mwlMg4uE5C zdUT$o!%n67nxh%trnc3;ZFWlHM2Czc1W^n_Nz{6ii6CZo-?d9Vvg?;m1#vZq6STfG zqEGrc0vNYKe>Z91Bwx>$A-x2qhTh77@r*m6n20GA4F+U|_BEx4E+}SbDz(8Rj9E&; z=hCu1I$Al1tMMpVecldtVys(G0FOS0lg7UKPDq#R2Xl({=)4buiFV7lUTvE@8x>s8 z?KDNkGhuDj*35^kaV%_(EkRHHr(4hfH225uxG8?J-L}^BcXM9w#RsV-O`(JlH>*$| zc`qsU(9)i+Dc7((Pun#w`#2wEwU-r52(pjD5E^i*n>?jW{u={VuZLyYiTtXv0sWq@ z!UTL7r;W}O4l+?^A-~SoMQ43zP`=!xW|axkiciUFZXt-rKmizP=F^S4DV!e+aC9I{7f8Am5~g!QLaRP$H_5uJKR9 zG)FJ{WP8aK#jg^QOPbJzZ&O24YCy+9Tbd0za{;iA2pgOzD7CFKy4gvb-9l`RP$kug zHo@qEhgTYcdgkm~BIZDZjvo`~N0CXIU0q=&%8EW;oo`^@h7l$Tz~?k1iN(zrsQ~7585^|r7bO0wb?0m7z`b~g7ZwAROxF2+q=kuQdGi( z_l(xEVIu3f^31L&eLY!(B-p?wIc&v9RR!GNi_L0}+=x-EufC*o91MFs>69U?BzZU42B!*hnq_#BhdjzTDqPRS zJI8xzM({}(lJRvJHXxG1-`fN^o?8|R3e2HgyGMS7V0m2@6&SJXbZN%(T`H0t(FQpI zC%Y-hIWQ%7STbY@3 zrYmtj$zZl#roS79oGB~?y*fu%_kg{iX?XCxp#ApH*777z#>vC>S5y(gx~1&FmcxmS z=P4iDCzO3>3VB|h$=jbo(9Wu@w z0#ennvx1`+A(ua{h-IcCHOk6KzqhTZO&ic-AKGM`gRhunHbR7aM~BpP=xIq$@Eof8 zkbM78_HYX2&i5aXYcGc7Tdvdd+iTP?qJtyQJ2^;`@h89w49i`a6-d)h6|NCTiu?CA zjD*D(Y{WVRS^NzmDNzEtPTfn?e|?|cDpDHtT4z~ohKb&tWQXTbJ>=i|PG}(d5;c_R z{Yj4ai{i`H)`lBj`TbYwFmk?Q#MZ6DtQQL8t67f7ia>hoUZxR3Ub#l1XS0@gAxeWI zCYoQ7FE-0akqnfn@AVk)=vZD`U3F(g+xM#*>+96nCFS)7eP$YGkWsaY&p6rMh>01`G4MgUE ztun4z4tsY_P~LAa)9)YpAwDjbxF!%N#Ty{HDeNlEoHqoUfb5`Ft00Ov$C$gU=vLQC z_1~JTq|QC1+mE)NY>yT9YSfVs4(PU*Q z=L!ws%9a6&8l&n+(*u&z5DlSCT-^+Z3|vK8$Wn-FlKiq@E(X~$o`7f#ZG!6Ju5Iv3 zw?k|S^WTD!mzE6)e)P9hsvoEwAT5n66q}q*QR#!w-f_KRPq|Ic zT(HiN!4Av!+@$9}a^>4%ID=8=uD6q zs;IO$ce*w9?GV7!pt+HWUx)a);Df!&q8q)@_D&UqGU@Uxqu|5#i#`CuT{Bbl4s1m0 z7j$l>!B8m5bi?PY%E#1n<*Bfg@RA=L{7T=%rb)_NukEFZa;KXT!|R4+#MG^Tm@`NIKuKi(L`^;UdGz6bhd$yY{&BSYpFtEq8~@wisB|5r4}A2a)(qi|pSM0ETa$?&g+1UgRm^Z0+==U?{M zdSE{P_x*nP|8KGXytoSamyD}lh`$AoKjP%%Pn6+5`W*jfFTYT@fWz|tZJ(3b{Ns90 zeg@uux6h@m{NXS8)BoS*f0qJ(-RBg3PG4sEkGS}y#;^Fe@$(C*pH}*p|4%FX)BZvf zUHV!7tNE|%#fiVU{A%|LY4rb&5c~b-dhu(e{^QF38v78_kv~*8a^&@2^#7}Vzh*bP z`se%fSHE9*%O>gX`(66k@c8=Q_xmaC5zdXj@AoTSu8{w}-(Sc3Kdt}s;wtH1GOqr4 zdgT9GkHcU+apaFDjNxeIzxDW&9_|0u<4<}F|4ZueE05h=_+uUC{JAgvqj~Iq0vvzk hu~!evzxw};;jnV}v1k0l{-gafA2$EhztCa%KLGga6mkFn literal 0 HcmV?d00001 diff --git a/test/srvo3_transp.py b/test/python/srvo3_transp.py similarity index 100% rename from test/srvo3_transp.py rename to test/python/srvo3_transp.py diff --git a/test/srvo3_transp.ref.h5 b/test/python/srvo3_transp.ref.h5 similarity index 100% rename from test/srvo3_transp.ref.h5 rename to test/python/srvo3_transp.ref.h5 diff --git a/test/sumkdft_basic.py b/test/python/sumkdft_basic.py similarity index 100% rename from test/sumkdft_basic.py rename to test/python/sumkdft_basic.py diff --git a/test/sumkdft_basic.ref.h5 b/test/python/sumkdft_basic.ref.h5 similarity index 100% rename from test/sumkdft_basic.ref.h5 rename to test/python/sumkdft_basic.ref.h5 diff --git a/test/w90_convert.py b/test/python/w90_convert.py similarity index 100% rename from test/w90_convert.py rename to test/python/w90_convert.py diff --git a/test/w90_convert.ref.h5 b/test/python/w90_convert.ref.h5 similarity index 100% rename from test/w90_convert.ref.h5 rename to test/python/w90_convert.ref.h5 diff --git a/test/wien2k_convert.py b/test/python/wien2k_convert.py similarity index 100% rename from test/wien2k_convert.py rename to test/python/wien2k_convert.py diff --git a/test/wien2k_convert.ref.h5 b/test/python/wien2k_convert.ref.h5 similarity index 100% rename from test/wien2k_convert.ref.h5 rename to test/python/wien2k_convert.ref.h5 diff --git a/test/sigma_from_file.ref.h5 b/test/sigma_from_file.ref.h5 deleted file mode 100644 index 7b6688f1ab9e50e8b8074d0c2c2d118b85478e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53696 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 Y()D7*sPy=hpR diff --git a/test/srvo3_Gloc.ref.h5 b/test/srvo3_Gloc.ref.h5 deleted file mode 100644 index d615317ea4b3cb802a99afec63094219cc2622c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150944 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