Message ID | 20201210143017.24615-1-congdanhqx@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 59649dd9a805c34369c9bec9947f5c84ff51236b |
Headers | show |
Series | doc: mention Python 3.x supports | expand |
Đoàn Trần Công Danh <congdanhqx@gmail.com> writes: > Commit 0b4396f068, (git-p4: make python2.7 the oldest supported version, > 2019-12-13) pointed out that git-p4 uses Python 2.7-or-later features > in the code. > > In addition, git-p4 gained enough support for Python 3 from > 6cec21a82f, (git-p4: encode/decode communication with p4 for > python3, 2019-12-13). I am not a Perforce user, so with that in mind, please help me make sure I understand the situation well. The statement "not 3.x, which is not supported by Perforce" is from early 2013, and 6cec21a82f talks about the format of marshalled dict object that comes out of p4 (Perforce) tool that needs to be read in a certain way to be compatible with Python3. Does that mean sometime in these 6 years, Perforce started supporting 3.x? The change to INSTALL just drops the mention of 3.x; do we want to specifically say that any version of 3.x is OK, or is it generally accepted that Python 3.x is "later" than "Python 2.7"? > Let's update our documentation to reflect that fact. Thanks. > diff --git a/INSTALL b/INSTALL > index 9ba33e6a14..8474ad01bf 100644 > --- a/INSTALL > +++ b/INSTALL > @@ -165,8 +165,7 @@ Issues of note: > use English. Under autoconf the configure script will do this > automatically if it can't find libintl on the system. > > - - Python version 2.4 or later (but not 3.x, which is not > - supported by Perforce) is needed to use the git-p4 interface > + - Python version 2.7 or later is needed to use the git-p4 interface > to Perforce.
On 2020-12-14 15:00:00-0800, Junio C Hamano <gitster@pobox.com> wrote: Sorry, I didn't receive this email, I found your reply when looking into public-inbox's archive. (I guess it's because of Google global outage). > Đoàn Trần Công Danh <congdanhqx@gmail.com> writes: > > > Commit 0b4396f068, (git-p4: make python2.7 the oldest supported version, > > 2019-12-13) pointed out that git-p4 uses Python 2.7-or-later features > > in the code. > > > > In addition, git-p4 gained enough support for Python 3 from > > 6cec21a82f, (git-p4: encode/decode communication with p4 for > > python3, 2019-12-13). > > I am not a Perforce user, so with that in mind, please help me make > sure I understand the situation well. The statement "not 3.x, which > is not supported by Perforce" is from early 2013, and 6cec21a82f > talks about the format of marshalled dict object that comes out of > p4 (Perforce) tool that needs to be read in a certain way to be > compatible with Python3. Does that mean sometime in these 6 years, > Perforce started supporting 3.x? AFAIK, p4 is an executable binary (in the sense of ELF binaries) from forever. And its {in,out}put is in arbitrary encoding, while Python 3 expects UCS-2 or UCS-4 encoding. 6cec21a82f adds code to decode to Python 3 string to overcome this limitation. Not related, but Perforce's official Python bindings supports Python 3 from at least 2013 [p4r13]. And they still maintain in [PyPI]. That binding requires compiling with Python Development files, though. Anyway, I added Yang Zhao to Cc to clarify. @Yang: Would you please verify what I've said? > The change to INSTALL just drops the mention of 3.x; do we want to > specifically say that any version of 3.x is OK, or is it generally > accepted that Python 3.x is "later" than "Python 2.7"? I think it's generally accepted since there're no Python 2.x version that is "later" than Python 2.7. I haven't check the whole git-p4 but in general, a lot of Python script said support 2.7 AND 3.y with y is a specific number, since some scripts can work with 2.7 and e.g. 3.4+ but not 3.3. I can add them into "INSTALL" if it looks better. p4r13: https://www.perforce.com/perforce/r13.1/manuals/p4script/03_python.html PyPI: https://pypi.org/project/p4python/
On Tue, Dec 15, 2020 at 9:38 AM Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote: > > > Đoàn Trần Công Danh <congdanhqx@gmail.com> writes: > > > > > Commit 0b4396f068, (git-p4: make python2.7 the oldest supported version, > > > 2019-12-13) pointed out that git-p4 uses Python 2.7-or-later features > > > in the code. > > > > > > In addition, git-p4 gained enough support for Python 3 from > > > 6cec21a82f, (git-p4: encode/decode communication with p4 for > > > python3, 2019-12-13). > > > > I am not a Perforce user, so with that in mind, please help me make > > sure I understand the situation well. The statement "not 3.x, which > > is not supported by Perforce" is from early 2013, and 6cec21a82f > > talks about the format of marshalled dict object that comes out of > > p4 (Perforce) tool that needs to be read in a certain way to be > > compatible with Python3. Does that mean sometime in these 6 years, > > Perforce started supporting 3.x? > > AFAIK, p4 is an executable binary (in the sense of ELF binaries) from > forever. And its {in,out}put is in arbitrary encoding, while Python 3 > expects UCS-2 or UCS-4 encoding. 6cec21a82f adds code to decode to > Python 3 string to overcome this limitation. Caveat: I am relying on memory here. I haven't looked at this code since my last round of PRs... Yes, git-p4 use the p4 executable, and not an integration library. p4 has a "serialize for Python" mode which outputs in a python2.7 pickled format, which is still supported by python3, and this is what is used to receive data from the app. > Not related, but Perforce's official Python bindings supports Python 3 > from at least 2013 [p4r13]. And they still maintain in [PyPI]. > That binding requires compiling with Python Development files, though. Compilation from source is only required on the latest version of python3. p4python has wheels on PyPI, but it's consistently a minor version behind. At the moment wheels for 3.8 exist for all major platforms, but not 3.9. > > The change to INSTALL just drops the mention of 3.x; do we want to > > specifically say that any version of 3.x is OK, or is it generally > > accepted that Python 3.x is "later" than "Python 2.7"? Any 3.x is OK, as long as we are staying with interfacing with the p4 executable directly.
Yang Zhao <yang.zhao@skyboxlabs.com> writes: > Caveat: I am relying on memory here. I haven't looked at this code > since my last round of PRs... > > Yes, git-p4 use the p4 executable, and not an integration library. p4 > has a "serialize for Python" mode which outputs in a python2.7 pickled > format, which is still supported by python3, and this is what is used > to receive data from the app. Ah, OK, the mention of "not 3.x" referred to the fact that its pickle output format is native to 2.7, but 3.x can be made to read it (and that is how we can run with 3.x). That makes sense. >> Not related, but Perforce's official Python bindings supports Python 3 >> from at least 2013 [p4r13]. And they still maintain in [PyPI]. >> That binding requires compiling with Python Development files, though. > > Compilation from source is only required on the latest version of > python3. p4python has wheels on PyPI, but it's consistently a minor > version behind. At the moment wheels for 3.8 exist for all major > platforms, but not 3.9. > >> > The change to INSTALL just drops the mention of 3.x; do we want to >> > specifically say that any version of 3.x is OK, or is it generally >> > accepted that Python 3.x is "later" than "Python 2.7"? > > Any 3.x is OK, as long as we are staying with interfacing with the p4 > executable directly. It makes it a lot simpler that we do not have to say anything. So the patch under discussion is good as-is without any tweaks, then. Thanks.
diff --git a/INSTALL b/INSTALL index 9ba33e6a14..8474ad01bf 100644 --- a/INSTALL +++ b/INSTALL @@ -165,8 +165,7 @@ Issues of note: use English. Under autoconf the configure script will do this automatically if it can't find libintl on the system. - - Python version 2.4 or later (but not 3.x, which is not - supported by Perforce) is needed to use the git-p4 interface + - Python version 2.7 or later is needed to use the git-p4 interface to Perforce. - Some platform specific issues are dealt with Makefile rules, diff --git a/Makefile b/Makefile index 6fb86c5862..a751065b24 100644 --- a/Makefile +++ b/Makefile @@ -303,7 +303,7 @@ all:: # modules, instead of the fallbacks shipped with Git. # # Define PYTHON_PATH to the path of your Python binary (often /usr/bin/python -# but /usr/bin/python2.7 on some platforms). +# but /usr/bin/python2.7 or /usr/bin/python3 on some platforms). # # Define NO_PYTHON if you do not want Python scripts or libraries at all. #
Commit 0b4396f068, (git-p4: make python2.7 the oldest supported version, 2019-12-13) pointed out that git-p4 uses Python 2.7-or-later features in the code. In addition, git-p4 gained enough support for Python 3 from 6cec21a82f, (git-p4: encode/decode communication with p4 for python3, 2019-12-13). Let's update our documentation to reflect that fact. Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com> --- INSTALL | 3 +-- Makefile | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-)