/ .github / ISSUE_TEMPLATE / 1-bug.yml
1-bug.yml
  1  name: Bug report
  2  description: Create a report to help us improve.
  3  title: "bug: "
  4  labels:
  5  - unconfirmed
  6  assignees: [pawamoy]
  7  
  8  body:
  9  
 10  - type: markdown
 11    attributes:
 12      value: Thank you for taking the time to report a bug 🐛🙂!
 13  
 14  - type: textarea
 15    id: description
 16    validations:
 17      required: true
 18    attributes:
 19      label: Bug description
 20      description: Please provide a clear and concise description of what the bug is.
 21      placeholder: Describe the bug here.
 22  
 23  - type: markdown
 24    attributes:
 25      value: |
 26        <!--
 27        bugreport:
 28          sections:
 29          - title: Minimal Reproducible Example (MRE)
 30            description: |
 31              Ths section is about providing a Minimal Reproducible Example (MRE).
 32            inputs:
 33            - id: mre_option
 34              type: choice
 35              required: true
 36              description: |
 37                You have a few options to provide an MRE:
 38              options:
 39                path: |
 40                  Path to a local file containing the MRE, or to a local folder containing the MRE.
 41                  The file lists dependencies using [inline script metadata][ism].
 42                  The folder is a valid Python project (pyproject.toml, sources, etc.)
 43  
 44                  [ism]: https://packaging.python.org/en/latest/specifications/inline-script-metadata/#example
 45                url: |
 46                  URL to a public Git repository.
 47                  The repository is a valid Python project (pyproject.toml, sources, etc.)
 48                code: |
 49                  Code to reproduce the issue directly in a text area.
 50  
 51          - if: inputs.mre_option == "path"
 52            inputs:
 53            - id: mre_path
 54              type: path
 55              required: true
 56              label: Path to file or folder.
 57              description: Write the path to a local file or folder containing the MRE.
 58              placeholder: path/to/file-or-folder
 59  
 60          - if: inputs.mre_option == "url"
 61            inputs:
 62            - id: mre_url
 63              type: input
 64              required: true
 65              label: URL to a public Git repository.
 66              description: Write the URL to a public Git repository containing the MRE.
 67              placeholder: https://github.com/username/repo
 68  
 69          - if: inputs.mre_option == "code"
 70            inputs:
 71            - id: mre_code
 72              type: textarea
 73              required: true
 74              highlight: python
 75              label: Code to reproduce the issue.
 76              description: Write code that reproduces the issue when ran.
 77              placeholder: |
 78                import bugreport
 79                ...
 80  
 81          - inputs:
 82            - id: mre_commands
 83              type: textarea
 84              required: true
 85              highlight: shell
 86              label: Commands to run the MRE.
 87              description: |
 88                Write shell commands to run to reproduce the issue.
 89                Assume you are already in a folder containing the MRE.
 90              placeholder: uv run ...
 91  
 92          - outputs:
 93              mre: |
 94                {% if inputs.mre_path %}
 95                  {{ inputs.mre_path | mre_path }}
 96                {% elif inputs.mre_url %}
 97                  {% filter mre_url}
 98                    git clone {{ inputs.mre_url }}
 99                  {% endfilter %}
100                {% elif inputs.mre_code %}
101                  {{ inputs.mre_code | mre_code("python")}}
102                {% endif %}
103                {{ inputs.mre_commands | mre_commands }}
104        -->
105  
106  - type: textarea
107    id: mre
108    validations:
109      required: true
110    attributes:
111      label: Reproduction instructions
112      description: |
113        Please provide a Minimal Reproducible Example (MRE) if possible.
114        Try to boil down the problem to a few lines of code.
115        Your code should run by simply copying and pasting it.
116      placeholder: Write MRE/instructions here, or paste ZIP archive.
117      value: |
118        ```bash
119        git clone https://github.com/username/repro
120        cd repro
121        uv run python bug.py  # or any command/code showing the issue
122        ```
123  
124  - type: markdown
125    attributes:
126      value: |
127        <!--
128        bugreport:
129          sections:
130          - title: Traceback
131            description: |
132              This section is about providing a traceback.
133            inputs:
134            - id: run_mre
135              type: boolean
136              required: true
137              label: Run the MRE?
138              description: |
139                Should we run the MRE to capture the output as traceback?
140  
141          - if: inputs.run_mre
142            outputs:
143              traceback: |
144                {{ outputs.mre | run_mre }}
145        -->
146  
147  - type: textarea
148    id: traceback
149    validations:
150      required: true
151    attributes:
152      label: Full traceback
153      description: |
154        Please provide the full error message / traceback if any, by pasting it below.
155        This will be automatically formatted into a code block, so no need for backticks.
156      placeholder: Paste the full traceback here.
157      render: python
158  
159  - type: textarea
160    id: expected
161    validations:
162      required: true
163    attributes:
164      label: Expected behavior
165      description: Please provide a clear and concise description of what you expected to happen.
166      placeholder: Describe the expected behavior here.
167  
168  - type: markdown
169    attributes:
170      value: |
171        <!--
172        bugreport:
173          sections:
174          - title: Environment information
175            description: |
176              This section is about providing environment information.
177            inputs:
178            - id: venv
179              type: path
180              required: false
181              label: Environment information
182              description: |
183                The next question is about providing environment information.
184                We will try to extract relevant information from a `.venv` virtualenv
185                in the current directory, if any. You can specify the path to a different one.
186              placeholder: path/to/venv
187              value: .venv
188            outputs:
189              environment: |
190                {% with info = inputs.venv | venv_info %}
191                  - **System**: {{ info.platform }}
192                  - **Python**: {{ info.interpreter_name }} {{ info.interpreter_version }} ({{ info.interpreter_path }})
193                  - **Environment variables**:
194                    {% for name, value in info.env_vars("PYTHONPATH", "BUGREPORT*") %}
195                    - `{{ name }}`: `{{ value }}`
196                    {%- endfor %}
197                  - **Installed packages**:
198                    {% for name, version in info.packages("bugreport") %}
199                    - `{{ name }}`: v{{ value }}
200                    {%- endfor %}
201                {% endwith %}
202        -->
203  
204  - type: textarea
205    id: environment
206    validations:
207      required: true
208    attributes:
209      label: Environment information
210      description: |
211        Please run the following command in your repository and paste its output below it,
212        redacting sensitive information: `bugreport --debug-info`.
213      placeholder: Paste the output of `bugreport --debug-info` here.
214  
215  - type: textarea
216    id: context
217    validations:
218      required: false
219    attributes:
220      label: Additional context
221      description: |
222        Add any other relevant context about the problem here,
223        like links to other issues or pull requests, screenshots, etc.
224      placeholder: Add any other context here.