Skip to content

With 8.2.0, attempt to import docs from niece module fails #12276

Open
@jaraco

Description

@jaraco

This issue is perhaps one of the weirdest and most obscure I've seen. My investigation began in jaraco/jaraco.xonsh#1. The summary is this:

  • In GitHub actions (only), during collection, when attempting to collect docs/conf.py, something outside the call stack attempts to import jaraco.xonsh.docs, even though jaraco.xonsh is a module and docs is a sibling of jaraco.
  • The issue is present in multiple Python versions (at least 3.10-3.12).
  • The issue does not replicate when testing locally (either in a Linux Docker container or in macOS).
  • The issue does replicate when using act to simulate the GitHub actions using Docker.
  • Pinning to pytest<8.2 suppresses the failure.
  • Disabling the xonsh plugin suppresses the failure.
  • Note that jaraco.xonsh is a xonsh module in a PEP 420 namespace.
  • Importing jaraco.xonsh might not be problematic except:
  • The jaraco.xonsh module hasn't been collected or tested (in earlier runs or with pytest 8.2 when it passes locally).

As you might imagine, creating a minimal example is near impossible given the peculiarities of this scenario. The jaraco.xonsh project is nearly a minimal example in itself. The easiest way to replicate the issue is to clone the project at 249226010f9c9e5490dab851947efba2dceecb63, install act, and run the command in jaraco/jaraco.xonsh#1 (comment).

Questions for which I'm hoping to find answers:

  • What is it about GHA that the issue only occurs there?
  • What is it that's trying to import jaraco.xonsh.docs and why doesn't it show up in the stack trace?
  • What's new in pytest 8.2 that would trigger this behavior?
  • How is it that collecting "docs/conf.py" would ever try to import "jaraco.xonsh.docs"?

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: help wanteddevelopers would like help from experts on this topictopic: collectionrelated to the collection phasetype: regressionindicates a problem that was introduced in a release which was working previously

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions