On 8. 6. 25 16:45, Nathan Hartman wrote:
On Tue, May 20, 2025 at 8:32 AM <br...@apache.org> wrote:

    Author: brane
    Date: Tue May 20 12:32:49 2025
    New Revision: 1925717

    URL: http://svn.apache.org/viewvc?rev=1925717&view=rev
    <http://svn.apache.org/viewvc?rev=1925717&view=rev>
    Log:
    Add support for verifying the svn command's XML output against the
    Relax NG
    schemas that are defined in ./subversion/svn/schema. We use
    lxml.etree.

    * subversion/tests/cmdline/svntest/main.py: Import venv.
      (venv_bin, venv_dir, SVN_TESTS_REQUIRE, dependencies_ensured:
    New globals.
      (ensure_dependencies): Create a Python virtual environment in
    the test
       working directory, install the dependencies and update sys.path.
      (run_tests): Call ensure_dependencies().
    * subversion/tests/cmdline/svntest/verify.py:
       Import os but not sys, io.BytesIO and typing.Iterable.
      (SVNXMLSchemaValidationError): New exception type.
      (validate_xml_schema): Validate the XML output of 'svn' against
    a schema.
    * subversion/tests/cmdline/svntest/actions.py
      (run_and_verify_svn_xml, run_and_verify_svn_xml2): New functions
    that
       run XML validation.
    * subversion/tests/cmdline/blame_tests.py,
      subversion/tests/cmdline/log_tests.py: Add XML validation
    * build/run_tests.py
      (TestHarness._init_py_tests): Update PYTHONPATH to point at the
    virtualenv.


This:


    * Makefile.in (check): No, Python 2.7 is no longer required.


and...

    Modified:
        subversion/trunk/Makefile.in
        subversion/trunk/build/run_tests.py
        subversion/trunk/subversion/tests/cmdline/blame_tests.py
        subversion/trunk/subversion/tests/cmdline/log_tests.py
    subversion/trunk/subversion/tests/cmdline/svntest/actions.py
    subversion/trunk/subversion/tests/cmdline/svntest/main.py
    subversion/trunk/subversion/tests/cmdline/svntest/verify.py

    Modified: subversion/trunk/Makefile.in
    URL:
    
http://svn.apache.org/viewvc/subversion/trunk/Makefile.in?rev=1925717&r1=1925716&r2=1925717&view=diff
    
<http://svn.apache.org/viewvc/subversion/trunk/Makefile.in?rev=1925717&r1=1925716&r2=1925717&view=diff>
    
==============================================================================
    --- subversion/trunk/Makefile.in (original)
    +++ subversion/trunk/Makefile.in Tue May 20 12:32:49 2025
    @@ -645,7 +645,7 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
                        $$flags                 \
                        '$(abs_srcdir)' '$(abs_builddir)' $(TESTS);   
              \
            else                  \


...this:

    -         echo "make check: Python 2.7 or greater is required,"; 
               \
    +         echo "make check: Python 3.6 or greater is required,"; 
               \
              echo "            but was not detected during
    configure";          \
              exit 1;                 \
            fi;


So I guess that as of 1.15, we'll actively drop support for Python 2.7.x?

That could be a good thing. After all, Python 2.7 has been deprecated for more than 10 years and EOL since before 1.14.0. Removing support for Python 2.7 could help clean up and simplify the Python parts of our codebase.

However, the impression I got from past discussions was that we should try not to break compatibility with 2.7 if practical.

Perhaps it's time to revisit that? Should we just drop support for Python 2.7 everywhere? Are there systems in use out there that are still stuck with Python 2.7? Are there enough of them to justify the extra efforts needed to support them?

As far as I could tell, our test suite already didn't run with 2.7. I picked 3.6 because that's the earliest version that isn't EOL yet.

If we want to support 2.7, someone has to put in the work to actually test that -- because we're not testing this anywhere, and even if we spend a couple days to revert to supporting 2.7, the code will bitrot quickly if it's not used.

At the very least, we should a github workflow that installs 2.7.something (.18? .17?) through pyenv and run with that. Better yet would be an ASF builder that's tied into github where "python2" is available. Should ask infra about that.

-- Brane

Reply via email to