Op 27/12/2022 om 16:49 schreef Thomas Passin:
On 12/27/2022 8:25 AM, Antoon Pardon wrote:
Op 27/12/2022 om 13:46 schreef Chris Angelico:
On Tue, 27 Dec 2022 at 23:28, Antoon Pardon<antoon.par...@vub.be>
wrote:
At the moment I am happy with a solution that once the programmer has
imported from QYZlib.threaders that module will used as the threading
module.
Oh! If that's all you need, then yes, a simple patch of sys.modules
will work. You'll have to make sure you get your module imported
before anything else pulls up the vanilla one, though. Otherwise, your
only option is to keep the existing module object and monkeypatch it
with whatever changes you need.
But a simple "sys.modules['threading'] = QYZlib.threaders" will work.
Of course, how *well* this works depends also on how well that module
manages to masquerade as the threading module, but I'm sure you've
figured that part out :)
Well it is what will work for the moment. Thanks for the confirmation
this will indeed work.
What you **should not** do is to make other modules use your code when
they think they are using the standard library. Raymond Chen in The
Old New Thing blog often writes about users who want to do a basically
similar thing. He always asks "What if some other program wants to do
the same thing?" One case was when a developer wanted his program's
icon to force itself to be at the top position in the Windows task
bar. "What if another program tried this too?" The two would keep
trying to displace each other at the top position.
If you set the PYTHONPATH environmental variable, you can put any
directory you like to be at the start of the module search path after
the current directory. Perhaps this would be enough for your use case?
But if I put a threading.py file in that directory, it would make other
modules use my code when they "think" they are using the standard library.
The problem is that the logging module uses threading, but doesn't allow
you to specify which threading module to use. So if you want to use an
alternative, you either have to do things like this, or copy the logging
packages into your project and adapt it to use your alternative.
--
https://mail.python.org/mailman/listinfo/python-list