Open sylvorg opened 9 months ago
Hi @sylvorg,
Can you post the output of pip --list
?
but when looking through the output of dir(py) right before ff = py.process.ForkedFunc(runforked), py does indeed seem to have process
How are you verifying this, using a debugger? If so, see if you can get the file path of py
: I suspect it might be resolving to pytest's internal py
shim, instead of the installed py
package.
Can you post the output of
pip --list
?
I'm actually using a nix-shell
for this, so I'm not quite sure how to do that, unfortunately.
How are you verifying this...
I forked the repository and added a raise ValueError(dir(py))
right before the line; should I do that again with py.__file__
or similar?
I'm actually using a nix-shell for this, so I'm not quite sure how to do that, unfortunately.
Are you executing this with a virtualenv active? If not can you detail how?
I forked the repository and added a raise ValueError(dir(py)) right before the line; should I do that again with py.file or similar?
Yes.
Are you executing this with a virtualenv active? If not can you detail how?
Sorry, my setup is a little complicated with a lot of interlinking functions, so could you give me an example of what exactly you need, like the packages in the shell, the command I'm using the run it, etc. ?
As for the py
module, I'm getting /nix/store/lgz5z1nv7q9x82blqnqhmrxp3hfmh6gj-python3.11-py-1.11.0/lib/python3.11/site-packages/py/__init__.py
as the path, and the following as the contents:
"""
pylib: rapid testing and development utils
this module uses apipkg.py for lazy-loading sub modules
and classes. The initpkg-dictionary below specifies
name->value mappings where value can be another namespace
dictionary or an import path.
(c) Holger Krekel and others, 2004-2014
"""
from py._error import error
try:
from py._vendored_packages import apipkg
lib_not_mangled_by_packagers = True
vendor_prefix = '._vendored_packages.'
except ImportError:
import apipkg
lib_not_mangled_by_packagers = False
vendor_prefix = ''
try:
from ._version import version as __version__
except ImportError:
# broken installation, we don't even try
__version__ = "unknown"
apipkg.initpkg(__name__, attr={'_apipkg': apipkg, 'error': error}, exportdefs={
# access to all standard lib modules
'std': '._std:std',
'_pydir' : '.__metainfo:pydir',
'version': 'py:__version__', # backward compatibility
# pytest-2.0 has a flat namespace, we use alias modules
# to keep old references compatible
'test' : 'pytest',
# hook into the top-level standard library
'process' : {
'__doc__' : '._process:__doc__',
'cmdexec' : '._process.cmdexec:cmdexec',
'kill' : '._process.killproc:kill',
'ForkedFunc' : '._process.forkedfunc:ForkedFunc',
},
'apipkg' : {
'initpkg' : vendor_prefix + 'apipkg:initpkg',
'ApiModule' : vendor_prefix + 'apipkg:ApiModule',
},
'iniconfig' : {
'IniConfig' : vendor_prefix + 'iniconfig:IniConfig',
'ParseError' : vendor_prefix + 'iniconfig:ParseError',
},
'path' : {
'__doc__' : '._path:__doc__',
'svnwc' : '._path.svnwc:SvnWCCommandPath',
'svnurl' : '._path.svnurl:SvnCommandPath',
'local' : '._path.local:LocalPath',
'SvnAuth' : '._path.svnwc:SvnAuth',
},
# python inspection/code-generation API
'code' : {
'__doc__' : '._code:__doc__',
'compile' : '._code.source:compile_',
'Source' : '._code.source:Source',
'Code' : '._code.code:Code',
'Frame' : '._code.code:Frame',
'ExceptionInfo' : '._code.code:ExceptionInfo',
'Traceback' : '._code.code:Traceback',
'getfslineno' : '._code.source:getfslineno',
'getrawcode' : '._code.code:getrawcode',
'patch_builtins' : '._code.code:patch_builtins',
'unpatch_builtins' : '._code.code:unpatch_builtins',
'_AssertionError' : '._code.assertion:AssertionError',
'_reinterpret_old' : '._code.assertion:reinterpret_old',
'_reinterpret' : '._code.assertion:reinterpret',
'_reprcompare' : '._code.assertion:_reprcompare',
'_format_explanation' : '._code.assertion:_format_explanation',
},
# backports and additions of builtins
'builtin' : {
'__doc__' : '._builtin:__doc__',
'enumerate' : '._builtin:enumerate',
'reversed' : '._builtin:reversed',
'sorted' : '._builtin:sorted',
'any' : '._builtin:any',
'all' : '._builtin:all',
'set' : '._builtin:set',
'frozenset' : '._builtin:frozenset',
'BaseException' : '._builtin:BaseException',
'GeneratorExit' : '._builtin:GeneratorExit',
'_sysex' : '._builtin:_sysex',
'print_' : '._builtin:print_',
'_reraise' : '._builtin:_reraise',
'_tryimport' : '._builtin:_tryimport',
'exec_' : '._builtin:exec_',
'_basestring' : '._builtin:_basestring',
'_totext' : '._builtin:_totext',
'_isbytes' : '._builtin:_isbytes',
'_istext' : '._builtin:_istext',
'_getimself' : '._builtin:_getimself',
'_getfuncdict' : '._builtin:_getfuncdict',
'_getcode' : '._builtin:_getcode',
'builtins' : '._builtin:builtins',
'execfile' : '._builtin:execfile',
'callable' : '._builtin:callable',
'bytes' : '._builtin:bytes',
'text' : '._builtin:text',
},
# input-output helping
'io' : {
'__doc__' : '._io:__doc__',
'dupfile' : '._io.capture:dupfile',
'TextIO' : '._io.capture:TextIO',
'BytesIO' : '._io.capture:BytesIO',
'FDCapture' : '._io.capture:FDCapture',
'StdCapture' : '._io.capture:StdCapture',
'StdCaptureFD' : '._io.capture:StdCaptureFD',
'TerminalWriter' : '._io.terminalwriter:TerminalWriter',
'ansi_print' : '._io.terminalwriter:ansi_print',
'get_terminal_width' : '._io.terminalwriter:get_terminal_width',
'saferepr' : '._io.saferepr:saferepr',
},
# small and mean xml/html generation
'xml' : {
'__doc__' : '._xmlgen:__doc__',
'html' : '._xmlgen:html',
'Tag' : '._xmlgen:Tag',
'raw' : '._xmlgen:raw',
'Namespace' : '._xmlgen:Namespace',
'escape' : '._xmlgen:escape',
},
'log' : {
# logging API ('producers' and 'consumers' connected via keywords)
'__doc__' : '._log:__doc__',
'_apiwarn' : '._log.warning:_apiwarn',
'Producer' : '._log.log:Producer',
'setconsumer' : '._log.log:setconsumer',
'_setstate' : '._log.log:setstate',
'_getstate' : '._log.log:getstate',
'Path' : '._log.log:Path',
'STDOUT' : '._log.log:STDOUT',
'STDERR' : '._log.log:STDERR',
'Syslog' : '._log.log:Syslog',
},
})
I ran into this issue too and found that py
is going away/deprecated and it picks up a small shim which doesn't has process
: https://github.com/pytest-dev/pytest/blob/main/src/py.py
Hello, @Flamefire! Sorry for not responding earlier; had finals to deal with! š
Did you manage to find a solution or similar for this? Or are you avoiding pytest-forked
at the moment?
Hello, @Flamefire! Sorry for not responding earlier; had finals to deal with! š Did you manage to find a solution or similar for this? Or are you avoiding
pytest-forked
at the moment?
Yes: Basically pip install py
, see https://github.com/pytest-dev/pytest/issues/12206
Since py
is in maintenance mode, isn't the way to go to stop to use it?
Indeed, hence why this issue is open?
Because py
is still used?
Yes, and that's why this issue exists and is open. Not sure what your point is?
@mtelka
Since py is in maintenance mode, isn't the way to go to stop to use it?
Indeed it would be nice to not depend on py
anymore, a quick search shows it is being used only in two places:
The former seems easy to replace by checking if the object implements __fspath__
or something similar, the latter could be reimplemented in terms of multiprocessing
from stdlib.
PRs are welcome in case anybody wants to set aside some time to work on this.
Hello!
I'm getting the following traceback when trying to use
pytest-forked
, but when looking through the output ofdir(py)
right beforeff = py.process.ForkedFunc(runforked)
,py
does indeed seem to haveprocess
, so I'm not sure what the issue could be. This occurs even if I remove the other plugins.Thank you kindly for the help!