Return a detected version from a setup.py file at `location` if used as in a version argument of the setup() function. Also search for neighbor files for __version__ and common patterns.
(setup_location)
| 2742 | |
| 2743 | |
| 2744 | def detect_version_attribute(setup_location): |
| 2745 | """ |
| 2746 | Return a detected version from a setup.py file at `location` if used as in |
| 2747 | a version argument of the setup() function. |
| 2748 | Also search for neighbor files for __version__ and common patterns. |
| 2749 | """ |
| 2750 | # search for possible dunder versions here and elsewhere |
| 2751 | setup_version_arg = find_setup_py_dunder_version(setup_location) |
| 2752 | setup_py__version = find_dunder_version(setup_location) |
| 2753 | if TRACE: |
| 2754 | logger_debug(' detect_version_attribute():', 'setup_location:', setup_location) |
| 2755 | logger_debug(' find_setup_py_dunder_version(): setup_version_arg:', repr(setup_version_arg),) |
| 2756 | logger_debug(' find_dunder_version(): setup_py__version:', repr(setup_py__version),) |
| 2757 | |
| 2758 | if setup_version_arg == '__version__' and setup_py__version: |
| 2759 | version = setup_py__version or None |
| 2760 | if TRACE: |
| 2761 | logger_debug( |
| 2762 | ' detect_dunder_version:', |
| 2763 | "setup_version_arg == '__version__' and setup_py__version:", version) |
| 2764 | return version |
| 2765 | |
| 2766 | # here we have a more complex __version__ location |
| 2767 | # we start by adding the possible paths and file name |
| 2768 | # and we look at these in sequence |
| 2769 | |
| 2770 | if setup_version_arg and '.' in setup_version_arg: |
| 2771 | segments = setup_version_arg.split('.')[:-1] |
| 2772 | else: |
| 2773 | segments = [] |
| 2774 | |
| 2775 | if TRACE: |
| 2776 | logger_debug(' detect_version_attribute():', 'segments:', segments) |
| 2777 | |
| 2778 | special_names = ( |
| 2779 | '__init__.py', |
| 2780 | '__main__.py', |
| 2781 | '__version__.py', |
| 2782 | '__about__.py', |
| 2783 | '__version.py', |
| 2784 | '_version.py', |
| 2785 | 'version.py', |
| 2786 | 'VERSION.py', |
| 2787 | 'package_data.py', |
| 2788 | ) |
| 2789 | |
| 2790 | setup_py_dir = fileutils.parent_directory(setup_location) |
| 2791 | src_dir = os.path.join(setup_py_dir, 'src') |
| 2792 | has_src = os.path.exists(src_dir) |
| 2793 | if TRACE: |
| 2794 | logger_debug(' detect_version_attribute():', 'src_dir:', src_dir) |
| 2795 | logger_debug(' detect_version_attribute():', 'has_src:', has_src) |
| 2796 | |
| 2797 | candidate_locs = [] |
| 2798 | |
| 2799 | if segments: |
| 2800 | for n in special_names: |
| 2801 | candidate_locs.append(segments + [n]) |
no test coverage detected