From 1ce2bc2afca4575c8181dda45bca1523a18c9182 Mon Sep 17 00:00:00 2001 From: Eric Arellano <14852634+Eric-Arellano@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:50:07 -0500 Subject: [PATCH] Remove non-API docs and tutorials (#11352) * Remove non-API docs and tutorials * Remove sphinx-design * Fix bad reference * Fix bad deploy step * Remove translatable strings script (cherry picked from commit c75af150fb29d2b6cdb8ef6710cad1f79503e049) # Conflicts: # docs/api_redirects.txt # docs/conf.py # docs/getting_started.rst # docs/index.rst # docs/legacy_release_notes.rst # docs/migration_guides/opflow_migration.rst # docs/tutorials.rst # docs/tutorials/circuits_advanced/06_building_pulse_schedules.ipynb # releasenotes/notes/platform-support-f7f693aaf5dec044.yaml # tools/deploy_translatable_strings.sh --- .azure/tutorials-linux.yml | 42 - .github/workflows/docs_deploy.yml | 61 +- azure-pipelines.yml | 14 +- docs/_static/images/1xp.png | Bin 82310 -> 0 bytes docs/_static/images/ibm_qlab.png | Bin 82644 -> 0 bytes docs/_static/images/strangeworks.png | Bin 95526 -> 0 bytes docs/conf.py | 61 +- docs/configuration.rst | 98 - docs/explanation/endianness.rst | 47 - docs/explanation/index.rst | 12 - docs/faq.rst | 78 - docs/how_to/index.rst | 15 - docs/how_to/use_estimator.rst | 269 - docs/how_to/use_sampler.rst | 255 - docs/images/favicon.ico | Bin 1150 -> 0 bytes docs/images/logo.png | Bin 38644 -> 0 bytes docs/images/noise_cancel.png | Bin 35619 -> 0 bytes docs/images/qiskit_nutshell.png | Bin 92754 -> 0 bytes docs/images/quantum_interference.png | Bin 369710 -> 0 bytes docs/images/system_error.png | Bin 103584 -> 0 bytes docs/images/system_one.jpeg | Bin 197993 -> 0 bytes docs/images/teleportation_detailed.png | Bin 289144 -> 0 bytes docs/index.rst | 22 +- docs/intro_tutorial1.rst | 262 - .../migration_guides/algorithms_migration.rst | 948 --- docs/migration_guides/index.rst | 10 - docs/migration_guides/qi_migration.rst | 670 -- docs/qc_intro.rst | 234 - docs/release_notes.rst | 3 +- .../circuits/01_circuit_basics.ipynb | 824 -- .../1_getting_started_with_qiskit.ipynb | 872 --- .../circuits/2_plotting_data_in_qiskit.ipynb | 985 --- .../3_summary_of_quantum_operations.ipynb | 3679 --------- .../01_advanced_circuits.ipynb | 1012 --- .../02_operators_overview.ipynb | 1383 ---- .../03_advanced_circuit_visualization.ipynb | 872 --- ...04_transpiler_passes_and_passmanager.ipynb | 6957 ----------------- .../circuits_advanced/05_pulse_gates.ipynb | 529 -- .../07_pulse_scheduler.ipynb | 460 -- .../08_gathering_system_information.ipynb | 911 --- .../circuits_advanced/pulse_modulation.png | Bin 750127 -> 0 bytes qiskit/circuit/__init__.py | 249 +- .../platform-support-f7f693aaf5dec044.yaml | 29 + requirements-dev.txt | 18 +- requirements-optional.txt | 2 +- requirements-tutorials.txt | 10 - tools/execute_tutorials.py | 100 - tools/github_poBranch_update_key.enc | Bin 416 -> 0 bytes tox.ini | 16 - 49 files changed, 185 insertions(+), 21824 deletions(-) delete mode 100644 .azure/tutorials-linux.yml delete mode 100644 docs/_static/images/1xp.png delete mode 100644 docs/_static/images/ibm_qlab.png delete mode 100644 docs/_static/images/strangeworks.png delete mode 100644 docs/configuration.rst delete mode 100644 docs/explanation/endianness.rst delete mode 100644 docs/explanation/index.rst delete mode 100644 docs/faq.rst delete mode 100644 docs/how_to/index.rst delete mode 100644 docs/how_to/use_estimator.rst delete mode 100644 docs/how_to/use_sampler.rst delete mode 100644 docs/images/favicon.ico delete mode 100644 docs/images/logo.png delete mode 100644 docs/images/noise_cancel.png delete mode 100644 docs/images/qiskit_nutshell.png delete mode 100644 docs/images/quantum_interference.png delete mode 100644 docs/images/system_error.png delete mode 100644 docs/images/system_one.jpeg delete mode 100644 docs/images/teleportation_detailed.png delete mode 100644 docs/intro_tutorial1.rst delete mode 100644 docs/migration_guides/algorithms_migration.rst delete mode 100644 docs/migration_guides/index.rst delete mode 100644 docs/migration_guides/qi_migration.rst delete mode 100644 docs/qc_intro.rst delete mode 100644 docs/tutorials/circuits/01_circuit_basics.ipynb delete mode 100644 docs/tutorials/circuits/1_getting_started_with_qiskit.ipynb delete mode 100644 docs/tutorials/circuits/2_plotting_data_in_qiskit.ipynb delete mode 100644 docs/tutorials/circuits/3_summary_of_quantum_operations.ipynb delete mode 100644 docs/tutorials/circuits_advanced/01_advanced_circuits.ipynb delete mode 100644 docs/tutorials/circuits_advanced/02_operators_overview.ipynb delete mode 100644 docs/tutorials/circuits_advanced/03_advanced_circuit_visualization.ipynb delete mode 100644 docs/tutorials/circuits_advanced/04_transpiler_passes_and_passmanager.ipynb delete mode 100644 docs/tutorials/circuits_advanced/05_pulse_gates.ipynb delete mode 100644 docs/tutorials/circuits_advanced/07_pulse_scheduler.ipynb delete mode 100644 docs/tutorials/circuits_advanced/08_gathering_system_information.ipynb delete mode 100644 docs/tutorials/circuits_advanced/pulse_modulation.png create mode 100644 releasenotes/notes/platform-support-f7f693aaf5dec044.yaml delete mode 100644 requirements-tutorials.txt delete mode 100644 tools/execute_tutorials.py delete mode 100644 tools/github_poBranch_update_key.enc diff --git a/.azure/tutorials-linux.yml b/.azure/tutorials-linux.yml deleted file mode 100644 index c7cc9ba57ad5..000000000000 --- a/.azure/tutorials-linux.yml +++ /dev/null @@ -1,42 +0,0 @@ -parameters: - - name: "pythonVersion" - type: string - displayName: "Version of Python to test" - -jobs: - - job: "Tutorials" - pool: {vmImage: 'ubuntu-latest'} - - variables: - PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip - - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.pythonVersion }}' - displayName: 'Use Python ${{ parameters.pythonVersion }}' - - - bash: tools/install_ubuntu_docs_dependencies.sh - displayName: 'Install dependencies' - - - bash: tox -e tutorials - displayName: "Execute tutorials" - env: - QISKIT_CELL_TIMEOUT: 300 - - - task: ArchiveFiles@2 - inputs: - rootFolderOrFile: 'executed_tutorials' - archiveType: tar - archiveFile: '$(Build.ArtifactStagingDirectory)/executed_tutorials.tar.gz' - verbose: true - condition: succeededOrFailed() - - - task: PublishBuildArtifacts@1 - displayName: 'Publish updated tutorials' - inputs: - pathtoPublish: '$(Build.ArtifactStagingDirectory)' - artifactName: 'executed_tutorials' - Parallel: true - ParallelCount: 8 - condition: succeededOrFailed() diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index 8f922121f938..a375b8750d4e 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -16,10 +16,6 @@ on: description: "Push to qiskit.org?" required: false type: boolean - do_translatables: - description: "Push translatable strings?" - required: false - type: boolean jobs: build: @@ -53,33 +49,8 @@ jobs: - name: Install dependencies run: tools/install_ubuntu_docs_dependencies.sh - # This is just to have tox create the environment, so we can use it to execute the tutorials. - # We want to re-use it later for the build, hence 'tox run --notest' instead of 'tox devenv'. - - name: Prepare Python environment - run: tox run -e docs --notest - - # The reason to use the custom script rather than letting 'nbsphinx' do its thing normally - # within the Sphinx build is so that the execution process is the same as in the test CI. - - name: Execute tutorials in place - run: .tox/docs/bin/python tools/execute_tutorials.py docs/tutorials - env: - QISKIT_CELL_TIMEOUT: "300" - - name: Build documentation - # We can skip re-installing the package, since we just did it a couple of steps ago. - run: tox run -e docs --skip-pkg-install - env: - QISKIT_ENABLE_ANALYTICS: "true" - # We've already built them. - QISKIT_DOCS_BUILD_TUTORIALS: "never" - DOCS_PROD_BUILD: "true" - - - name: Build translatable strings - run: tox run -e gettext - env: - # We've already built them. - QISKIT_DOCS_BUILD_TUTORIALS: "never" - DOCS_PROD_BUILD: "true" + run: tox run -e docs - name: Store built documentation artifact uses: actions/upload-artifact@v3 @@ -91,13 +62,6 @@ jobs: !**/.buildinfo if-no-files-found: error - - name: Store translatable strings artifact - uses: actions/upload-artifact@v3 - with: - name: qiskit-translatables - path: ./docs/locale/en/* - if-no-files-found: error - deploy: if: github.event_name != 'workflow_dispatch' || inputs.do_deployment name: Deploy to qiskit.org @@ -198,26 +162,3 @@ jobs: JOINED_PREFIXES: ${{ steps.choose.outputs.joined_prefixes }} RCLONE_KEY: ${{ secrets.ENCRYPTED_RCLONE_KEY}} RCLONE_IV: ${{ secrets.ENCRYPTED_RCLONE_IV }} - - deploy_translatables: - if: (github.event_name == 'workflow_dispatch' && inputs.do_translatables) || (github.event_name == 'push' && github.ref_type == 'tag' && github.ref_name == needs.build.outputs.latest_tag) - name: Push translatable strings - needs: [build] - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - path: 'qiskit' - - - uses: actions/download-artifact@v3 - with: - name: qiskit-translatables - path: 'deploy' - - - name: Deploy translations - id: ssh_key - run: qiskit/tools/deploy_translatable_strings.sh "${{ github.workspace }}/deploy" - env: - encrypted_deploy_po_branch_key: ${{ secrets.ENCRYPTED_DEPLOY_PO_BRANCH_KEY }} - encrypted_deploy_po_branch_iv: ${{ secrets.ENCRYPTED_DEPLOY_PO_BRANCH_IV }} diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 8fc21b7d8db1..58370138160a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -52,11 +52,6 @@ parameters: type: string default: "3.9" - - name: "tutorialsPythonVersion" - displayName: "Version of Python to use to run the tutorials job" - type: string - default: "3.8" - # Sync with 'python-version' in '.github/workflows/docs_deploy.yml'. - name: "documentationPythonVersion" displayName: "Version of Python to use to build Sphinx documentation" @@ -162,18 +157,13 @@ stages: testImages: true # The rest of the PR pipeline is to test the oldest and newest supported - # versions of Python, along with the integration tests (via the tutorials). - # It's very rare for a failure to be specific to an intermediate version of + # versions of Python. It's very rare for a failure to be specific to an intermediate version of # Python, so we just catch those in the cron-job pipeline to reduce the # amount of resources used. - - stage: "Tutorials_and_Tests" + - stage: "Tests" displayName: "Main tests" dependsOn: "Lint_Docs_Prelim_Tests" jobs: - - template: ".azure/tutorials-linux.yml" - parameters: - pythonVersion: ${{ parameters.tutorialsPythonVersion }} - - template: ".azure/test-linux.yml" parameters: pythonVersion: ${{ parameters.maximumPythonVersion }} diff --git a/docs/_static/images/1xp.png b/docs/_static/images/1xp.png deleted file mode 100644 index c7ee75a81bd1b6b1473da3d3af4859c8b07b5ed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82310 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