Quarto deletes the original `index.ipynb` file when rendering a different notebook (`index.render.ipynb`) with `output-file: index`, despite the original file being explicitly ignored in the project configuration.

Open
#10,841 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
javascript, jupyter-notebook
Domain
build-system, cli

Research direction

Create the files described in _quarto.yml, including index.ipynb and index.render.ipynb, then run quarto render with ipynb: default enabled. Verify that index.render.ipynb produces index.html, index.pdf, and the output index.ipynb while the ignored original index.ipynb remains untouched.

Written by the indexing model from the issue text.

Description

bug
Bug description

Quarto unexpectedly deletes the original index.ipynb file when rendering a different notebook (index.render.ipynb) with output-file: index, despite the original file being explicitly ignored in the project configuration.

_quarto.yml

project:
  type: website
  render:
   - '*.ipynb'
   - '!index.ipynb'
website:
  title: "Test"
format:
  html: default
  pdf: default
  # When the following line is uncommented, the "index.ipynb" file is deleted upon render
  # ipynb: default

index.ipynb

{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Test - index.ipynb\"\n",
        "---\n",
        "\n",
        "## Test - index.ipynb\n",
        "\n",
        "This is a Quarto website.\n",
        "\n",
        "To learn more about Quarto websites visit <https://quarto.org/docs/websites>."
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}

index.render.ipynb

{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Test - index.render.ipynb\"\n",
        "output-file: index\n",
        "---\n",
        "\n",
        "## Test - index.render.ipynb\n",
        "\n",
        "This is a Quarto website.\n",
        "\n",
        "To learn more about Quarto websites visit <https://quarto.org/docs/websites>."
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}

Note: The bug appears to be triggered when the ipynb: default format is uncommented in _quarto.yml. When this line is commented out, the original index.ipynb is not deleted.

Steps to reproduce
  1. Create a Quarto project with the following files:

    • index.ipynb: A standard Quarto notebook
    • index.render.ipynb: A notebook with output-file: index in its YAML front matter
    • _quarto.yml: A project configuration file with !index.ipynb in the render options
  2. Ensure _quarto.yml contains:

    project:
      type: website
      render:
       - '*.ipynb'
       - '!index.ipynb'
    website:
      title: "Test"
    format:
      html: default
      pdf: default
      ipynb: default
    
  3. Run quarto render to build the project.

Note: The bug appears to be triggered when the ipynb: default format is uncommented in _quarto.yml. When this line is commented out, the original index.ipynb is not deleted.

Expected behavior
  • index.render.ipynb should be rendered as index.html, index.pdf and index.ipynb in the output directory.
  • The original index.ipynb should remain untouched, as it's specified to be ignored in _quarto.yml.
Actual behavior
  • index.render.ipynb is correctly rendered as index.html, index.pdf and index.ipynb in the output directory.
  • The original index.ipynb is unexpectedly deleted, despite being specified as ignored in the project configuration.
Your environment
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy

Quarto check output
Quarto 1.5.57
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.2.0: OK
      Dart Sass version 1.70.0: OK
      Deno version 1.41.0: OK
      Typst version 0.11.0: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 1.5.57
      Path: /opt/quarto/bin

[✓] Checking tools....................OK
      TinyTeX: (external install)
      Chromium: (not installed)

[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /home/anon-b/.TinyTeX/bin/aarch64-linux
      Version: 2024

[✓] Checking basic markdown render....OK

[✓] Checking Python 3 installation....OK
      Version: 3.10.12
      Path: /usr/bin/python3
      Jupyter: (None)

      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter

[✓] Checking R installation...........(None)

      Unable to locate an installed version of R.
      Install R from https://cloud.r-project.org/

Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from quarto-dev/quarto-cli

All issues in quarto-dev/quarto-cli

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.