text:
Unexpected End Of File error when installing from a repository with both pyproject.toml and setup.py files

Issue description
When installing from a repository that has both a pyproject.toml and a setup.py via
pipenv install -e git+ssh://git@example.com/teamname/projectname.git@0.1.1#egg=package-name
pip correctly installs the wheel, but when pipenv goes to update Pipfile.lock, it fails. Installing with pipenv run pip install ... also works, but does not update Pipfile.lock.
Expected result
Pipenv successfully generates the Pipfile.lock, including the package installed from the git repo.
Actual result
The process fails with tomlkit.exceptions.UnexpectedEofError: Unexpected end of file at line 22 col 0.
Steps to replicate
The pyproject.toml file only has configuration information for black. So when get_pyproject in site-packages/pipenv/vendor/requirementslib/models/utils.py tries to load pyproject_data from the pyproject.toml file, it does not find a [build-system] section and raises the abover error; it thus misses the step a few lines down where get_pyproject checks if setup.py exists and can act accordingly.
A possible fix may be to change
        with io.open(pp_toml.as_posix(), encoding="utf-8") as fh:
            pyproject_data = tomlkit.loads(fh.read())

to
        try:
            with io.open(pp_toml.as_posix(), encoding="utf-8") as fh:
                pyproject_data = tomlkit.loads(fh.read())
        except tomlkit.exceptions.UnexpectedEofError as error:
            if not setup_py.exists():
                raise error

(Naturally a better fix exists where the user is told why it is that it failed instead of the cryptic unexpected eof error.)
This is related in terms of frustration to a pip bug with the same symptoms: https://github.com/pypa/pip/issues/7874
It may be that, by design, if a repo has a pyproject.toml file it should have a [build-system] section, but I did not find this documented anywhere. In my case, I'm no longer using black and can get rid of the pyproject.toml file, but that doesn't mean it won't break in the future with some other requirement for a pyproject.toml file.
Verbose output from pipenv command (with some details redacted, and the traceback simplified a bit because the above description comes from debugging in PyCharm and should require less mental effort than examining the traceback):
$ pipenv install -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.1#egg=package-name -v
pipenv install -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.1#egg=package-name -v
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Installing -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.1#egg=package-name…
Installing package: -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.1#egg=package-name
Writing supplied requirement line to temporary file: '-e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.1#egg=package-name'
⠹ Installing package-name...$ ['/path/to/.local/share/virtualenvs/project_env/bin/pip', 'install', '--verbose', '--upgrade', '--exists-action=i', '-r', '/var/folders/sc/g7h7jzd54hl49lcvps8lpz_n5jwy0y/T/pipenv-177nkjf✔ Installation Succeeded
Pipfile.lock (325172) out of date, updating to (c975ab)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
⠇ Locking...Traceback (most recent call last):
✘ Locking Failed!
    self._idx, self._current = next(self._chars)
StopIteration

Traceback (most recent call last):
  File "site-packages/pipenv/vendor/tomlkit/source.py", line 123, in inc
    self._idx, self._current = next(self._chars)
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
    pyproject_info = get_pyproject(checkout_dir)
  File "site-packages/pipenv/vendor/requirementslib/models/utils.py", line 514, in get_pyproject
    pyproject_data = tomlkit.loads(fh.read())
  File "site-packages/pipenv/vendor/tomlkit/api.py", line 32, in loads
    return parse(string)
  File "site-packages/pipenv/vendor/tomlkit/api.py", line 49, in parse
    return Parser(string).parse()
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 146, in parse
    key, value = self._parse_table()
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 1049, in _parse_table
    item = self._parse_item()
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 295, in _parse_item
    return self._parse_key_value(True)
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 380, in _parse_key_value
    val = self._parse_value()
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 511, in _parse_value
    return self._parse_literal_string()
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 769, in _parse_literal_string
    return self._parse_string(StringType.SLL)
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 906, in _parse_string
    self.inc(exception=UnexpectedEofError)
  File "site-packages/pipenv/vendor/tomlkit/parser.py", line 89, in inc
    return self._src.inc(exception=exception)
  File "site-packages/pipenv/vendor/tomlkit/source.py", line 130, in inc
    raise self.parse_error(exception)
tomlkit.exceptions.UnexpectedEofError: Unexpected end of file at line 22 col 0

Output of pipenv --support (with some details redacted)
$ pipenv --support
Pipenv version: '2020.6.2'
Pipenv location: '/path/to/.local/share/virtualenvs/project_env/lib/python3.7/site-packages/pipenv'
Python location: '/path/to/.local/share/virtualenvs/project_env/bin/python'
Python installations found:

3.8.2: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3
3.8.2: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
3.8.2: /usr/local/bin/python3
3.8.2: /usr/local/bin/python3.8
3.7.7: /path/to/.local/share/virtualenvs/project_env/bin/python3
3.7.7: /path/to/.local/share/virtualenvs/project_env/bin/python3.7
3.7.7: /path/to/.local/share/virtualenvs/project_env/bin/python3
3.7.7: /path/to/.local/share/virtualenvs/project_env/bin/python3.7
3.7.7: /usr/local/bin/python3.7m
3.7.7: /usr/local/bin/python3.7
2.7.16: /usr/bin/python2.7

PEP 508 Information:
{'implementation_name': 'cpython',
 'implementation_version': '3.7.7',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '18.7.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 18.7.0: Mon Apr 27 20:09:39 PDT '
                     '2020; root:xnu-4903.278.35~1/RELEASE_X86_64',
 'python_full_version': '3.7.7',
 'python_version': '3.7',
 'sys_platform': 'darwin'}

System environment variables:

TERM
SHELL
TMPDIR
Apple_PubSub_Socket_Render
USER
SSH_AUTH_SOCK
__CF_USER_TEXT_ENCODING
VIRTUAL_ENV
PATH
TERMINAL_EMULATOR
PWD
XPC_FLAGS
PS1
XPC_SERVICE_NAME
SHLVL
HOME
LOGNAME
LC_CTYPE
TOOLBOX_VERSION
_
PIP_DISABLE_PIP_VERSION_CHECK
PYTHONDONTWRITEBYTECODE
PIP_SHIMS_BASE_MODULE
PIP_PYTHON_PATH
PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:
Debug–specific environment variables:

PATH: /path/to/.local/share/virtualenvs/project_env/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/path/to/.poetry/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/path/to/.poetry/bin:/path/to/Library/Python3.7/bin:/path/to/Library/Python3.7/bin
SHELL: /bin/bash
PWD: /path/to/source/project_env
VIRTUAL_ENV: /path/to/.local/share/virtualenvs/project_env

Contents of Pipfile ('/path/to/source/projectname/Pipfile'):
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
# jupyter = "*"

[packages]
aiofiles = "*"
aiosqlite = "*"
arrow = "*"
asyncpg = "*"
boto3 = "*"
botocore = "*"
confuse = "*"
pre-commit = "*"
pyspark =  "*"
pytest = "*"
pyyaml = "*"
requests = "*"
snowflake = "*"
sshtunnel = "*"
mccabe = "*"
pep8-naming = "*"
flake8 = "*"
async-property = "*"
cython = "*"
package-name = {editable = true, git = "ssh://git@bitbucket.org/teamname/projectname.git", ref = "0.1.1"}

[requires]
python_version = ">=3.7"

[pipenv]
allow_prereleases = false

Contents of Pipfile.lock ('/path/to/source/projectname/Pipfile.lock'):
{
    "_meta": {
        "hash": {
            "sha256": "4b7087160c92a0f1c50f1ce1370abb04363304a5ca6f7f2f8ff72d19c3325172"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": ">=3.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "aiofiles": {
            "hashes": [
                "sha256:377fdf7815cc611870c59cbd07b68b180841d2a2b79812d8c218be02448c2acb",
                "sha256:98e6bcfd1b50f97db4980e182ddd509b7cc35909e903a8fe50d8849e02d815af"
            ],
            "index": "pypi",
            "version": "==0.5.0"
        },
        "aiosqlite": {
            "hashes": [
                "sha256:50688c40632ae249f986ab3ae2c66a45c0535b84a5d4aae0e0be572b5fed6909",
                "sha256:6e92961ae9e606b43b05e29b129e346b29e400fcbd63e3c0c564d89230257645"
            ],
            "index": "pypi",
            "version": "==0.13.0"
        },
        "appdirs": {
            "hashes": [
                "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41",
                "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
            ],
            "version": "==1.4.4"
        },
        "arrow": {
            "hashes": [
                "sha256:3f1a92b25bbee5f80cc8f6bdecfeade9028219229137c559c37335b4f574a292",
                "sha256:61a1af3a31f731e7993509124839ac28b91b6743bd6692a949600737900cf43b"
            ],
            "index": "pypi",
            "version": "==0.15.7"
        },
        "async-property": {
            "hashes": [
                "sha256:53826fd45a67d7d6cca3d7abbc0e8ba951f7c7618c830021fbd3675979b0b67d",
                "sha256:f1f105009a6216ed9a13031aa13632754ed8a5c2e329fb8f9f2082d83529eacd"
            ],
            "index": "pypi",
            "version": "==0.2.1"
        },
        "asyncpg": {
            "hashes": [
                "sha256:058baec9d6b75612412baa872a1aa47317d0ff88c318a49f9c4a2389043d5a8d",
                "sha256:0c336903c3b08e970f8af2f606332f1738dba156bca83ed0467dc2f5c70da796",
                "sha256:1388caa456070dab102be874205e3ae8fd1de2577d5de9fa22e65ba5c0f8b110",
                "sha256:25edb0b947eb632b6b53e5a4b36cba5677297bb34cbaba270019714d0a5fed76",
                "sha256:2af6a5a705accd36e13292ea43d08c20b15e52d684beb522cb3a7d3c9c8f3f48",
                "sha256:391aea89871df8c1560750af6c7170f2772c2d133b34772acf3637e3cf4db93e",
                "sha256:394bf19bdddbba07a38cd6fb526ebf66e120444d6b3097332b78efd5b26495b0",
                "sha256:5664d1bd8abe64fc60a0e701eb85fa1d8c9a4a8018a5a59164d27238f2caf395",
                "sha256:57666dfae38f4dbf84ffbf0c5c0f78733fef0e8e083230275dcb9ccad1d5ee09",
                "sha256:74510234c294c6a6767089ba9c938f09a491426c24405634eb357bd91dffd734",
                "sha256:95cd2df61ee00b789bdcd04a080e6d9188693b841db2bf9a87ebaed9e53147e0",
                "sha256:a981500bf6947926e53c48f4d60ae080af1b4ad7fa78e363465a5b5ad4f2b65e",
                "sha256:a9e6fd6f0f9e8bd77e9a4e1ef9a4f83a80674d9136a754ae3603e915da96b627",
                "sha256:ad5ba062e09673b1a4b8d0facaf5a6d9719bf7b337440d10b07fe994d90a9552",
                "sha256:ba90d3578bc6dddcbce461875672fd9bdb34f0b8215b68612dd3b65a956ff51c",
                "sha256:c773c7dbe2f4d3ebc9e3030e94303e45d6742e6c2fc25da0c46a56ea3d83caeb",
                "sha256:da238592235717419a6a7b5edc8564da410ebfd056ca4ecc41e70b1b5df86fba",
                "sha256:e39aac2b3a2f839ce65aa255ce416de899c58b7d38d601d24ca35558e13b48e3",
                "sha256:ec6e7046c98730cb2ba4df41387e10cb8963a3ac2918f69ae416f8aab9ca7b1b",
                "sha256:f0c9719ac00615f097fe91082b785bce36dbf02a5ec4115ede0ebfd2cd9500cb",
                "sha256:f7184689177eeb5a11fa1b2baf3f6f2e26bfd7a85acf4de1a3adbd0867d7c0e2"
            ],
            "index": "pypi",
            "version": "==0.20.1"
        },
        "attrs": {
            "hashes": [
                "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
                "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
            ],
            "version": "==19.3.0"
        },
        "bcrypt": {
            "hashes": [
                "sha256:0258f143f3de96b7c14f762c770f5fc56ccd72f8a1857a451c1cd9a655d9ac89",
                "sha256:0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42",
                "sha256:19a4b72a6ae5bb467fea018b825f0a7d917789bcfe893e53f15c92805d187294",
                "sha256:5432dd7b34107ae8ed6c10a71b4397f1c853bd39a4d6ffa7e35f40584cffd161",
                "sha256:6305557019906466fc42dbc53b46da004e72fd7a551c044a827e572c82191752",
                "sha256:69361315039878c0680be456640f8705d76cb4a3a3fe1e057e0f261b74be4b31",
                "sha256:6fe49a60b25b584e2f4ef175b29d3a83ba63b3a4df1b4c0605b826668d1b6be5",
                "sha256:74a015102e877d0ccd02cdeaa18b32aa7273746914a6c5d0456dd442cb65b99c",
                "sha256:763669a367869786bb4c8fcf731f4175775a5b43f070f50f46f0b59da45375d0",
                "sha256:8b10acde4e1919d6015e1df86d4c217d3b5b01bb7744c36113ea43d529e1c3de",
                "sha256:9fe92406c857409b70a38729dbdf6578caf9228de0aef5bc44f859ffe971a39e",
                "sha256:a190f2a5dbbdbff4b74e3103cef44344bc30e61255beb27310e2aec407766052",
                "sha256:a595c12c618119255c90deb4b046e1ca3bcfad64667c43d1166f2b04bc72db09",
                "sha256:c9457fa5c121e94a58d6505cadca8bed1c64444b83b3204928a866ca2e599105",
                "sha256:cb93f6b2ab0f6853550b74e051d297c27a638719753eb9ff66d1e4072be67133",
                "sha256:ce4e4f0deb51d38b1611a27f330426154f2980e66582dc5f438aad38b5f24fc1",
                "sha256:d7bdc26475679dd073ba0ed2766445bb5b20ca4793ca0db32b399dccc6bc84b7",
                "sha256:ff032765bb8716d9387fd5376d987a937254b0619eff0972779515b5c98820bc"
            ],
            "version": "==3.1.7"
        },
        "boto3": {
            "hashes": [
                "sha256:3c654c1b8f9708e0b457ea1d312ee53451368d09b571ce737dc1f46484112bc1",
                "sha256:974a4a495fa876f4e8180e2690c840152f06cc3badbe865f05ed731efadcbf44"
            ],
            "index": "pypi",
            "version": "==1.14.15"
        },
        "botocore": {
            "hashes": [
                "sha256:34ebc56471a75ea28bfd39f1665d58ee13229c75e8cd6c62b2e2abf1f3e75f0f"
            ],
            "index": "pypi",
            "version": "==1.17.15"
        },
        "certifi": {
            "hashes": [
                "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
                "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
            ],
            "version": "==2020.6.20"
        },
        "cffi": {
            "hashes": [
                "sha256:001bf3242a1bb04d985d63e138230802c6c8d4db3668fb545fb5005ddf5bb5ff",
                "sha256:00789914be39dffba161cfc5be31b55775de5ba2235fe49aa28c148236c4e06b",
                "sha256:028a579fc9aed3af38f4892bdcc7390508adabc30c6af4a6e4f611b0c680e6ac",
                "sha256:14491a910663bf9f13ddf2bc8f60562d6bc5315c1f09c704937ef17293fb85b0",
                "sha256:1cae98a7054b5c9391eb3249b86e0e99ab1e02bb0cc0575da191aedadbdf4384",
                "sha256:2089ed025da3919d2e75a4d963d008330c96751127dd6f73c8dc0c65041b4c26",
                "sha256:2d384f4a127a15ba701207f7639d94106693b6cd64173d6c8988e2c25f3ac2b6",
                "sha256:337d448e5a725bba2d8293c48d9353fc68d0e9e4088d62a9571def317797522b",
                "sha256:399aed636c7d3749bbed55bc907c3288cb43c65c4389964ad5ff849b6370603e",
                "sha256:3b911c2dbd4f423b4c4fcca138cadde747abdb20d196c4a48708b8a2d32b16dd",
                "sha256:3d311bcc4a41408cf5854f06ef2c5cab88f9fded37a3b95936c9879c1640d4c2",
                "sha256:62ae9af2d069ea2698bf536dcfe1e4eed9090211dbaafeeedf5cb6c41b352f66",
                "sha256:66e41db66b47d0d8672d8ed2708ba91b2f2524ece3dee48b5dfb36be8c2f21dc",
                "sha256:675686925a9fb403edba0114db74e741d8181683dcf216be697d208857e04ca8",
                "sha256:7e63cbcf2429a8dbfe48dcc2322d5f2220b77b2e17b7ba023d6166d84655da55",
                "sha256:8a6c688fefb4e1cd56feb6c511984a6c4f7ec7d2a1ff31a10254f3c817054ae4",
                "sha256:8c0ffc886aea5df6a1762d0019e9cb05f825d0eec1f520c51be9d198701daee5",
                "sha256:95cd16d3dee553f882540c1ffe331d085c9e629499ceadfbda4d4fde635f4b7d",
                "sha256:99f748a7e71ff382613b4e1acc0ac83bf7ad167fb3802e35e90d9763daba4d78",
                "sha256:b8c78301cefcf5fd914aad35d3c04c2b21ce8629b5e4f4e45ae6812e461910fa",
                "sha256:c420917b188a5582a56d8b93bdd8e0f6eca08c84ff623a4c16e809152cd35793",
                "sha256:c43866529f2f06fe0edc6246eb4faa34f03fe88b64a0a9a942561c8e22f4b71f",
                "sha256:cab50b8c2250b46fe738c77dbd25ce017d5e6fb35d3407606e7a4180656a5a6a",
                "sha256:cef128cb4d5e0b3493f058f10ce32365972c554572ff821e175dbc6f8ff6924f",
                "sha256:cf16e3cf6c0a5fdd9bc10c21687e19d29ad1fe863372b5543deaec1039581a30",
                "sha256:e56c744aa6ff427a607763346e4170629caf7e48ead6921745986db3692f987f",
                "sha256:e577934fc5f8779c554639376beeaa5657d54349096ef24abe8c74c5d9c117c3",
                "sha256:f2b0fa0c01d8a0c7483afd9f31d7ecf2d71760ca24499c8697aeb5ca37dc090c"
            ],
            "version": "==1.14.0"
        },
        "cfgv": {
            "hashes": [
                "sha256:1ccf53320421aeeb915275a196e23b3b8ae87dea8ac6698b1638001d4a486d53",
                "sha256:c8e8f552ffcc6194f4e18dd4f68d9aef0c0d58ae7e7be8c82bee3c5e9edfa513"
            ],
            "version": "==3.1.0"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "confuse": {
            "hashes": [
                "sha256:0600af9544e6e82a01e6a4225fb33c566edbd0df919b576e3bc9643e501275f9",
                "sha256:f68a1c61fdb175b88e7a1466277c5b62bd039b722c1bbb72d42df24253d32b1f"
            ],
            "index": "pypi",
            "version": "==1.3.0"
        },
        "cryptography": {
            "hashes": [
                "sha256:091d31c42f444c6f519485ed528d8b451d1a0c7bf30e8ca583a0cac44b8a0df6",
                "sha256:18452582a3c85b96014b45686af264563e3e5d99d226589f057ace56196ec78b",
                "sha256:1dfa985f62b137909496e7fc182dac687206d8d089dd03eaeb28ae16eec8e7d5",
                "sha256:1e4014639d3d73fbc5ceff206049c5a9a849cefd106a49fa7aaaa25cc0ce35cf",
                "sha256:22e91636a51170df0ae4dcbd250d318fd28c9f491c4e50b625a49964b24fe46e",
                "sha256:3b3eba865ea2754738616f87292b7f29448aec342a7c720956f8083d252bf28b",
                "sha256:651448cd2e3a6bc2bb76c3663785133c40d5e1a8c1a9c5429e4354201c6024ae",
                "sha256:726086c17f94747cedbee6efa77e99ae170caebeb1116353c6cf0ab67ea6829b",
                "sha256:844a76bc04472e5135b909da6aed84360f522ff5dfa47f93e3dd2a0b84a89fa0",
                "sha256:88c881dd5a147e08d1bdcf2315c04972381d026cdb803325c03fe2b4a8ed858b",
                "sha256:96c080ae7118c10fcbe6229ab43eb8b090fccd31a09ef55f83f690d1ef619a1d",
                "sha256:a0c30272fb4ddda5f5ffc1089d7405b7a71b0b0f51993cb4e5dbb4590b2fc229",
                "sha256:bb1f0281887d89617b4c68e8db9a2c42b9efebf2702a3c5bf70599421a8623e3",
                "sha256:c447cf087cf2dbddc1add6987bbe2f767ed5317adb2d08af940db517dd704365",
                "sha256:c4fd17d92e9d55b84707f4fd09992081ba872d1a0c610c109c18e062e06a2e55",
                "sha256:d0d5aeaedd29be304848f1c5059074a740fa9f6f26b84c5b63e8b29e73dfc270",
                "sha256:daf54a4b07d67ad437ff239c8a4080cfd1cc7213df57d33c97de7b4738048d5e",
                "sha256:e993468c859d084d5579e2ebee101de8f5a27ce8e2159959b6673b418fd8c785",
                "sha256:f118a95c7480f5be0df8afeb9a11bd199aa20afab7a96bcf20409b411a3a85f0"
            ],
            "version": "==2.9.2"
        },
        "cython": {
            "hashes": [
                "sha256:0754ec9d45518d0dbb5da72db2c8b063d40c4c51779618c68431054de179387f",
                "sha256:0bb201124f67b8d5e6a3e7c02257ca56a90204611971ecca76c02897096f097d",
                "sha256:0f3488bf2a9e049d1907d35ad8834f542f8c03d858d1bca6d0cbc06b719163e0",
                "sha256:1024714b0f7829b0f712db9cebec92c2782b1f42409b8575cacc340aa438d4ba",
                "sha256:10b6d2e2125169158128b7f11dad8bb0d8f5fba031d5d4f8492f3afbd06491d7",
                "sha256:16ed0260d031d90dda43997e9b0f0eebc3cf18e6ece91cad7b0fb17cd4bfb29b",
                "sha256:22d91af5fc2253f717a1b80b8bb45acb655f643611983fd6f782b9423f8171c7",
                "sha256:2d84e8d2a0c698c1bce7c2a4677f9f03b076e9f0af7095947ecd2a900ffceea5",
                "sha256:34dd57f5ac5a0e3d53da964994fc1b7e7ee3f86172d7a1f0bde8a1f90739e04d",
                "sha256:384582b5024007dfdabc9753e3e0f85d61837b0103b0ee3f8acf04a4bcfad175",
                "sha256:4473f169d6dd02174eb76396cb38ce469f377c08b21965ddf4f88bbbebd5816e",
                "sha256:57f32d1095ad7fad1e7f2ff6e8c6a7197fa532c8e6f4d044ff69212e0bf05461",
                "sha256:5dfe519e400a1672a3ac5bdfb5e957a9c14c52caafb01f4a923998ec9ae77736",
                "sha256:60def282839ed81a2ffae29d2df0a6777fd74478c6e82c6c3f4b54e698b9d11c",
                "sha256:7089fb2be9a9869b9aa277bc6de401928954ce70e139c3cf9b244ae5f490b8f2",
                "sha256:714b8926a84e3e39c5278e43fb8823598db82a4b015cff263b786dc609a5e7d6",
                "sha256:7352b88f2213325c1e111561496a7d53b0326e7f07e6f81f9b8b21420e40851c",
                "sha256:809f0a3f647052c4bcbc34a15f53a5dab90de1a83ebd77add37ed5d3e6ee5d97",
                "sha256:8598b09f7973ccb15c03b21d3185dc129ae7c60d0a6caf8176b7099a4b83483e",
                "sha256:8dc68f93b257718ea0e2bc9be8e3c61d70b6e49ab82391125ba0112a30a21025",
                "sha256:9bfd42c1d40aa26bf76186cba0d89be66ba47e36fa7ea56d71f377585a53f7c4",
                "sha256:a21cb3423acd6dbf383c9e41e8e60c93741987950434c85145864458d30099f3",
                "sha256:a49d0f5c55ad0f4aacad32f058a71d0701cb8936d6883803e50698fa04cac8d2",
                "sha256:a985a7e3c7f1663af398938029659a4381cfe9d1bd982cf19c46b01453e81775",
                "sha256:b3233341c3fe352b1090168bd087686880b582b635d707b2c8f5d4f1cc1fa533",
                "sha256:b32965445b8dbdc36c69fba47e024060f9b39b1b4ceb816da5028eea01924505",
                "sha256:b553473c31297e4ca77fbaea2eb2329889d898c03941d90941679247c17e38fb",
                "sha256:b56c02f14f1708411d95679962b742a1235d33a23535ce4a7f75425447701245",
                "sha256:b7bb0d54ff453c7516d323c3c78b211719f39a506652b79b7e85ba447d5fa9e7",
                "sha256:c5df2c42d4066cda175cd4d075225501e1842cfdbdaeeb388eb7685c367cc3ce",
                "sha256:c5e29333c9e20df384645902bed7a67a287b979da1886c8f10f88e57b69e0f4b",
                "sha256:d0b445def03b4cd33bd2d1ae6fbbe252b6d1ef7077b3b5ba3f2c698a190d26e5",
                "sha256:d490a54814b69d814b157ac86ada98c15fd77fabafc23732818ed9b9f1f0af80"
            ],
            "index": "pypi",
            "version": "==0.29.20"
        },
        "distlib": {
            "hashes": [
                "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb",
                "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"
            ],
            "version": "==0.3.1"
        },
        "docutils": {
            "hashes": [
                "sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0",
                "sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827",
                "sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99"
            ],
            "version": "==0.15.2"
        },
        "filelock": {
            "hashes": [
                "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59",
                "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"
            ],
            "version": "==3.0.12"
        },
        "flake8": {
            "hashes": [
                "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c",
                "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"
            ],
            "index": "pypi",
            "version": "==3.8.3"
        },
        "flake8-polyfill": {
            "hashes": [
                "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9",
                "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"
            ],
            "version": "==1.0.2"
        },
        "identify": {
            "hashes": [
                "sha256:c4d07f2b979e3931894170a9e0d4b8281e6905ea6d018c326f7ffefaf20db680",
                "sha256:dac33eff90d57164e289fb20bf4e131baef080947ee9bf45efcd0da8d19064bf"
            ],
            "version": "==1.4.21"
        },
        "idna": {
            "hashes": [
                "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
                "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
            ],
            "version": "==2.10"
        },
        "importlib-metadata": {
            "hashes": [
                "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83",
                "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"
            ],
            "markers": "python_version < '3.8'",
            "version": "==1.7.0"
        },
        "jmespath": {
            "hashes": [
                "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9",
                "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f"
            ],
            "version": "==0.10.0"
        },
        "mccabe": {
            "hashes": [
                "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
                "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
            ],
            "index": "pypi",
            "version": "==0.6.1"
        },
        "more-itertools": {
            "hashes": [
                "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5",
                "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2"
            ],
            "version": "==8.4.0"
        },
        "nodeenv": {
            "hashes": [
                "sha256:4b0b77afa3ba9b54f4b6396e60b0c83f59eaeb2d63dc3cc7a70f7f4af96c82bc"
            ],
            "version": "==1.4.0"
        },
        "packaging": {
            "hashes": [
                "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8",
                "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"
            ],
            "version": "==20.4"
        },
        "paramiko": {
            "hashes": [
                "sha256:920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f",
                "sha256:9c980875fa4d2cb751604664e9a2d0f69096643f5be4db1b99599fe114a97b2f"
            ],
            "version": "==2.7.1"
        },
        "pep8-naming": {
            "hashes": [
                "sha256:a1dd47dd243adfe8a83616e27cf03164960b507530f155db94e10b36a6cd6724",
                "sha256:f43bfe3eea7e0d73e8b5d07d6407ab47f2476ccaeff6937c84275cd30b016738"
            ],
            "index": "pypi",
            "version": "==0.11.1"
        },
        "pluggy": {
            "hashes": [
                "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
                "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"
            ],
            "version": "==0.13.1"
        },
        "pre-commit": {
            "hashes": [
                "sha256:1657663fdd63a321a4a739915d7d03baedd555b25054449090f97bb0cb30a915",
                "sha256:e8b1315c585052e729ab7e99dcca5698266bedce9067d21dc909c23e3ceed626"
            ],
            "index": "pypi",
            "version": "==2.6.0"
        },
        "py": {
            "hashes": [
                "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2",
                "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"
            ],
            "version": "==1.9.0"
        },
        "py4j": {
            "hashes": [
                "sha256:36ec57f43ff8ced260a18aa9a4e46c3500a730cac8860e259cbaa546c2b9db2f",
                "sha256:859ba728a7bb43e9c2bf058832759fb97a598bb28cc12f34f5fc4abdec08ede6"
            ],
            "version": "==0.10.9"
        },
        "pycodestyle": {
            "hashes": [
                "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367",
                "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"
            ],
            "version": "==2.6.0"
        },
        "pycparser": {
            "hashes": [
                "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
                "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
            ],
            "version": "==2.20"
        },
        "pyflakes": {
            "hashes": [
                "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92",
                "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"
            ],
            "version": "==2.2.0"
        },
        "pynacl": {
            "hashes": [
                "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4",
                "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4",
                "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574",
                "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d",
                "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25",
                "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f",
                "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505",
                "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122",
                "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7",
                "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420",
                "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f",
                "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96",
                "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6",
                "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514",
                "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff",
                "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80"
            ],
            "version": "==1.4.0"
        },
        "pyparsing": {
            "hashes": [
                "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
                "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
            ],
            "version": "==2.4.7"
        },
        "pyspark": {
            "hashes": [
                "sha256:8c6e5cc51d91eb8d43e81d0b7093292b5e144ac81445491d5f887d2cf4fe121f"
            ],
            "index": "pypi",
            "version": "==3.0.0"
        },
        "pytest": {
            "hashes": [
                "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1",
                "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"
            ],
            "index": "pypi",
            "version": "==5.4.3"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
                "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
            ],
            "version": "==2.8.1"
        },
        "pyyaml": {
            "hashes": [
                "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97",
                "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76",
                "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2",
                "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648",
                "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf",
                "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f",
                "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2",
                "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee",
                "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d",
                "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c",
                "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"
            ],
            "index": "pypi",
            "version": "==5.3.1"
        },
        "requests": {
            "hashes": [
                "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
                "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
            ],
            "index": "pypi",
            "version": "==2.24.0"
        },
        "s3transfer": {
            "hashes": [
                "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13",
                "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db"
            ],
            "version": "==0.3.3"
        },
        "six": {
            "hashes": [
                "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
                "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
            ],
            "version": "==1.15.0"
        },
        "snowflake": {
            "hashes": [
                "sha256:5e0f2310bc9e499c8c47bed8da0695d79ad372057de7e03751e47fef46a6760d"
            ],
            "index": "pypi",
            "version": "==0.0.3"
        },
        "sshtunnel": {
            "hashes": [
                "sha256:c813fdcda8e81c3936ffeac47cb69cfb2d1f5e77ad0de656c6dab56aeebd9249"
            ],
            "index": "pypi",
            "version": "==0.1.5"
        },
        "toml": {
            "hashes": [
                "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f",
                "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"
            ],
            "version": "==0.10.1"
        },
        "urllib3": {
            "hashes": [
                "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
                "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
            ],
            "version": "==1.25.9"
        },
        "virtualenv": {
            "hashes": [
                "sha256:f332ba0b2dfbac9f6b1da9f11224f0036b05cdb4df23b228527c2a2d5504aeed",
                "sha256:ffffcb3c78a671bb3d590ac3bc67c081ea2188befeeb058870cba13e7f82911b"
            ],
            "version": "==20.0.25"
        },
        "wcwidth": {
            "hashes": [
                "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
                "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
            ],
            "version": "==0.2.5"
        },
        "zipp": {
            "hashes": [
                "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b",
                "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"
            ],
            "version": "==3.1.0"
        }
    },
    "develop": {}
}

And I suppose the title describes more than the actual issue, which is that there is a pyproject.toml file but no [build-system] section, because the intent was to use pyproject.toml for a different tool, and to use setup.py for building the wheel and specifying its dependencies.

I have confirmed that removing the pyproject.toml file from the package results in a successful install:
$ pipenv install -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.2#egg=package-name
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that
environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force
pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this
warning.
Installing -e git+ssh://git@bitbucket.org/teamname/projectname.git@0.1.2#package-name…
✔ Installation Succeeded
Pipfile.lock (325172) out of date, updating to (6c2c2d)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (6c2c2d)!
Installing dependencies from Pipfile.lock (6c2c2d)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 4/4 — 00:00:03

I am running into this problem as well... Is there any workaround that doesn't involve deleting the pyproject.toml file?  Can I switch to pure pyproject.toml (move all the relevant information from setup.py)?

ok, looks like switching to pyproject.toml only doesn't work...
pipenv.patched.notpip._internal.exceptions.InstallationError: File "setup.py" not found. Directory cannot be installed in editable mode: <dir> (A "pyproject.toml" file was found, but editable mode currently requires a setup.py based build.)

I filed another issue to track support for pyproject.toml-only packages in editable mode: https://github.com/pypa/pipenv/issues/5055

I believe this should be resolved, could you checked @hlongmore ?

I don't currently have a project that meets the test criteria; I'll see if I can get to it within the week.

The original error posted by @spott was a pip error -- but we are on the latest pip=22.2.2 now which certainly supports this case -- I am willing to reopen this or address a new issue report if we find it is still an issue.

authors: hlongmore jtbandes matteius spott


text:
Mz moveis planejados

Be sure to check the existing issues (both open and closed!), and make sure you are running the latest version of Pipenv.
Check the diagnose documentation for common issues before posting! We may close your issue if it is very similar to one of them. Please be considerate, or be on your way.
Make sure to mention your debugging experience if the documented solution failed.
Issue description
Describe the issue briefly here.
Expected result
Describe what you expected.
Actual result
When possible, provide the verbose output (--verbose), especially for locking and dependencies resolving issues.
Steps to replicate
Provide the steps to replicate (which usually at least includes the commands and the Pipfile).

Please run $ pipenv --support, and paste the results here. Don't put backticks (`) around it! The output already contains Markdown formatting.
If you're on macOS, run the following:
$ pipenv --support | pbcopy

If you're on Windows, run the following:
> pipenv --support | clip

If you're on Linux, run the following:
$ pipenv --support | xclip

Todo tipo de moveis sob medida

Muito bom o servico

Muito bom o servico

source: gharchive/issue

repo: pypa/pipenv

license: MIT

license_type: permissive

license_source: github-api


text:
[BUG] PIP3 Install hangs indefinitely

setuptools version
setuptools==58.0.2
Python version
Python 3.7
OS
CentOS Linux 7 (in Docker)
Additional environment information
Running code in gitlab ci/cd docker runner. Gitlab version 14.0.1.
Description
We run pip3 install --upgrade setuptools pip and after that pip3 install -r requirements-dev.txt with following content:
mock
coverage
flake8
mypy
pytest
apache-airflow==1.10.11
types-PyYAML
types-requests

Until yesterday this step finished in under 2 minutes with setuptools==58.0.0. Today newer version of setuptools has been pulled which made step timeout after 1hr. The job is stuck on pip3 install step with croniter package being consistently the last one (stuck for ~55 minutes) before timeout happens.
Expected behavior
pip3 install -r requirements-dev.txt finishes ok
How to Reproduce
run pip3 install --upgrade setuptools pip and after that pip3 install -r requirements-dev.txt with following content:
mock
coverage
flake8
mypy
pytest
apache-airflow==1.10.11
types-PyYAML
types-requests

Output
  Downloading https://xxx/artifactory/api/pypi/ISP-PyPI/packages/packages/28/27/f2c883373aa58fe77ecfc09a984f1ae52bc05790c0eee66b87f65d14cbfe/croniter-0.3.23.tar.gz (18 kB)
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. If you want to abort this run, you can press Ctrl + C to do so. To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
  Downloading https://xxx/artifactory/api/pypi/ISP-PyPI/packages/packages/79/f1/3d9dac6f43a1f789ad79c1dc2589e7389fc4f0c4753a451485ecb326c357/croniter-0.3.22.tar.gz (18 kB)
  Downloading https://xxx/artifactory/api/pypi/ISP-PyPI/packages/packages/69/84/1a839fdb454929b2f5f34dfc0f6ae9c393193e4c088fa62b37ec318c0df4/croniter-0.3.20.tar.gz (18 kB)
ERROR: Job failed: execution took longer than 1h0m0s seconds

Code of Conduct

[X] I agree to follow the PSF Code of Conduct

I can see how this may be a side-effect of https://github.com/pypa/setuptools/issues/2775 — the new pip resolver (resolvelib) supports backtracking. It means that if a build fails, it'll try to build an older version of the dependency. But if there are dists that have use_2to3 and a lot of releases, this combination would cause pip attempt to build every version impacting the whole install session before it fails for good.
It's just a speculation, though.
cc @pradyunsg @jaraco

@mgorsk1 please, verify if the new release v58.0.3 fixes your issue. It contains a hotfix from #2777.

I tried reproducing this with w/ v58.0.3 in the venv under Python 3.9 and I see that my hunch about pip's backtracking was right. It's attempting to download a huge matrix of versions of transitive dependencies and dismisses some of the sdists because of failing to build them (when those projects don't ship wheels).
One of the errors I saw in the log was a problem with Flask-OpenID (see https://github.com/mitsuhiko/flask-openid/pull/60):
    ERROR: Command errored out with exit status 1:
     command: ~/src/experiments/setuptools-v58.0.3/venv-s58.0.3/bin/python3.9 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-6ihoqio_/flask-openid_2d8e823c8686418988ff2368e10ca4ea/setup.py'"'"'; __file__='"'"'/tmp/pip-install-6ihoqio_/flask-openid_2d8e823c8686418988ff2368e10ca4ea/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-utc73wga
         cwd: /tmp/pip-install-6ihoqio_/flask-openid_2d8e823c8686418988ff2368e10ca4ea/
    Complete output (1 lines):
    error in Flask-OpenID setup command: use_2to3 is invalid.
    ----------------------------------------

Another example of a discarded version was not a hard failure but a warning about the metadata mismatch for the dill distribution:
  WARNING: Requested dill<0.4,>=0.2.2 from https://files.pythonhosted.org/packages/3e/ad/31932a4e2804897e6fd2f946d53df51dd9b4aa55e152b5404395d00354d1/dill-0.3.1.tar.gz#sha256=d3ddddf2806a7bc9858b20c02dc174396795545e9d62f243b34481fd26eb3e2c (from apache-airflow==1.10.11), but installing version 0.3.1.dev0
WARNING: Discarding https://files.pythonhosted.org/packages/3e/ad/31932a4e2804897e6fd2f946d53df51dd9b4aa55e152b5404395d00354d1/dill-0.3.1.tar.gz#sha256=d3ddddf2806a7bc9858b20c02dc174396795545e9d62f243b34481fd26eb3e2c (from https://pypi.org/simple/dill/) (requires-python:>=2.6, !=3.0.*). Requested dill<0.4,>=0.2.2 from https://files.pythonhosted.org/packages/3e/ad/31932a4e2804897e6fd2f946d53df51dd9b4aa55e152b5404395d00354d1/dill-0.3.1.tar.gz#sha256=d3ddddf2806a7bc9858b20c02dc174396795545e9d62f243b34481fd26eb3e2c (from apache-airflow==1.10.11) has inconsistent version: filename has '0.3.1', but metadata has '0.3.1.dev0'

I've also confirmed that with setuptools < 58 the installation succeeds.

yep even 58.0.0 works just fine but I saw no improvement with 58.0.3

I am getting an error installing pyhash. It is using setup from setuptools and passing parameter use_2to3=True.
The error was that use_2to3 does not exist for setup. Was this parameter deprecated in 58.0.1/2/3? It is working in 58.0.0.

yep even 58.0.0 works just fine but I saw no improvement with 58.0.3

The reason 58.0.0 worked fine was because it allowed the project to build and install even though the code was likely invalid.

Oh, interesting. pyhash has very little Python and running lib2to3 on it produces a very small diff:
pyhash master $ python -m lib2to3 --write *.py
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
--- __init__.py (original)
+++ __init__.py (refactored)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-from __future__ import unicode_literals
+

 import sys
 import inspect
RefactoringTool: Refactored __init__.py
RefactoringTool: Files that were modified:
RefactoringTool: __init__.py

The easiest fix for this would be for pyhash to release a Python 3 wheel in PyPI of the latest release. It should also consider  dropping use of 2to3 as it's not meaningful in that project.

I filed https://github.com/flier/pyfasthash/issues/49. I don't believe there's anything more to do here. Sorry for the inconvenience.

Hey @mgorsk1 (and everyone here) -> we solved the issue yesterday for Airflow 2. Together with @jaraco we are now both maintainers of Flask-OpenID, we released https://pypi.org/project/Flask-OpenID/1.3.0/  and updated all the constraints for all released Airflow 2 versions.
Unfortunately Airflow 1.10 is not maintained any more, so we will not update constraints there.
However, there is an easy solution if you are still using using Airflow 1.10 - just copy the constraints to your own git repository and make the change there. The change is super-easy, just change the constraint for Flask-OpenID  to 1.3.0 (from 1.2.5).
When you use your own constraints file, this will fix installation problems for you. More  you actually won't even need setuptools there for FlaskOpenID, because we relased .whl version of it.
Example commit (this one switches from our tactical solution which implemented before I became a maintainers of Flask OpenID). https://github.com/apache/airflow/commit/be590f45ea714458aaca684ef0e7ecca2021b02b
Big thanks to @mitsuhiko for quick reaction and willingness to help us !

Thanks @potiuk for info, indeed we will just bump airflow dep as we are at 2.1.3 anyways and looks like we just forgot to update unit tests deps 😅

authors: MichaelStadtmiller jaraco mgorsk1 potiuk webknjaz

repo: pypa/setuptools

license: mit

license_source: bigquery


text:
[BUG] Editable install has recently stopped working in Ubuntu 21.10 Impish when run from root

setuptools version
latest from git, but I have rolled back to ancient ones and the issue persists, the issue is likely not in setuptools itself
Python version
CPython 3.9
OS
Kubuntu 21.10 Impish
Additional environment information
No response
Description
sudo pip3 install --upgrade -e . doesn't result in package becoming importable. Installing from a user works fine.
I have debugged the issue a bit, tried ancient (that I remember have been working fine) versions of pip and setuptools, and it turns out it doesn't work with them either.
It turned out that install_dir contains the wrong path, the one working must have /usr/local/lib/python3.9/dist-packages, but and /usr/lib/python3.9/site-packages/ is used.
So the temporary fix for me was
From 0f093e7a16ecd00eff72fc8961ac6ed3f310fb83 Mon Sep 17 00:00:00 2001
From: KOLANICH <KOLANICH@users.noreply.github.com>
Date: Mon, 21 Feb 2022 21:05:23 +0300
Subject: [PATCH] A temporary fix of wrong `install_dir` captured from some
 config, causing non-working editable installs from `root` on Ubuntu.

---
 setuptools/command/easy_install.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 5b73e6e9..ac6b2623 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -285,6 +285,7 @@ class easy_install(Command):
             'install_dir', 'script_dir', 'build_directory',
             'site_dirs',
         )
+        self.install_dir = "/usr/local/lib/python3.9/dist-packages"
         # If a non-default installation directory was specified, default the
         # script directory to match it.
         if self.script_dir is None:
--
2.32.0

But I guess some of the configs that must be provided by distro and that setuptools takes the info from can be changed incorrectly in some recent updates. Can someone point where I should look?
Expected behavior
Should work as expected out of the box.
How to Reproduce

Use Ubuntu Impish, every packaging-related python package is of the latest version (except pip, they have introduced the change breaking my workflow recently, I guess it can be a sign of a bug) from git
Clone some project. I used https://github.com/KOLANICH-libs/JImageHash.py
sudo pip3 install --upgrade -e .
Go into other dir and open an (i)pythkn shell and try to import. The import will fail.
Check for pth files in the wrong locatikn
Apply the patch to setuptools
Try installation again.
Enjoy the package importable.

Output
KOLANICH@KOLANICH:~/JImageHash.py$ sudo pip3 install --upgrade -e .
Obtaining file:///home/KOLANICH/JImageHash.py
  Checking if build backend supports build_editable ... done
  Preparing metadata (pyproject.toml) ... done
Installing collected packages: JImageHash
  Running setup.py develop for JImageHash
Successfully installed JImageHash
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
KOLANICH@KOLANICH:~/ ipython
Python 3.9.7 (default, Sep 10 2021, 14:59:43)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.1.0.dev -- An enhanced Interactive Python. Type '?' for help.

In [1]: import JImageHash
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [1], in <module>
----> 1 import JImageHash

ModuleNotFoundError: No module named 'JImageHash'
KOLANICH@KOLANICH:~/ cat /usr/local/lib/python3.9/dist-packages/easy-install.pth | grep JImageHash.py
KOLANICH@KOLANICH:~/ cat /usr/lib/python3.9/site-packages/easy-install.pth
/home/KOLANICH/JImageHash.py
KOLANICH@KOLANICH:~/ cat /usr/lib/python3.9/site-packages/JImageHash.egg-link
/home/KOLANICH/JImageHash.py

Debian still needs to provide patches to support distutils as found in Setuptools. See #2996.

authors: KOLANICH jaraco


text:
Setuptools 34.0.2 breaks new virtual envs with six < 1.10

The recent change to strip out vendored packages (like six) breaks projects that pip install a version of six earlier than 1.10
This was also reported as an issue on virtualenv with code examples showing the problem. The commit on setuptools appears to be the root cause.

This change to setuptools was made intentionally in order to avoid the ugly hacks and complicated bootstrapping scenarios imposed by such hacks.
The issue here is that the offending packages that are requiring old versions of six. They simply are no longer compatible with setuptools.
Those failing packages accepted the burden of incompatibility with any package that declared a later six dependency when they pinned their dependency to a specific version. Since those packages are demanding an old version of six, then it should be those packages that either vendor six themselves or adapt to support newer versions of six.
I did look into the possibility of expanding the supported six versions in setuptools. If I change the version to 1.6.0, some integration tests start to fail (because stevedore depends on six 1.9), but otherwise the tests pass. Perhaps setting a lower lower bound will be viable and save some headaches.

In applications, it is a best practice to pin every dependency with == in requirements.txt for reproducibility.
This usually means pip freeze --all > requirements.txt.
If one were to generate a requirements.txt with an older version of six / pyparsing / etc. they're now suddenly broken as virtualenv downloads the newest version of setuptools (demonstrated in pypa/virtualenv#1009).

@asottile: How do you suggest these inherent dependency conflicts be reconciled?

That's a good question!
In an ideal world, pip wouldn't upgrade setuptools to a version that conflicts with already installed dependencies (and would do dependency resolution) but I don't think that's really something that's doable without making pip way more intelligent and way slower.
It's possible this is just an "unfortunate" combination of two separate "unfortunate" decisions, notably:

virtualenv upgrades pip / setuptools / wheel by default (new behaviour in 15)
setuptools unvendored dependencies (new in 34)

At least personally, the first behaviour is alarming and makes it very difficult to have repeatable builds (without scattering --no-download, VIRTUALENV_NO_DOWNLOAD=1 or PIP_INDEX_URL=... virtualenv all over our ~thousands of codebases).  The second seems not a problem to me, I rather like that setuptools now acts more like a normal python package (though the pypa tools don't treat it as such: magically upgrading, excluding from freeze, etc.).
In short, big shrugs -- it might just be "unfortunate: won't fix" and that would be ok too!

authors: asottile jaraco truthdoug


text:
Update pyright configs comments

Summary of changes
Config-only changes to make comments more up to date
Pull Request Checklist

[x] Changes have tests (test config change)
[x] News fragment added in newsfragments/. (not user facing)
(See documentation for details)

Thank you.

source: gharchive/pull-request

authors: Avasam abravalheri


text:
Cassandra index does not work

When using Cassandra as index, with keyspace metric and schema provided in https://github.com/pyr/cyanite/blob/master/doc/schema.cql, Cyanite throws exception:
WARN [2015-10-23 16:24:29,742] main - io.cyanite uncaught exception
clojure.lang.ExceptionInfo: Error in component :index in system clojure.lang.PersistentArrayMap calling #'com.stuartsierra.component/start
        at clojure.core$ex_info.invokeStatic(core.clj:4610) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$ex_info.invoke(core.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$try_action.invokeStatic(component.cljc:119) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$try_action.invoke(component.cljc) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$update_system$fn__315.invoke(component.cljc:139) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.ArraySeq.reduce(ArraySeq.java:114) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$reduce.invokeStatic(core.clj:6536) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$reduce.invoke(core.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$update_system.invokeStatic(component.cljc:135) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$update_system.doInvoke(component.cljc) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.RestFn.invoke(RestFn.java:445) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$start_system.invokeStatic(component.cljc:163) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$start_system.invoke(component.cljc) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$start_system.invokeStatic(component.cljc:161) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$start_system.invoke(component.cljc) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite$_main.invokeStatic(cyanite.clj:103) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite$_main.doInvoke(cyanite.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.RestFn.applyTo(RestFn.java:137) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite.main(Unknown Source) ~[cyanite-0.5.1-standalone.jar:na]
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
        at qbits.alia.cluster_options$fn__8027.invokeStatic(cluster_options.clj:35) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia.cluster_options$fn__8027.invoke(cluster_options.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.MultiFn.invoke(MultiFn.java:238) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia.cluster_options$set_cluster_options_BANG_$fn__8170.invoke(cluster_options.clj:285) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core.protocols$iter_reduce.invokeStatic(protocols.clj:49) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core.protocols$fn__6734.invokeStatic(protocols.clj:75) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core.protocols$fn__6734.invoke(protocols.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core.protocols$fn__6676$G__6671__6689.invoke(protocols.clj:13) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$reduce.invokeStatic(core.clj:6537) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$reduce.invoke(core.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia.cluster_options$set_cluster_options_BANG_.invokeStatic(cluster_options.clj:284) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia.cluster_options$set_cluster_options_BANG_.invoke(cluster_options.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia$cluster.invokeStatic(alia.clj:184) ~[cyanite-0.5.1-standalone.jar:na]
        at qbits.alia$cluster.invoke(alia.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite.index.cassandra$session_BANG_.invokeStatic(cassandra.clj:47) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite.index.cassandra$session_BANG_.invoke(cassandra.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at io.cyanite.index.cassandra.CassandraIndex.start(cassandra.clj:75) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$fn__264$G__258__266.invoke(component.cljc:5) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$fn__264$G__257__269.invoke(component.cljc:5) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.Var.invoke(Var.java:379) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.AFn.applyToHelper(AFn.java:154) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.lang.Var.applyTo(Var.java:700) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$apply.invokeStatic(core.clj:647) ~[cyanite-0.5.1-standalone.jar:na]
        at clojure.core$apply.invoke(core.clj) ~[cyanite-0.5.1-standalone.jar:na]
        at com.stuartsierra.component$try_action.invokeStatic(component.cljc:117) ~[cyanite-0.5.1-standalone.jar:na]
        ... 16 common frames omitted

Is this schema problem and if so, where optimal schema for index keyspace can be found?

I also encountered this error, however it was due to a misconfiguration I made in the cyanite.yaml for the index. Here is an exampled of a structure that is working for me today for 0.5.1:
index:
  type: cassandra
  options:
    cluster: 127.0.0.1

I think this is a fairly new feature and the documentation needs to be updated to make this a bit more apparent.
If this  doesn't correct the issue can you also post your cyanite.yaml config?

Yep, this is a configuration error.

authors: aww-yiss pyr spynode

repo: pyr/cyanite

license: isc


text:
pyscf parses sys.argv when setting max_memory on a Mole object

Dear developers,
while writing & executing some unittests for my own code that uses pyscf I encountered the following issue:
Setting max_memory on a mol object leads to a call of cmd_args() in [...]/pyscf/gto/mole.py. When I execute such code with pytest -m [some mark] then pyscf will parse sys.argv[1:] in cmd_args() and the mark supplied to pytest with -m [some mark] will be interpreted as memory argument py pyscf.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../anaconda3/lib/python3.6/site-packages/pyscf/gto/mole.py:2033: in build
    _update_from_cmdargs_(self)
../../../anaconda3/lib/python3.6/site-packages/pyscf/gto/mole.py:3103: in _update_from_cmdargs_
    opts = cmd_args.cmd_args()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    def cmd_args():
        '''
        get input from cmdline
        '''
        parser = argparse.ArgumentParser()
        parser.add_argument('-v', '--verbose',
                            action='store_false', dest='verbose', default=0,
                            help='make lots of noise')
        parser.add_argument('-q', '--quiet',
                            action='store_false', dest='quite', default=False,
                            help='be very quiet')
        parser.add_argument('-o', '--output',
                            dest='output', metavar='FILE', help='write output to FILE')
        parser.add_argument('-m', '--max-memory',
                            action='store', dest='max_memory', metavar='NUM',
                            help='maximum memory to use (in MB)')

        (opts, args_left) = parser.parse_known_args()

        if opts.quite:
            opts.verbose = pyscf.lib.logger.QUIET

        if opts.verbose:
            opts.verbose = pyscf.lib.logger.DEBUG

        if opts.max_memory:
>           opts.max_memory = float(opts.max_memory)
E           ValueError: could not convert string to float: 'pyscf'

Here is code that reproduces the issue.
from pyscf import gto
import pytest

# Call with:
#   pytest -m pyscf bug.py

@pytest.mark.pyscf
def test_mark():
    mol = gto.Mole()
    atoms = "H H".split()
    coords = [(0., 0., 0.), (0., 0., 1.4)]
    mol.atom = [(atom, c) for atom, c
                in zip(atoms, coords)]
    mol.basis = "321g"
    mol.unit = "Bohr"
    mol.verbose = 4
    mol.max_memory = 2000
    mol.build()

    return mol

Executing this code with pytest -m pyscf bug.py will lead to the crash. I tested it with pyscf 1.6.5.
That pyscf parses sys.argv[1:] even though it is solely used as a python module is rather suprising.
With best regards & thanks for your work,
Johannes

Might this be related to parse_arg? By default it is true:
https://github.com/pyscf/pyscf/blob/master/pyscf/gto/mole.py#L2015

Thanks for the hint. That solves it for me. But maybe it would be a good idea to turn this off by default?!

I agree that the parse_arg option should be False by default.
We encountered a mysterious error using our own Python script, which turned out to be caused by conflict between a command line option of our own script and one parsed by cmd_args() in pyscf.
Since we are using pyscf indirectly via some third-party libraries, we do not have means to change the parse_arg option by ourselves.

cli may be rarely used. We can discuss whether a cli parser is needed when moving to pyscf2

It would be great to either remove this, set the default to false or create a global configuration flag to disable it.

@eljost @mkrompiec @sunqm has this been resolved now?

Yes

authors: btglau eljost kwkbtr mkrompiec sunqm verena-neufeld

repo: pyscf/pyscf


text:
write script to auto identify file types in data directory

Need a script to identify the cals, data, etc given a directory of data.

adam working on this as part of log/batch generation

authors: aburgasser kelle

repo: pyspextool/pyspextool


text:
I have a porblem with export.

I have an error:
Traceback (most recent call last):
File "", line 189, in run_module_as_main
File "", line 112, in get_module_details
File "C:\Users\tymon\VNEV\Lib\site-packages\pystage\convert_init.py", line 1, in
from .code_writer import CodeWriter
File "C:\Users\tymon\VNEV\Lib\site-packages\pystage\convert\code_writer.py", line 11, in
from pystage.core.sprite import CoreSprite
File "C:\Users\tymon\VNEV\Lib\site-packages\pystage\core_init.py", line 1, in
from .sprite import CoreSprite
File "C:\Users\tymon\VNEV\Lib\site-packages\pystage\core\sprite.py", line 2, in
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
Please for help.
Thank you.

pip install setuptools should fix this. We seem to miss a dependency on it.

authors: Xterplot kaiec

repo: pystage/pystage


text:
Mention attr.fields() after attrs_attrs in 'How does it work'

The mentioning of attrs_attrs in a 'how does it work' document makes sense but it seems important to mention that there are good non-dunder ways to access the data.
WIP for:

[x] Documentation in .rst files is written using semantic newlines.
[x] Checking doc rendering for the attrs.fields() link

Thanks! I'll ignore CI here. shakes fist at AP

authors: altendky hynek

repo: python-attrs/attrs


text:
Possible improvmeents

Hi!
A few possible improvements (overall I got over 100x speed improvement over your vanilla code).
a) mapping all variable names to integers (internally). This depends, but for me it gave up to 10x speedup.
b) Changing a few things in the solvers. I copy an example of what I did. It's rather simple optimization of taking some of the repeated code out of the loops. Unless I missed it there, there are no dependencies there. (I checked the correctness of the code). This gives around 4x speedup
c) Switching from dicts to lists inside the solvers (havent done that yet). Seems its gonna be possible in a few places. At the moment dictionary copy method in "yield assignments.copy()" takes bulk of the time.
Hope it helps!
class OptimizedSolver(Solver):
"""
Problem solver with backtracking capabilities
Examples:

>>> result = [[('a', 1), ('b', 2)],
...           [('a', 1), ('b', 3)],
...           [('a', 2), ('b', 3)]]

>>> problem = Problem(BacktrackingSolver())
>>> problem.addVariables(["a", "b"], [1, 2, 3])
>>> problem.addConstraint(lambda a, b: b > a, ["a", "b"])

>>> solution = problem.getSolution()
>>> sorted(solution.items()) in result
True

>>> for solution in problem.getSolutionIter():
...     sorted(solution.items()) in result
True
True
True

>>> for solution in problem.getSolutions():
...     sorted(solution.items()) in result
True
True
True
"""

def __init__(self, forwardcheck=True):
    """
    @param forwardcheck: If false forward checking will not be requested
                         to constraints while looking for solutions
                         (default is true)
    @type  forwardcheck: bool
    """
    self._forwardcheck = forwardcheck

def getSolutionIter(self, domains, constraints, vconstraints, lst):
    forwardcheck = self._forwardcheck
    assignments = {}

    queue = []

    while True:

        # Mix the Degree and Minimum Remaing Values (MRV) heuristics
        for variable in lst:
            if variable not in assignments:
                # Found unassigned variable
                values = domains[variable][:]
                if forwardcheck:
                    pushdomains = [
                        domains[x]
                        for x in domains
                        if x not in assignments and x != variable
                    ]
                else:
                    pushdomains = None
                break
        else:
            # No unassigned variables. We've got a solution. Go back
            # to last variable, if there's one.
            yield assignments.copy()
            if not queue:
                return
            variable, values, pushdomains = queue.pop()
            if pushdomains:
                for domain in pushdomains:
                    domain.popState()

        while True:
            # We have a variable. Do we have any values left?
            if not values:
                # No. Go back to last variable, if there's one.
                del assignments[variable]
                while queue:
                    variable, values, pushdomains = queue.pop()
                    if pushdomains:
                        for domain in pushdomains:
                            domain.popState()
                    if values:
                        break
                    del assignments[variable]
                else:
                    return

            # Got a value. Check it.
            assignments[variable] = values.pop()

            if pushdomains:
                for domain in pushdomains:
                    domain.pushState()

            for constraint, variables in vconstraints[variable]:
                if not constraint(variables, domains, assignments, pushdomains):
                    # Value is not good.
                    break
            else:
                break

            if pushdomains:
                for domain in pushdomains:
                    domain.popState()

        # Push state before looking for next variable.
        queue.append((variable, values, pushdomains))

    raise RuntimeError("Can't happen")

def getSolutions(self, domains, constraints, vconstraints):
    lst = [
        (-len(vconstraints[variable]), len(domains[variable]), variable)
        for variable in domains
    ]
    lst.sort()
    return list(self.getSolutionIter(domains, constraints, vconstraints, [c for a,b,c in lst]))

Is this implemented?

Is this implemented?

I haven't had time yet to really dig into the code, but was wondering if the author of this issue had given any thought to cythonizing the code wherever possible?

authors: maciejlibraryx sk-surya trsh tyarosevich

repo: python-constraint/python-constraint


text:
/swap_pixel and /copy_pixel

Suggestion add a /move endpoint
This will allow a user to move a pixel on maybe a shorter rate limit than /set_pixel
Things to consider are:

Max range of moving a pixel
dynamic rate limit based on distance moved

Discussion on discord points towards 2 things:

a /copy_pixel endpoint to copy a pixel from one location to another but NOT change the original location's pixel
much higher ratelimits on /swap_pixel since it can be used destructively

If this is approved I'll reopen #83 with these changes

I am closing this issue. We will be doing something different for the next event, but that will be planned in secret, as to not spoil the fun!

authors: ChrisLovering GDWR vcokltfre

repo: python-discord/pixels


text:
Find Strongest WiFi Available and Connect

Script Title - Find Strongest WiFi Available and Connect
Brief - The Script can be used to find the strongest Wi-Fi signal available and connect to it with the provided password, in Python 3.
Programming Language

[x] Python

Hey, Can you assign it to me?

Hey, Can you assign it to me?

Hi @jashlodhavia , have created the issue to work on it myself, since I already have the script with me.
Thank you.

authors: CyanGirl jashlodhavia

repo: python-geeks/Automation-scripts


text:
Changes to Home Page Formatting

Description
Changing the home page formatting.

[ ] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
yarn test done. All tests passed
Checklist:

[ ] I have performed a self-review of my own code

@Pulathisi : Can you please fill out the description of the PR with what it does and change the heading too into what the PR is about. :smile:
Also I saw that you've added a package-lock.json file. This means you've used npm. However the project uses yarn. Could you remove that file and use yarn instead. Yarn works almost the same way as npm; https://github.com/python-sinhala-education-society/OpenLearnr/blob/master/docs/DEVELOPER_DOCUMENTATION.md

@Pulathisi : I tested your change and it seems to remove some formatting from the front page. Also the mobile formatting seems off.

whereas the original one was,

Also the change seems to make the titles and text centered;

whereas the original was,

Normally card text and titles are left aligned (https://material.io/components/cards/#). I try to maintain the Google Material Design guide; so can we go by it for these kind of changes. :smile:
Can we not do this change for now machn? I don't see a huge improvement to the front page. One way we could improve it though is making it more in accordance with material design guidelines.

@Pulathisi : I tested your change and it seems to remove some formatting from the front page. Also the mobile formatting seems off.

whereas the original one was,

Also the change seems to make the titles and text centered;

whereas the original was,

Normally card text and titles are left aligned (https://material.io/components/cards/#). I try to maintain the Google Material Design guide; so can we go by it for these kind of changes. 😄
Can we not do this change for now machn? I don't see a huge improvement to the front page. One way we could improve it though is making it more in accordance with material design guidelines.

@SudharakaP LOL is this material. I thought its flat design. Let me know if you want a material touch to it. U have to add shadows and stuff
https://en.wikipedia.org/wiki/Flat_design

@SudharakaP I force pushed my changes related to home page. Let me know if there is any issues with that ;) check for mobile devices now. I did some ui modifications. Also please note that I didnt check for Ipads. Only mobiles

@Pulathisi : Hey, machn, sorry; can we not do this change for now? The reason is our front page and stuff is okay for now and it works without issue; surely it can be improved but there's more pressing issues with the site than changing the look of the front page. I'll keep this in mind and we'll revisit this later if you are okay with that. :smile:
It's my fault actually and I should have been more clear of the process; sorry if it wasted your time. Normally what I do is this; I go to issues (https://github.com/python-sinhala-education-society/OpenLearnr/issues) and create a new issue with the changes I want to do. Sometimes @asanka-herath will do that too. Also I normally add the appropriate badges and include it in our project board (https://github.com/python-sinhala-education-society/OpenLearnr/projects/2). And when I have time I go to this project board and take an issue and work on it. This is how normally most open source projects work. The issue is for discussing the change and then we do the pull request if it's agreed to do it.
How about this? For front end stuff, there's lots of things to do actually. One of the things that @asanka-herath has problems with is searching for videos from the comment approval screen. We have an issue for that; #51 . Also #116 is a good improvement that could make things easier for admins. In addition the following two issues that I just created; #154, #155 could improve user experience for the admin/instructors greatly. If you have any questions about these feel free to comment on those issues. Also feel free to create any new issues if you have new ideas. :smile: I am sure there's lots of this kind of issues; and I'll create some more in the days to come.
The aesthetic appeal of the website is okay for now. We lack lots of features such as notifications when a comment is made; and comment editing #55 and after we do these we'll come back to polishing the UI aspects.

@SudharakaP Its now I realized what you really intend me to do. 😄 I will work on the issues you are referring to but since you are saying the UI can be improved I doubt why you don't go ahead with these changes. For me the mobile UIs and Desktop UIs have improved with my changes and I don't see any reason to reject these changes. If front page stuff is okay but surely can be improved shall we accept these changes and move on from here ?

@SudharakaP Its now I realized what you really intend me to do. smile I will work on the issues you are referring to but since you are saying the UI can be improved I doubt why you don't go ahead with these changes. For me the mobile UIs and Desktop UIs have improved with my changes and I don't see any reason to reject these changes. If front page stuff is okay but surely can be improved shall we accept these changes and move on from here ?

The reason is trying to merge this we'll have to do few more iterations of testing and corrections. For example the CI is failing with this change. I like us to work on things that being currently are problems for users (such as the ones I described in my previous comment). And I feel we have more pressing matters to address than doing visual changes right now and keep iterating on this issue wastes both our time. Does that make sense? :smile: :smile:
However if you really want to go ahead with this change, let me know as well; we cannot merge this as it is will have to do some more corrections perhaps (such as getting the CI to pass). Also if you don't like the issues I mentioned above please feel free to just open an issue with your ideas then we could discuss about them. :smile:

@Pulathisi : I am going to close this issue for now; I've added some more info to our readme and contributions pages about opening an issue before making pull requests. This way in the future we can all be in the same page. 😄

@SudharakaP If that's the case I am not the one suitable for this project. 😄  Because front end look and feel is what I enjoy working with. So best of luck with your project. Wish you guys strength to continue the good work. 😄

@Pulathisi : How about this. If you like to work on front end UI changes can you open an issue on how it can be improved, maybe even linking to this PR? Is this PR a larger change you anticipate to get the site in accordance with some sort of design you have in mind? :smile:
The problem I am thinking is with the PR first approach it's harder to understand what the change achieves. What I am suggesting is exactly what we do for example in this project; https://github.com/jhipster/generator-jhipster.

authors: Pulathisi SudharakaP


text:
How would I be able to send bytes data as a text frame.

THe websocket server I am using is asking for text frames but orjson creates bytes directly.
I want to be able to send these bytes directly as text frames, but the way the library works , it seems not possible maybe I have to change the connection object.
Is there a documented way to do this? regards

Right now you have to use send(your_json_bytestring.decode()).
To avoid the useless decoding and encoding, send() could gain an encode keyword argument, similar to the decode argument of recv() — whose introduction was motivated by orjson.
Marking as a feature request.

Based on your Twitter, I'm afraid that https://websockets.readthedocs.io/en/latest/project/support.html#cryptocurrency-users applies, FYI.

Well I am not going to complain because I totally agree with you. Nevertheless, Thanks Aymeric

NB: I added the feature to the asyncio implementation yesterday. I'm probably going to do the same in the sync implementation soon.

Merci

authors: aaugustin percojazz

repo: python-websockets/websockets


text:
chore(main): release 1.1.0

:robot: I have created a release beep boop
1.1.0 (2024-10-16)
Features

add devbox uv scripts (ab9dac2)
add python + pip (bf88d72)
debian dockerfile (b778148)

Bug Fixes

.env location (0bf7094)
empty args (dbc29b9)
env vars change based on calling taskfile (0d459bc)
pre-commit (bdd6bcf)
squelch login warning (a3fe52b)
top-level directory (6b08c2c)
wrong operator in conditional (8e5ceb2)

Documentation

add pypi env vars (291c315)
fix formatting, add markdownlint exclusions (eaee84a)
update readme (a9e289d)
update README.md (f75559c)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.1.0
:sunflower:

repo: pythoninthegrass/mvp

license: Unlicense


text:
🐛 [Bug] cannot load quantize_fp8 even though the modelopt[all] installed

Bug Description
cannot load quantize_fp8 even though the modelopt[all] installed
WARNING:torch_tensorrt.dynamo.conversion.aten_ops_converters:Unable to import quantization op. Please install modelopt library (https://github.com/NVIDIA/TensorRT-Model-Optimizer?tab=readme-ov-file#installation) to add support for compiling quantized models
WARNING:py.warnings:/usr/lib64/python3.11/tempfile.py:904: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/tmp/tmp91sqmx7h'>
  _warnings.warn(warn_message, ResourceWarning)

+ exec python -c 'import modelopt.torch.quantization.extensions as ext; print(ext.cuda_ext); print(ext.cuda_ext_fp8)'
Loading extension modelopt_cuda_ext...
<module 'modelopt_cuda_ext' from '/home/user/.cache/torch_extensions/py311_cu121/modelopt_cuda_ext/modelopt_cuda_ext.so'>
Loading extension modelopt_cuda_ext_fp8...
<module 'modelopt_cuda_ext_fp8' from '/home/user/.cache/torch_extensions/py311_cu121/modelopt_cuda_ext_fp8/modelopt_cuda_ext_fp8.so'>

nvidia-cublas-cu12       12.1.3.1
nvidia-cuda-cupti-cu12   12.1.105
nvidia-cuda-nvrtc-cu12   12.1.105
nvidia-cuda-runtime-cu12 12.1.105
nvidia-cudnn-cu12        9.1.0.70
nvidia-cufft-cu12        11.0.2.54
nvidia-curand-cu12       10.3.2.106
nvidia-cusolver-cu12     11.4.5.107
nvidia-cusparse-cu12     12.1.0.106
nvidia-modelopt          0.17.0
nvidia-nccl-cu12         2.20.5
nvidia-nvjitlink-cu12    12.5.82
nvidia-nvtx-cu12         12.1.105

torch                    2.4.1
torch_tensorrt           2.4.0
torchaudio               2.4.1
torchinfo                1.8.0
torchmetrics             1.4.3
torchprofile             0.0.4
torchvision              0.19.1
tensorrt                 10.1.0
tensorrt-cu12            10.5.0
tensorrt-cu12-bindings   10.1.0
tensorrt-cu12-libs       10.1.0

To Reproduce
Steps to reproduce the behavior:

create venv and activate it
install torch, torchvision, torchaudio, tensorrt, nvidia-modelopt[all] torch_tensorrt
python -c "import modelopt.torch.quantization.extensions as ext; print(ext.cuda_ext); print(ext.cuda_ext_fp8)"
python -c "import torch_tensorrt"

Expected behavior

should import without warning
Environment

Build information about Torch-TensorRT can be found by turning on debug messages

Torch-TensorRT Version (e.g. 1.0.0): '10.1.0'
PyTorch Version (e.g. 1.0): 2.4.1
CPU Architecture: x86_64
OS (e.g., Linux): Ubuntu
How you installed PyTorch (conda, pip, libtorch, source): pip
Build command you used (if compiling from source):
Are you using local sources or building from archives:
Python version: 3.11
CUDA version: 12.1
GPU models and configuration: RTX4k
Any other relevant information:

Additional context

torch_tensorrt 2.4.0 used torch.ops.trt.quantize_fp8 at the time of release. The latest main branch already changed to use torch.ops.tensorrt.quantize_op for nvidia-modelopt 0.17.0. You can install the latest nightly build by:
pip install --pre -U torch torchaudio torchvision torch_tensorrt --index-url https://download.pytorch.org/whl/nightly/cu121 --extra-index-url https://pypi.nvidia.com

authors: HolyWu braindevices

repo: pytorch/TensorRT


text:
Autograd tests for Transforms MFCC

#1414

cc @mthrok

repo: pytorch/audio


text:
Set the correct L2 size for Ampere Altra (aarch64).

Use the midr to identify Ampere Altra cores and set the L2 cache size to 1MiB (as opposed to the default minimum size of 256KiB for cpuinfo_uarch_neoverse_n1).

If this is good to go, can someone please merge it? Thanks!

repo: pytorch/cpuinfo


text:
fix newline stripping in plain text readers

Fixes #173
Note that the input to strip

is a string specifying the set of characters to be removed. [Emphasis mine]

Thus, stripping works something like
for char in chars:
    string.replace(char, "")

rather than
string.replace(chars, "")

Thus, always stripping "\r\n" is harmless even if the line terminator is only "\n" or \"r".

The other failure is valid and will be fixed in pytorch/vision#5227

repo: pytorch/data


text:
Implement DataPipe to convert Iter to Map

Stack from ghstack:

#202 Revamp librispeech dataset
#203 [DataPipe] Fix OnDiskCacheHolder to list all files for decompressing operations
#201 Implement DataPipe to convert Iter to Map

This DataPipe is used to lazily load data from IterDataPipe to a MapDataPipe.
Differential Revision: D34085744

@ejguan has imported this pull request.  If you are a Facebook employee, you can view this diff on Phabricator.

Besides Kevin's comments, I find it is little bit confusing to have .map and .to_map. Should we force .to_map arguments to be kwargs only? Maybe .to_map(key_fn=x, value_fn=x) will be cleaner. I'm open to suggestions.

Besides Kevin's comments, I find it is little bit confusing to have .map and .to_map. Should we force .to_map arguments to be kwargs only? Maybe .to_map(key_fn=x, value_fn=x) will be cleaner. I'm open to suggestions.

Do you think it's still confusing if we change it to .to_map_datapipe?

I'm fine with .to_map_datapipe

@ejguan has imported this pull request.  If you are a Facebook employee, you can view this diff on Phabricator.

@ejguan has imported this pull request.  If you are a Facebook employee, you can view this diff on Phabricator.

@ejguan has imported this pull request.  If you are a Facebook employee, you can view this diff on Phabricator.

authors: VitalyFedyunin ejguan


text:
How to load pretrained BERT weight for the encoder?

I want to load Bert's weight in the encoder, but I can't find any vocab that can be used on the Fairseq. Does Fairseq only support Robert?
I see that the vocab used in Fairseq contains the frequency corresponding to the token. If I directly use Bert's vocab and forge the token's frequency, can it work?
Anyway,  what am I supposed to do right?
Thanks~

Does Fairseq only support Robert?

I'm not sure that we have any pre-trained BERT models for fairseq, but we certainly support training BERT models.

If I directly use Bert's vocab and forge the token's frequency, can it work?

Yes this should work

Closing due to inactivity.

repo: pytorch/fairseq


text:
Negative Samples in  Faster RCNN training results in NaN RPN_BOX_REG Loss

Overview:
I updated torch and torchvision to the latest builds. A cool update was that now negative samples could be included in RCNN training. However, I end up getting  a NaN value for loss_rpn_box_reg when I provide negative samples.
I was training a Pedestrian Detector. Based on my custom dataset input, if a label wasn't provided, I would use it as a negative sample. This is the code snippet I used.
    def __getitem__(self, idx):
        img_path , x1 , y1 , x2 ,y2 , label = self.imgs[idx].split(",")
        img = Image.open(img_path).convert("RGB")
        boxes = []
        if label:
            pos = np.asarray([[y1,y2],[x1,x2]]).astype(np.float)
            xmin = np.min(pos[1])
            xmax = np.max(pos[1])
            ymin = np.min(pos[0])
            ymax = np.max(pos[0])
            boxes.append([xmin, ymin, xmax, ymax])
            labels = torch.ones((1,), dtype=torch.int64)
            iscrowd = torch.zeros((1,), dtype=torch.int64)
        else:
            boxes.append([0.0,0.0,0.0,0.0])
            labels = torch.zeros((1,), dtype=torch.int64)
            iscrowd = torch.zeros((0,), dtype=torch.int64)
        # convert everything into a torch.Tensor
        boxes = torch.as_tensor(boxes, dtype=torch.float32)
        image_id = torch.tensor([idx])
        area = (boxes[:, 3] - boxes[:, 1]) * (boxes[:, 2] - boxes[:, 0])
        target = {}
        target["boxes"] = boxes
        target["labels"] = labels
        target["image_id"] = image_id
        target["area"] = area
        target["iscrowd"] = iscrowd
        if self.transforms is not None:
            img, target = self.transforms(img, target)
        return img, target

The training seems to work fine if I replace the following line:
boxes.append([0.0,0.0,0.0,0.0])

with
boxes.append([0.0,0.0,0.1,0.1])

So i'm guessing it's because both xmin/ymin and xmax/ymax are equal.
Setup:
Torch : 1.5.0
Torchvision: 0.6.0
Nvidia - 440.33
Cuda-10.2

Yes, having degenerate boxes (i.e., boxes for which xmin <= xmax or ymin <= ymax) does yield NaN during training.
If you don't have any boxes in your image, you should do instead the following, as explained in the release notes https://github.com/pytorch/vision/releases/tag/v0.6.0
boxes = torch.empty((0, 4), dtype=torch.float32)

here is a more complete example https://github.com/pytorch/vision/blob/f9ef235c402f48a335293c626e17bd8504d3af87/test/test_models_detection_negative_samples.py#L16-L21

Is there a particular reason to set image_id = 4? Or is this arbitrary?

Yes, having degenerate boxes (i.e., boxes for which xmin <= xmax or ymin <= ymax) does yield NaN during training.
If you don't have any boxes in your image, you should do instead the following, as explained in the release notes https://github.com/pytorch/vision/releases/tag/v0.6.0
boxes = torch.empty((0, 4), dtype=torch.float32)

here is a more complete example
https://github.com/pytorch/vision/blob/f9ef235c402f48a335293c626e17bd8504d3af87/test/test_models_detection_negative_samples.py#L16-L21

/opt/conda/lib/python3.7/site-packages/torchvision/models/detection/_utils.py in decode(self, rel_codes, boxes)
    174             box_sum += val
    175         pred_boxes = self.decode_single(
--> 176             rel_codes.reshape(box_sum, -1), concat_boxes
    177         )
    178         return pred_boxes.reshape(box_sum, -1, 4)

RuntimeError: cannot reshape tensor of 0 elements into shape [0, -1] because the unspecified dimension size -1 can be any value and is ambiguous

@fmassa But it throw this to me...

@ruotaozhang

Is there a particular reason to set image_id = 4? Or is this arbitrary?

It's arbitrary
@LogicNg This error should have been fixed in https://github.com/pytorch/vision/pull/3205 , could you try a newer version of torchvision?

authors: LogicNg fmassa praneet195 ruotaozhang

repo: pytorch/vision


text:
compiling from source gets Permission denied

🐛 Describe the bug
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

    [Errno 13] Permission denied: '/usr/local/lib/python3.8/dist-packages/test-easy-install-455594.write-test'

Hey, I'm trying to compile from source the latest version in nightly (doesn't matter if i checkout too a different tag)
I always get the same error
I'm using an ARM based edge device
Versions
branch nightly
cloning the repo and then
python3 setup.py install

I had recently installed from source (not on ARM though) but didn't face this issue.
This seems some access issue. Maybe you can try
Are you running in usr folder?
Do you need sudo? Can you try with sudo?
Or can you do chmod +x to allow permissions?
Can you try in some other folder?

Hi @eladpar , have you tried @oke-aditya suggestions?

Closing due to inactivity. @eladpar if the issues persists, feel free to re-open.

authors: YosuaMichael eladpar oke-aditya pmeier


text:
Added CMake config support

Added support to generate a TorchVisionConfig.cmake file which generates a Torch::Vision target that can be used in cmake-based projects.
Addresses #1046

Codecov Report

Merging #1339 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1339   +/-   ##
=======================================
  Coverage   65.84%   65.84%
=======================================
  Files          75       75
  Lines        5785     5785
  Branches      885      885
=======================================
  Hits         3809     3809
  Misses       1710     1710
  Partials      266      266

Impacted Files
Coverage Δ

torchvision/transforms/transforms.py
80.98% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6de158c...0f21726. Read the comment docs.

Thanks for the PR!
@ShahriarSS can you have a look?

@fmassa I'll have a look at this today.

authors: ShahriarSS bmanga codecov-io fmassa


text:
Add Gallery for CenterCrop and FiveCrop

Helps #3688
Rendered Transform docs
Rendered Gallery docs
Hope it is fine.
cc @NicolasHug

Noice! Thanks @oke-aditya

authors: NicolasHug oke-aditya


text:
fix pr-labels workflow

This should fix #8224. Our process script is still running without issues. Looking at two examples

:heavy_check_mark: https://github.com/pytorch/vision/actions/runs/7828303251/job/21357876487
:x: https://github.com/pytorch/vision/actions/runs/7843097488/job/21402700234

it seems what is going wrong is the action that is supposed to create the comment on the PR. I've updated the permissions for this workflow to be able to write to PRs.
Plus, we are using ancient action versions here so I updated them.
cc @seemethere

Bot is working again: https://github.com/pytorch/vision/actions/runs/7900300666/job/21561546412


text:
Test fixes for PR #59

This PR simply moves #59 from a fork to this repo so that I can attempt to fix the tests.

TODO

[ ] Add comment explaining issue with dodgy return code as detailed in param issue.

I'm happy to have the actual code change from this PR or #59, but the updates to the tests rely on a slew of other libraries that aren't appropriate to include in the autover codebase, even as optional tests.  If it's possible to boil those tests down to a small amount of standard Python, it would be great to include them, but otherwise I'd say the probability that these tests will cause maintenance issues for us over time is much higher than the probability that they will catch actual errors. I'd strongly favor moving towards a design like https://github.com/pyviz-dev/autover/pull/66 where released versions are no longer ever calling any subprocesses at all, at which point no such tests should be necessary in any case.

If it's possible to boil those tests down to a small amount of standard Python, it would be great to include them, but otherwise I'd say the probability that these tests will cause maintenance issues for us over time is much higher than the probability that they will catch actual errors.

I agree and I've updated the PR to just include just the fix (they are still in the history and shown to be passing, thanks @julioasoto!). As you say, once #66 is working this code path should be mostly moot (for release users at least).
@jbednar Think this simplified PR can now be merged?

authors: jbednar jlstevens

repo: pyviz-dev/autover


text:
Warn user for unsupported DICOM IODs

Use the built-in logger to warn users when opening unsupported or untested DICOM IODs.

Duplicated of #31

repo: pyvoxel/pyvoxel


text:
Initial revision

Please review.

LGTM

LGTM

LGTM

LGTM

LGTM

authors: FumiKobayashi fujiishigeki massn rsobt yoshioka1128

repo: q-group-work/qulacs


text:
🛑 nitter.domain.glass is down

In 6796869, nitter.domain.glass (https://nitter.domain.glass) was down:

HTTP code: 503
Response time: 178 ms

Resolved: nitter.domain.glass is back up in c2e0ecb after 1 hour, 49 minutes.


text:
🛑 nitter.tiekoetter.com is down

In 4441d89, nitter.tiekoetter.com (https://nitter.tiekoetter.com) was down:

HTTP code: 502
Response time: 673 ms

Resolved: nitter.tiekoetter.com is back up in b31b59a after 47 days, 16 hours, 55 minutes.


text:
🛑 nitter.tiekoetter.com is down

In 59fed21, nitter.tiekoetter.com (https://nitter.tiekoetter.com) was down:

HTTP code: 502
Response time: 606 ms

Resolved: nitter.tiekoetter.com is back up in 819a0b2 after 9 minutes.


text:
🛑 notabird.site is down

In b255d93, notabird.site (https://notabird.site) was down:

HTTP code: 520
Response time: 51 ms

Resolved: notabird.site is back up in fe907f2 after 10 minutes.


text:
fix: Compatibility with QuickTime Player on macOS

Implemented the following fix: https://superuser.com/a/820137/813480
Before this was shown and not working by that:

Awesome!

@mxschmitt I thought the tests would pass, since I have used this flag before. However it seems there is an issue. Do you mind re-opening the PR / investigating the failure.

authors: jperl mxschmitt

repo: qawolf/playwright-video


text:
aob_scan Search module address

When searching the module address with aobscan, it returns 0, such as Kernel32 dll+0x2a

We will use #23 for your aob_scan issues.


text:
Offer and Quotation confusion

Describe the bug
Depending on where the offer is downloaded it is an offer or a quotation. This is really confusing.
To Reproduce
Steps to reproduce the behavior:

Create a new offer
Save it
In the same view, download it
Navigate to the offer overview and download it again

Expected behavior
Both are the same
Actual behaviour
One is an offer, the other one is a quotation

The offer also has the quotation content. So it might "only" be a file naming error.

The first naming schema is the correct one.

Suggestion: extract the code that does the naming correct, put it into an own class, and call it from all places in the app, where the file naming is needed and needs to follow the convention.

 Offer and Quotation confusion


text:
CListUI滚动问题

动态添加Control时，滚动条为什么不会自动滚动啊，是我没用对么？

本来就没有支持自动滚动到底的功能，可以自己拓展一下


text:
Difference between rust version lite rpc

Hi, while reading the codes of this repo, I noticed there was another project: (https://github.com/blockworks-foundation/lite-rpc/tree/main) which was very similar to this project written in Rust.
May I ask if the Rust version did the same thing as this repo?
Thank you!

Hello, sorry for the delayed response.
This repository is built upon the following resources:
Typescript TPU Client
Blockworks Lite RPC
Solana TPU Client
These repositories are all quite similar, the most reliable implementation might be the Solana TPU Client

But for other than that, you can see the process is the same in every one of those projects.
They all request getClusterNodes, do some filtering...