Luke Diamand [off-list ref] writes:
On 20 October 2015 at 11:34, Etienne Girard [off-list ref] wrote:
quoted
Hello,
Git-p4 fail when I try to rebase with the error: "NameError: global
name 'ctypes' is not defined". The error occurs when I use python
2.7.2 that is installed by default on my company's computers (it goes
without saying that everything works fine with python 2.7.10).
I'm a beginner in python, but simply importing ctypes at the beginning
of the script does the trick. I was wondering if submitting a patch
for this issue is worth the trouble, when a satisfying solution is not
using a 4 years old version of python.
If you're able to submit a patch that would be great!
Lars's 4d25dc44 (git-p4: check free space during streaming,
2015-09-26) introduced two references to ctypes.* and there is no
'import ctypes' anywhere in the script.
I do not follow Python development, but does the above mean that
with recent 2.x you can say ctypes without first saying "import
ctypes"? It feels somewhat non-pythonesque that identifiers like
this is given to you without you asking with an explicit 'import',
so I am puzzled.
On Tue, Oct 20, 2015 at 6:00 PM, Junio C Hamano [off-list ref] wrote:
Luke Diamand [off-list ref] writes:
quoted
On 20 October 2015 at 11:34, Etienne Girard [off-list ref] wrote:
quoted
Hello,
Git-p4 fail when I try to rebase with the error: "NameError: global
name 'ctypes' is not defined". The error occurs when I use python
2.7.2 that is installed by default on my company's computers (it goes
without saying that everything works fine with python 2.7.10).
I'm a beginner in python, but simply importing ctypes at the beginning
of the script does the trick. I was wondering if submitting a patch
for this issue is worth the trouble, when a satisfying solution is not
using a 4 years old version of python.
If you're able to submit a patch that would be great!
Lars's 4d25dc44 (git-p4: check free space during streaming,
2015-09-26) introduced two references to ctypes.* and there is no
'import ctypes' anywhere in the script.
I do not follow Python development, but does the above mean that
with recent 2.x you can say ctypes without first saying "import
ctypes"?
No.
You need to import the ctypes module.
However in Python it is possible to "inject" the ctypes module (and
any other name) in the builtin namespace.
The builtin module contains names that are accessible without importing them:
https://docs.python.org/2/library/__builtin__.html
IMHO, some code is messing with the __builtin__ module.
Running pyflakes on git-p4.py code I get:
git-p4.py:26: 'zlib' imported but unused
git-p4.py:640: local variable 'v' is assigned to but never used
git-p4.py:2114: local variable 'rhs_index' is assigned to but never used
Running pylint I get a **lot** of warning and style issues; and the
following errors:
E:112,21: Undefined variable 'ctypes' (undefined-variable)
E:113, 8: Undefined variable 'ctypes' (undefined-variable)
E:113,51: Undefined variable 'ctypes' (undefined-variable)
E:113,94: Undefined variable 'ctypes' (undefined-variable)
E:1002,51: No value for argument 'contentFile' in method call
(no-value-for-parameter)
pyflakes is not reporting an error for ctypes.
Whatever the cause, the code must be fixed to import the ctypes module.
P.S.:
Sorry for the double message.
The first message contained an HTML part and was rejected by vger.kernel.org.
Regards Manlio
The ctypes module is used on windows to calculate free disk space, so it
must be imported.
Signed-off-by: Dennis Kaarsemaker <redacted>
---
git-p4.py | 1 +
1 file changed, 1 insertion(+)
On di, 2015-10-20 at 09:00 -0700, Junio C Hamano wrote:
Luke Diamand [off-list ref] writes:
quoted
On 20 October 2015 at 11:34, Etienne Girard <
etienne.g.girard@gmail.com> wrote:
quoted
Hello,
Git-p4 fail when I try to rebase with the error: "NameError:
global
name 'ctypes' is not defined". The error occurs when I use python
2.7.2 that is installed by default on my company's computers (it
goes
without saying that everything works fine with python 2.7.10).
I'm a beginner in python, but simply importing ctypes at the
beginning
of the script does the trick. I was wondering if submitting a
patch
for this issue is worth the trouble, when a satisfying solution
is not
using a 4 years old version of python.
If you're able to submit a patch that would be great!
Lars's (git-p4: check free space during streaming,
2015-09-26) introduced two references to ctypes.* and there is no
'import ctypes' anywhere in the script.
I do not follow Python development, but does the above mean that
with recent 2.x you can say ctypes without first saying "import
ctypes"? It feels somewhat non-pythonesque that identifiers like
this is given to you without you asking with an explicit 'import',
so I am puzzled.
No, you cannot do that. The reason others may not have noticed this bug is that
in git-p4.py, ctypes is only used on windows.
111 if platform.system() == 'Windows':
112 free_bytes = ctypes.c_ulonglong(0)
113 ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(os.getcwd()), None, None, ctypes.pointer(free_bytes))
The fact that it works for the OP with 2.7.10 is puzzling (assuming that it's
on the same system). But this patch should help.
diff --git a/git-p4.py b/git-p4.py
index daa60c6..212ef2b 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -24,6 +24,7 @@ import shutil
import stat
import zipfile
import zlib
+import ctypes
try:
from subprocess import CalledProcessError--
2.6.2-323-g60bd420