Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot add "pyobjc~=7.2; sys_platform == 'darwin'" #449

Closed
1 task done
s0undt3ch opened this issue May 7, 2021 · 1 comment · Fixed by #456
Closed
1 task done

Cannot add "pyobjc~=7.2; sys_platform == 'darwin'" #449

s0undt3ch opened this issue May 7, 2021 · 1 comment · Fixed by #456
Labels
🐛 bug Something isn't working

Comments

@s0undt3ch
Copy link

  • I have searched the issue tracker and believe that this is not a duplicate.

Make sure you run commands with -v flag before pasting the output.

Steps to reproduce

pdm add "pyobjc; sys_platform == 'darwin'" -v
Adding packages to default dependencies: pyobjc
======== Start resolving requirements ========
        pyobjc; sys_platform == "darwin"
        Adding requirement pyobjc; sys_platform == "darwin"
        Adding requirement pyobjc-core==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-AddressBook==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-AppleScriptKit==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-ApplicationServices==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-Automator==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CFNetwork==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-Cocoa==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreAudio==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreAudioKit==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreData==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreMIDI==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreServices==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-CoreText==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-DiscRecording==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-DiscRecordingUI==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-DiskArbitration==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-DVDPlayback==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-ExceptionHandling==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-InstallerPlugins==7.2(from pyobjc 7.2)
        Adding requirement pyobjc-framework-LatentSemanticMapping==7.2(from pyobjc 7.2)
        [ .... more output .... ]
======== Ending round 133 ========
  Finish resolving
======== Resolution Result ========
Stable pins:
                                             pyobjc 7.2
                    pyobjc-framework-applescriptkit 7.2
               pyobjc-framework-applicationservices 7.2
                         pyobjc-framework-automator 7.2
                   pyobjc-framework-discrecordingui 7.2
                   pyobjc-framework-diskarbitration 7.2
                       pyobjc-framework-dvdplayback 7.2
                 pyobjc-framework-exceptionhandling 7.2
                  pyobjc-framework-installerplugins 7.2
             pyobjc-framework-latentsemanticmapping 7.2
                    pyobjc-framework-launchservices 7.2
                            pyobjc-framework-osakit 7.2
                   pyobjc-framework-preferencepanes 7.2
                pyobjc-framework-securityfoundation 7.2
                         pyobjc-framework-searchkit 7.2
                           pyobjc-framework-message 7.2
                   pyobjc-framework-applescriptobjc 7.2
                         pyobjc-framework-iosurface 7.2
                             pyobjc-framework-netfs 7.2
                     pyobjc-framework-opendirectory 7.2
                 pyobjc-framework-servicemanagement 7.2
                     pyobjc-framework-ituneslibrary 7.2
                pyobjc-framework-servernotification 7.2
                          pyobjc-framework-accounts 7.2
                          pyobjc-framework-eventkit 7.2
                            pyobjc-framework-social 7.2
                pyobjc-framework-mediaaccessibility 7.2
                      pyobjc-framework-medialibrary 7.2
                          pyobjc-framework-cloudkit 7.2
                        pyobjc-framework-findersync 7.2
               pyobjc-framework-localauthentication 7.2
                       pyobjc-framework-mediaplayer 7.2
                         pyobjc-framework-colorsync 7.2
                         pyobjc-framework-adsupport 7.2
                      pyobjc-framework-businesschat 7.2
                   pyobjc-framework-naturallanguage 7.2
            pyobjc-framework-videosubscriberaccount 7.2
                       pyobjc-framework-corehaptics 7.2
                        pyobjc-framework-coremotion 7.2
                       pyobjc-framework-devicecheck 7.2
                   pyobjc-framework-executionpolicy 7.2
                    pyobjc-framework-fileproviderui 7.2
                  pyobjc-framework-linkpresentation 7.2
                         pyobjc-framework-pencilkit 7.2
             pyobjc-framework-quicklookthumbnailing 7.2
                     pyobjc-framework-soundanalysis 7.2
                        pyobjc-framework-adservices 7.2
           pyobjc-framework-apptrackingtransparency 7.2
                           pyobjc-framework-callkit 7.2
                  pyobjc-framework-kernelmanagement 7.2
      pyobjc-framework-metalperformanceshadersgraph 7.2
                         pyobjc-framework-mlcompute 7.2
                        pyobjc-framework-screentime 7.2
            pyobjc-framework-uniformtypeidentifiers 7.2
               pyobjc-framework-usernotificationsui 7.2
                     pyobjc-framework-calendarstore 7.2
                     pyobjc-framework-collaboration 7.2
                pyobjc-framework-dictionaryservices 7.2
                    pyobjc-framework-instantmessage 7.2
               pyobjc-framework-interfacebuilderkit 7.2
                            pyobjc-framework-pubsub 7.2
                       pyobjc-framework-addressbook 7.2
                         pyobjc-framework-cfnetwork 7.2
                      pyobjc-framework-coreaudiokit 7.2
                          pyobjc-framework-coredata 7.2
                          pyobjc-framework-coremidi 7.2
                      pyobjc-framework-coreservices 7.2
                     pyobjc-framework-discrecording 7.2
                       pyobjc-framework-screensaver 7.2
                 pyobjc-framework-securityinterface 7.2
                      pyobjc-framework-syncservices 7.2
               pyobjc-framework-systemconfiguration 7.2
                            pyobjc-framework-webkit 7.2
                      pyobjc-framework-corelocation 7.2
                          pyobjc-framework-corewlan 7.2
                  pyobjc-framework-imagecapturecore 7.2
                      pyobjc-framework-avfoundation 7.2
                       pyobjc-framework-coremediaio 7.2
                   pyobjc-framework-imserviceplugin 7.2
                          pyobjc-framework-storekit 7.2
                          pyobjc-framework-scenekit 7.2
                        pyobjc-framework-gamecenter 7.2
                           pyobjc-framework-gamekit 7.2
                      pyobjc-framework-videotoolbox 7.2
                             pyobjc-framework-avkit 7.2
                    pyobjc-framework-gamecontroller 7.2
                            pyobjc-framework-mapkit 7.2
                      pyobjc-framework-mediatoolbox 7.2
                         pyobjc-framework-spritekit 7.2
                     pyobjc-framework-corebluetooth 7.2
                    pyobjc-framework-cryptotokenkit 7.2
             pyobjc-framework-multipeerconnectivity 7.2
                pyobjc-framework-notificationcenter 7.2
                          pyobjc-framework-contacts 7.2
                        pyobjc-framework-contactsui 7.2
                             pyobjc-framework-metal 7.2
                          pyobjc-framework-metalkit 7.2
                           pyobjc-framework-modelio 7.2
                  pyobjc-framework-networkextension 7.2
                            pyobjc-framework-photos 7.2
                          pyobjc-framework-photosui 7.2
                    pyobjc-framework-safariservices 7.2
                       pyobjc-framework-gameplaykit 7.2
                           pyobjc-framework-intents 7.2
                            pyobjc-framework-vision 7.2
                           pyobjc-framework-network 7.2
                 pyobjc-framework-usernotifications 7.2
            pyobjc-framework-authenticationservices 7.2
  pyobjc-framework-automaticassessmentconfiguration 7.2
                             pyobjc-framework-oslog 7.2
                           pyobjc-framework-pushkit 7.2
                            pyobjc-framework-speech 7.2
                  pyobjc-framework-systemextensions 7.2
                     pyobjc-framework-accessibility 7.2
                          pyobjc-framework-classkit 7.2
                           pyobjc-framework-passkit 7.2
                         pyobjc-framework-replaykit 7.2
                    pyobjc-framework-virtualization 7.2
                          pyobjc-framework-fsevents 7.2
                    pyobjc-framework-inputmethodkit 7.2
                   pyobjc-framework-scriptingbridge 7.2
                                        pyobjc-core 7.2
                             pyobjc-framework-cocoa 7.2
                         pyobjc-framework-coreaudio 7.2
                          pyobjc-framework-coretext 7.2
                            pyobjc-framework-quartz 7.2
                          pyobjc-framework-security 7.2
                         pyobjc-framework-coremedia 7.2
                       pyobjc-framework-libdispatch 7.2
                      pyobjc-framework-fileprovider 7.2
Extracting package metadata
Traceback (most recent call last):
  File "/tmp/.venv/bin/pdm", line 8, in 
    sys.exit(main())
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/core.py", line 184, in main
    return Core().main(args)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/core.py", line 145, in main
    raise cast(Exception, err).with_traceback(traceback)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/core.py", line 140, in main
    f(options.project, options)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/cli/commands/add.py", line 43, in handle
    packages=options.packages,
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/cli/actions.py", line 173, in do_add
    resolved = do_lock(project, strategy, tracked_names, reqs)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/cli/actions.py", line 68, in do_lock
    resolve_max_rounds,
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/resolver/core.py", line 153, in resolve
    all_metasets = extract_metadata(result)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/resolver/core.py", line 107, in extract_metadata
    new_metasets[k] = _build_metaset(crit, all_metasets, keep_unresolved)
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/resolver/core.py", line 59, in _build_metaset
    metaset = metaset | merged if metaset is not None else merged
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/resolver/metaset.py", line 36, in __or__
    if any([self.marker_no_python, other.marker_no_python])
  File "/tmp/.venv/lib/python3.7/site-packages/pdm/models/markers.py", line 44, in __or__
    return type(self)(marker_str)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/packaging/markers.py", line 307, in __init__
    self._markers = _coerce_parse_result(MARKER.parseString(marker))
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1943, in parseString
    loc, tokens = self._parse(instring, 0)
[ .... more traceback .... ]
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4069, in parseImpl
    loc, exprtokens = e._parse(instring, loc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4781, in parseImpl
    return super(ZeroOrMore, self).parseImpl(instring, loc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4697, in parseImpl
    loc, tokens = self_expr_parse(instring, loc, doActions, callPreParse=False)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4069, in parseImpl
    loc, exprtokens = e._parse(instring, loc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4462, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4052, in parseImpl
    loc, resultlist = self.exprs[0]._parse(instring, loc, doActions, callPreParse=False)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4254, in parseImpl
    ret = e._parse(instring, loc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4462, in parseImpl
    return self.expr._parse(instring, loc, doActions, callPreParse=False)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4052, in parseImpl
    loc, resultlist = self.exprs[0]._parse(instring, loc, doActions, callPreParse=False)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 1683, in _parseNoCache
    loc, tokens = self.parseImpl(instring, preloc, doActions)
  File "/tmp/.venv/lib/python3.7/site-packages/pip/_vendor/pyparsing.py", line 4254, in parseImpl
    ret = e._parse(instring, loc, doActions)
RecursionError: maximum recursion depth exceede

Actual behavior

Fails to add pyobjct **with the sys_platform == 'darwin' marker. Adding pyobjc without the marker works, although there are ovious failures installing because I'm on linux.

Expected behavior

Add pyobjc; sys_platform == 'darwin' to pyproject.toml

Environment Information

# Paste the output of `pdm info && pdm info --env` below:
❯ pdm info; pdm info --env
PDM version:        1.5.2
Python Interpreter: /tmp/.venv/bin/python (3.7)
Project Root:       /tmp/.venv/proj
Project Packages:   /tmp/.venv/proj/__pypackages__/3.7
{
  "implementation_name": "cpython",
  "implementation_version": "3.7.7",
  "os_name": "posix",
  "platform_machine": "x86_64",
  "platform_release": "5.11.16-arch1-1",
  "platform_system": "Linux",
  "platform_version": "#1 SMP PREEMPT Wed, 21 Apr 2021 17:22:13 +0000",
  "python_full_version": "3.7.7",
  "platform_python_implementation": "CPython",
  "python_version": "3.7",
  "sys_platform": "linux"
}
@s0undt3ch s0undt3ch added the 🐛 bug Something isn't working label May 7, 2021
@frostming frostming linked a pull request May 12, 2021 that will close this issue
2 tasks
@frostming
Copy link
Collaborator

frostming commented Aug 12, 2021

For those who come to this issue, this is caused by the marker resolution without deduplication. pyobjc is a parent package that defines a large number of dependencies, with markers. As a result, the marker of a low-level dependency get resolved to the combination of all these markers. Such a long marker makes the marker parser fail due to maximum recursion error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants