why I cannot to install packages?

2022-09-15 Thread נתי שטרן
[image: image.png]
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: why I cannot to install packages?

2022-09-15 Thread Barry Scott


> On 15 Sep 2022, at 12:31, ⁨נתי שטרן⁩ <⁨nsh...@gmail.com⁩> wrote:
> 
> [image: image.png]

Images are stripped; please copy the text of the error you are seeing and post 
that.

Barry

> -- 
> https://mail.python.org/mailman/listinfo/python-list
> 

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Python 3.9.14

2022-09-15 Thread Barry Scott


> On 14 Sep 2022, at 14:03, ⁨אורי⁩ <⁨u...@speedy.net⁩> wrote:
> 
> Hi,
> 
> Python 3.9.14 has been released on Sept. 6, 2022. As I can see written on
> https://www.python.org/downloads/release/python-3914/:
> 
> According to the release calendar specified in PEP 596, Python 3.9 is now
> in the "security fixes only" stage of its life cycle: the 3.9 branch only
> accepts security fixes and releases of those are made irregularly in
> source-only form until October 2025. Python 3.9 isn't receiving regular bug
> fixes anymore, and binary installers are no longer provided for it. Python
> 3.9.13 was the last full bugfix release of Python 3.9 with binary
> installers.
> 
> 
> Is there a safe way to install a 64-bit version of Python 3.9.14 on Windows?

What is stopping you using 3.10?

If 3.9 is important then I guess you will need to build it for yourself.

Barry

> 
> Thanks,
> Uri.
> אורי
> u...@speedy.net
> -- 
> https://mail.python.org/mailman/listinfo/python-list

-- 
https://mail.python.org/mailman/listinfo/python-list


Can you mock a C function using ctypes?

2022-09-15 Thread Grant Edwards
I've done unit testing of C functions using ctypes, and that works
nicely until you need to provide a stub/mock function to be called by
the C code under test.

Can that be done using ctypes?

For example, I open a library that contains functon foo() where foo()
calls external function bar() which is not contained in the library.
Then, I provide a Python bar() function that gets called by foo() when
foo() is called?

I suspect the anser is "no".

I did a bit of googling, and found this question asked on Stack
Overflow a few years ago, but the answer made no sense. It appeared to
be ansering a different question, but I couldn't quite figure out what
that question was.

--
Grant
 
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Can you mock a C function using ctypes?

2022-09-15 Thread Eryk Sun
On 9/15/22, Grant Edwards  wrote:
>
> Can that be done using ctypes?
>
> For example, I open a library that contains functon foo() where foo()
> calls external function bar() which is not contained in the library.
> Then, I provide a Python bar() function that gets called by foo() when
> foo() is called?

That's straight forward if the library allows the application to pass
a function pointer to bar(). ctypes function prototypes are defined by
ctypes.CFUNCTYPE(restype, *argtypes, use_errno=False,
use_last_error=False) for the cdecl calling convention, or similarly
by ctypes.WINFUNCTYPE() to use the Windows stdcall calling convention.
A prototype can be instantiated as a function pointer that calls a
Python function, e.g. c_bar = prototype(bar).
-- 
https://mail.python.org/mailman/listinfo/python-list


Book/resource recommendation about Celery?

2022-09-15 Thread Albert-Jan Roskam
   Hi,
   I'm using Flask + Celery + RabbitMQ. Can anyone recommend a good book or
   other resource about Celery? 
   Thanks!
   Albert-Jan
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Can you mock a C function using ctypes?

2022-09-15 Thread Grant Edwards
On 2022-09-15, Eryk Sun  wrote:
> On 9/15/22, Grant Edwards  wrote:
>>
>> Can that be done using ctypes?
>>
>> For example, I open a library that contains functon foo() where foo()
>> calls external function bar() which is not contained in the library.
>> Then, I provide a Python bar() function that gets called by foo() when
>> foo() is called?
>
> That's straight forward if the library allows the application to pass
> a function pointer to bar().

That's typically not the case.

Does the pointer have to be passed? Or can it be "poked" into a global
variable? If so, I guess it would be fairly trivial to write a dummy
version of bar() in C that calls a function via a global pointer that
could be set via ctypes?

> ctypes function prototypes are defined by ctypes.CFUNCTYPE(restype,
> *argtypes, use_errno=False, use_last_error=False) for the cdecl
> calling convention, or similarly by ctypes.WINFUNCTYPE() to use the
> Windows stdcall calling convention.  A prototype can be instantiated
> as a function pointer that calls a Python function, e.g. c_bar =
> prototype(bar).

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Can you mock a C function using ctypes?

2022-09-15 Thread Eryk Sun
On 9/15/22, Grant Edwards  wrote:
>
> Does the pointer have to be passed? Or can it be "poked" into a global
> variable?

If the library exports the function pointer as a global variable, it
can be set in ctypes using the in_dll() method. Unfortunately, as far
as I know, a ctypes function prototype can't be used directly for
this, at least not easily, since the function pointer it creates
doesn't have a `value` or `contents` attribute to set the target
address. Instead, the exported global can be accessed as a void
pointer. It's clunky, but it works.

For example, Python's REPL supports a callback for reading a line from
the terminal. Normally it's either hooked by a C extension, such as
the readline module, or set to the default function
PyOS_StdioReadline(). We can use a ctypes callback to hook into this
and chain to the previous function.

import ctypes

PyOS_RFP = ctypes.CFUNCTYPE(
ctypes.c_void_p,
ctypes.c_void_p, # stdin (FILE *)
ctypes.c_void_p, # stdout (FILE *)
ctypes.c_char_p, # prompt
)

@PyOS_RFP
def readline_hook(stdin, stdout, prompt):
print('HOOKED: ', end='', flush=True)
return prev_rfp(stdin, stdout, prompt)

rfp_vp = ctypes.c_void_p.in_dll(ctypes.pythonapi,
'PyOS_ReadlineFunctionPointer')

if rfp_vp:
# there's a previous RFP that can be hooked
prev_rfp = ctypes.cast(rfp_vp, PyOS_RFP)
rfp_vp.value = ctypes.cast(readline_hook, ctypes.c_void_p).value

In this trivial example, "HOOKED: " is printed to the terminal before
each line is read:

HOOKED: >>> def f():
HOOKED: ... pass
HOOKED: ...
HOOKED: >>>

Note that I defined the return type of PyOS_RFP to be c_void_p. Using
c_char_p as the return type would convert the result to a bytes
object, which is wrong in this case. If the setfunc of the callback's
return type has to keep a reference to a converted Python object, such
as a bytes object, then the callback has no choice but to leak the
reference in order to keep the object alive indefinitely, which
usually causes a memory leak.
-- 
https://mail.python.org/mailman/listinfo/python-list