From b2dbba9df59495ade93aab0172d33a11419eec3a Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 13:14:13 -0700 Subject: [PATCH 01/10] update notebook samples to match new importing pattern --- samples/notebooks/azure_submission.ipynb | 2 +- samples/notebooks/circuits.ipynb | 6 +- .../iterative_phase_estimation.ipynb | 2 +- samples/notebooks/noise.ipynb | 18 +- samples/notebooks/openqasm.ipynb | 66 +++++--- samples/notebooks/project.ipynb | 156 ++++++++++++++++-- samples/notebooks/repeat_until_success.ipynb | 2 +- samples/notebooks/sample.ipynb | 13 +- 8 files changed, 210 insertions(+), 55 deletions(-) diff --git a/samples/notebooks/azure_submission.ipynb b/samples/notebooks/azure_submission.ipynb index 28768e48dc..61335afdb5 100644 --- a/samples/notebooks/azure_submission.ipynb +++ b/samples/notebooks/azure_submission.ipynb @@ -32,7 +32,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "\n", "qsharp.init(target_profile=qsharp.TargetProfile.Base)\n" ] diff --git a/samples/notebooks/circuits.ipynb b/samples/notebooks/circuits.ipynb index 13c158f813..c32a3708d1 100644 --- a/samples/notebooks/circuits.ipynb +++ b/samples/notebooks/circuits.ipynb @@ -13,7 +13,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp" + "from qdk import qsharp" ] }, { @@ -71,7 +71,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import Circuit\n", + "from qdk.widgets import Circuit\n", "\n", "Circuit(qsharp.circuit(\"GHZSample(3)\"))" ] @@ -228,7 +228,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp import CircuitGenerationMethod\n", + "from qdk.qsharp import CircuitGenerationMethod\n", "\n", "Circuit(qsharp.circuit(\"ResetIfOne()\", generation_method=CircuitGenerationMethod.Simulate))" ] diff --git a/samples/notebooks/iterative_phase_estimation.ipynb b/samples/notebooks/iterative_phase_estimation.ipynb index a6803fc325..0265f37c9b 100644 --- a/samples/notebooks/iterative_phase_estimation.ipynb +++ b/samples/notebooks/iterative_phase_estimation.ipynb @@ -23,7 +23,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "\n", "qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)" ] diff --git a/samples/notebooks/noise.ipynb b/samples/notebooks/noise.ipynb index 105177eaf7..2f13026a5d 100644 --- a/samples/notebooks/noise.ipynb +++ b/samples/notebooks/noise.ipynb @@ -7,7 +7,7 @@ "# Simulating Pauli noise and Qubit Loss\n", "This notebook shows how to run simulations with Pauli noise, such as bit-flip or depolarizing noise, as well as qubit loss.\n", "\n", - "First, make sure prerequisites are available. Packages `qsharp` and `qsharp_widgets` must be already installed." + "First, make sure prerequisites are available. `qdk` package must be already installed." ] }, { @@ -16,8 +16,8 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", - "import qsharp_widgets" + "from qdk import qsharp\n", + "from qdk.widgets import Histogram" ] }, { @@ -133,7 +133,7 @@ "outputs": [], "source": [ "result = qsharp.run(\"Cat5()\", 1000)\n", - "qsharp_widgets.Histogram(result)\n" + "Histogram(result)\n" ] }, { @@ -152,7 +152,7 @@ "for p in [0.01, 0.05, 0.1, 0.25]:\n", " result = qsharp.run(\"Cat5()\", 1000, noise=qsharp.BitFlipNoise(p))\n", " display(f\"Noise probability = {p}\")\n", - " display(qsharp_widgets.Histogram(result))" + " display(Histogram(result))" ] }, { @@ -178,9 +178,9 @@ "outputs": [], "source": [ "result = qsharp.run(\"Cat5()\", 1000, noise=(0.1, 0.0, 0.1))\n", - "display(qsharp_widgets.Histogram(result))\n", + "display(Histogram(result))\n", "result = qsharp.run(\"Cat5()\", 1000, noise=(0.0, 0.1, 0.0))\n", - "display(qsharp_widgets.Histogram(result))" + "display(Histogram(result))" ] }, { @@ -201,7 +201,7 @@ "outputs": [], "source": [ "result = qsharp.run(\"BellPair()\", 100, qubit_loss=0.5)\n", - "display(qsharp_widgets.Histogram(result))" + "display(Histogram(result))" ] }, { @@ -243,7 +243,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp_widgets.Histogram(qsharp.run(\"CheckForLoss()\", 100, qubit_loss=0.5))" + "Histogram(qsharp.run(\"CheckForLoss()\", 100, qubit_loss=0.5))" ] } ], diff --git a/samples/notebooks/openqasm.ipynb b/samples/notebooks/openqasm.ipynb index 9dffc29438..9a1709aa11 100644 --- a/samples/notebooks/openqasm.ipynb +++ b/samples/notebooks/openqasm.ipynb @@ -29,7 +29,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.openqasm import run\n", + "from qdk.openqasm import run\n", "\n", "source = \"\"\"\n", " include \"stdgates.inc\";\n", @@ -60,10 +60,10 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", - "from qsharp import DepolarizingNoise\n", - "from qsharp.openqasm import run\n", - "from qsharp_widgets import Histogram\n", + "from qdk import qsharp\n", + "from qdk.qsharp import DepolarizingNoise\n", + "from qdk.openqasm import run\n", + "from qdk.widgets import Histogram\n", "\n", "source = \"\"\"\n", " include \"stdgates.inc\";\n", @@ -94,7 +94,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.openqasm import compile\n", + "from qdk.openqasm import compile\n", "\n", "source = \"\"\"\n", " include \"stdgates.inc\";\n", @@ -119,7 +119,7 @@ "\n", "### Run OpenQASM 3 Code in interactive session\n", "\n", - "Import the `qsharp` module.\n", + "Import the `qsharp` module from qdk.\n", "\n", "This initializes a QDK interpreter singleton." ] @@ -131,7 +131,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "qsharp.init(target_profile=qsharp.TargetProfile.Base)" ] }, @@ -145,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "012cc902", "metadata": {}, "outputs": [], @@ -177,9 +177,29 @@ "execution_count": null, "id": "db043bda", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/javascript": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file provides CodeMirror syntax highlighting for Q# magic cells\n// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n// VS Code, Azure Notebooks, etc.) environments.\n\n// Detect the prerequisites and do nothing if they don't exist.\nif (window.require && window.CodeMirror && window.Jupyter) {\n // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n let rules = [\n {\n token: \"comment\",\n regex: /(\\/\\/).*/,\n beginWord: false,\n },\n {\n token: \"string\",\n regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n beginWord: false,\n },\n {\n token: \"keyword\",\n regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(not|and|or)\\b|(w/)`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n beginWord: false,\n },\n {\n token: \"meta\",\n regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n beginWord: true,\n },\n {\n token: \"atom\",\n regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n beginWord: true,\n },\n ];\n let simpleRules = [];\n for (let rule of rules) {\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(rule.regex, \"g\"),\n sol: rule.beginWord,\n });\n if (rule.beginWord) {\n // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n sol: false,\n });\n }\n }\n\n // Register the mode defined above with CodeMirror\n window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n\n // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n reg: [/^%%qsharp/],\n };\n\n // Force re-highlighting of all cells the first time this code runs\n for (const cell of window.Jupyter.notebook.get_cells()) {\n cell.auto_highlight();\n }\n });\n}\n", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'qdk.code'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m qdk.code.qasm_import \u001b[38;5;28;01mimport\u001b[39;00m bell\n\u001b[32m 2\u001b[39m bell()\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'qdk.code'" + ] + } + ], "source": [ - "from qsharp.code.qasm_import import bell\n", + "from qdk.code.qasm_import import bell\n", "bell()" ] }, @@ -211,7 +231,7 @@ "id": "6578cadc", "metadata": {}, "source": [ - "This also unlocks all of the other `qsharp` package functionality. Like noisy simulation. Here we'll use the `run` function showing how we can call into the program from Python and display a histogram:" + "This also unlocks all of the other `qsharp` module functionality. Like noisy simulation. Here we'll use the `run` function showing how we can call into the program from Python and display a histogram:" ] }, { @@ -221,9 +241,9 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp import DepolarizingNoise\n", - "from qsharp.openqasm import run\n", - "from qsharp_widgets import Histogram\n", + "from qdk.qsharp import DepolarizingNoise\n", + "from qdk.openqasm import run\n", + "from qdk.widgets import Histogram\n", "\n", "Histogram(run(bell, shots=1000, noise=DepolarizingNoise(0.01)))" ] @@ -261,7 +281,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import Circuit\n", + "from qdk.widgets import Circuit\n", "\n", "Circuit(qsharp.circuit(bell))" ] @@ -357,7 +377,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp import init, TargetProfile\n", + "from qdk.qsharp import init, TargetProfile\n", "\n", "source = \"\"\"\n", "include \"stdgates.inc\";\n", @@ -380,8 +400,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.code.qasm_import import parameterized_program\n", - "from qsharp.openqasm import compile\n", + "from qdk.code.qasm_import import parameterized_program\n", + "from qdk.openqasm import compile\n", "\n", "print(compile(parameterized_program, 1.57))" ] @@ -412,7 +432,7 @@ "\n", "import_openqasm(source, name=\"measure2\", program_type=ProgramType.File)\n", "\n", - "from qsharp.code.qasm_import import measure2\n", + "from qdk.code.qasm_import import measure2\n", "\n", "Histogram(run(measure2, shots=1000, qubit_loss=0.1))" ] @@ -443,7 +463,7 @@ "\n", "import_openqasm(source, name=\"mresetz_checked_example\", program_type=ProgramType.File)\n", "\n", - "from qsharp.code.qasm_import import mresetz_checked_example\n", + "from qdk.code.qasm_import import mresetz_checked_example\n", "\n", "Histogram(run(mresetz_checked_example, shots=1000, qubit_loss=0.1))\n" ] @@ -451,7 +471,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "venv", "language": "python", "name": "python3" }, @@ -465,7 +485,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.14" + "version": "3.14.3" } }, "nbformat": 4, diff --git a/samples/notebooks/project.ipynb b/samples/notebooks/project.ipynb index 0c3da1c4bf..51b03de551 100644 --- a/samples/notebooks/project.ipynb +++ b/samples/notebooks/project.ipynb @@ -9,12 +9,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "1e8e4faa", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/javascript": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file provides CodeMirror syntax highlighting for Q# magic cells\n// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n// VS Code, Azure Notebooks, etc.) environments.\n\n// Detect the prerequisites and do nothing if they don't exist.\nif (window.require && window.CodeMirror && window.Jupyter) {\n // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n let rules = [\n {\n token: \"comment\",\n regex: /(\\/\\/).*/,\n beginWord: false,\n },\n {\n token: \"string\",\n regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n beginWord: false,\n },\n {\n token: \"keyword\",\n regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(not|and|or)\\b|(w/)`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n beginWord: false,\n },\n {\n token: \"meta\",\n regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n beginWord: true,\n },\n {\n token: \"atom\",\n regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n beginWord: true,\n },\n ];\n let simpleRules = [];\n for (let rule of rules) {\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(rule.regex, \"g\"),\n sol: rule.beginWord,\n });\n if (rule.beginWord) {\n // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n sol: false,\n });\n }\n }\n\n // Register the mode defined above with CodeMirror\n window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n\n // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n reg: [/^%%qsharp/],\n };\n\n // Force re-highlighting of all cells the first time this code runs\n for (const cell of window.Jupyter.notebook.get_cells()) {\n cell.auto_highlight();\n }\n });\n}\n", + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/x.qsharp-config": "{\"targetProfile\":\"unrestricted\",\"manifest\":\"{}\\n\",\"projectRoot\":\"file:///Users/joao/Projects/qdk/samples/notebooks/test_project\"}", + "text/plain": [ + "Q# initialized with configuration: {'targetProfile': 'unrestricted', 'manifest': '{}\\n', 'projectRoot': 'file:///Users/joao/Projects/qdk/samples/notebooks/test_project'}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "\n", "qsharp.init(project_root='./test_project')\n" ] @@ -29,14 +49,116 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "9df62352", "metadata": { "vscode": { "languageId": "qsharp" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + "
Basis State
(|𝜓₁…𝜓ₙ⟩)
AmplitudeMeasurement ProbabilityPhase
\n", + " |1⟩\n", + " \n", + " 1.0000+0.0000𝑖\n", + " \n", + " \n", + " 100.0000%\n", + " \n", + " 0.0000\n", + "
\n", + "\n", + "\n", + "$|\\psi\\rangle = |1\\rangle$" + ], + "text/plain": [ + "STATE:\n", + "|1⟩: 1.0000+0.0000𝑖" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "The result of the measurement is One" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "One" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "%%qsharp\n", "\n", @@ -48,17 +170,29 @@ "id": "5fad86c4", "metadata": {}, "source": [ - "The callables from the project are also available under `qsharp.code` and can be called or imported from Python." + "The callables from the project are also available under `qdk.code` and can be called or imported from Python." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "423b6fc4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'qdk.code'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m qdk.code.Sample \u001b[38;5;28;01mimport\u001b[39;00m Main\n\u001b[32m 2\u001b[39m \n\u001b[32m 3\u001b[39m res = Main()\n\u001b[32m 4\u001b[39m print(f\"Got return value from Q# code: {res}\")\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'qdk.code'" + ] + } + ], "source": [ - "from qsharp.code.Sample import Main\n", + "from qdk.code.Sample import Main\n", "\n", "res = Main()\n", "print(f\"Got return value from Q# code: {res}\")" @@ -67,7 +201,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "venv", "language": "python", "name": "python3" }, @@ -81,7 +215,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.11" + "version": "3.14.3" } }, "nbformat": 4, diff --git a/samples/notebooks/repeat_until_success.ipynb b/samples/notebooks/repeat_until_success.ipynb index 13093e7071..57966cfa25 100644 --- a/samples/notebooks/repeat_until_success.ipynb +++ b/samples/notebooks/repeat_until_success.ipynb @@ -52,7 +52,7 @@ }, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "\n", "qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)" ] diff --git a/samples/notebooks/sample.ipynb b/samples/notebooks/sample.ipynb index 6547bc8540..e7ebf4f8ee 100644 --- a/samples/notebooks/sample.ipynb +++ b/samples/notebooks/sample.ipynb @@ -17,7 +17,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n" + "from qdk import qsharp" ] }, { @@ -83,7 +83,7 @@ "id": "19f4ef6d", "metadata": {}, "source": [ - "`qsharp.code` provides direct access to simulating callables defined in Q#." + "`qdk.code` provides direct access to simulating callables defined in Q#." ] }, { @@ -93,7 +93,8 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.Main()" + "import qdk\n", + "qdk.code.Main()" ] }, { @@ -133,7 +134,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp import QSharpError\n", + "from qdk.qsharp import QSharpError\n", "\n", "try:\n", " qsharp.eval(\n", @@ -448,7 +449,7 @@ " }\n", " \"\"\")\n", "\n", - "from qsharp.code import AddTwoInts\n", + "from qdk.code import AddTwoInts\n", "\n", "print(AddTwoInts(2, 3))\n", "\n", @@ -499,7 +500,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.code.MyNamespace import MyOperation\n", + "from qdk.code.MyNamespace import MyOperation\n", "\n", "MyOperation()" ] From 746ab511d1e90d784d17840213ca21ffb74eb295 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 21:59:44 -0700 Subject: [PATCH 02/10] use from qdk import code pattern --- .../Variational Quantum Algorithms.ipynb | 19 ++++++----- samples/notebooks/openqasm.ipynb | 34 +++++++++++++++---- samples/notebooks/project.ipynb | 8 ++--- samples/notebooks/sample.ipynb | 6 ++-- .../RunGenerateRandom.py | 5 +-- 5 files changed, 49 insertions(+), 23 deletions(-) diff --git a/samples/chemistry/Variational Quantum Algorithms.ipynb b/samples/chemistry/Variational Quantum Algorithms.ipynb index 26a49cf0e7..970661f713 100644 --- a/samples/chemistry/Variational Quantum Algorithms.ipynb +++ b/samples/chemistry/Variational Quantum Algorithms.ipynb @@ -45,7 +45,7 @@ "source": [ "from itertools import product\n", "import qutip as qt\n", - "import qsharp\n", + "from qdk import qsharp\n", "\n", "qsharp.init(project_root=\"SPSA\")" ] @@ -350,7 +350,8 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.EstimateExpectationOfZero()" + "from qdk import code\n", + "code.EstimateExpectationOfZero()" ] }, { @@ -390,7 +391,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.EstimateExpectationOfOne()" + "code.EstimateExpectationOfOne()" ] }, { @@ -422,7 +423,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.EstimateExpectationOfPlus()" + "code.EstimateExpectationOfPlus()" ] }, { @@ -610,7 +611,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.EstimateEnergyOfPlus(H_decomposition)" + "code.EstimateEnergyOfPlus(H_decomposition)" ] }, { @@ -735,7 +736,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.DumpAnsatz(ansatz_axes, [1.2, 1.9])" + "code.DumpAnsatz(ansatz_axes, [1.2, 1.9])" ] }, { @@ -745,7 +746,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.DumpAnsatz(ansatz_axes, [1.2, -0.7])" + "code.DumpAnsatz(ansatz_axes, [1.2, -0.7])" ] }, { @@ -785,7 +786,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.EstimateEnergyAtAnsatz(\n", + "code.EstimateEnergyAtAnsatz(\n", " H_decomposition,\n", " ansatz_axes,\n", " [1.2, 1.9],\n", @@ -844,7 +845,7 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.code.FindMinimumEnergy(H_decomposition, ansatz_axes, [1.2, 1.9], 1000)" + "code.FindMinimumEnergy(H_decomposition, ansatz_axes, [1.2, 1.9], 1000)" ] }, { diff --git a/samples/notebooks/openqasm.ipynb b/samples/notebooks/openqasm.ipynb index 9a1709aa11..8d51d58e2b 100644 --- a/samples/notebooks/openqasm.ipynb +++ b/samples/notebooks/openqasm.ipynb @@ -150,7 +150,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.openqasm import import_openqasm, ProgramType\n", + "from qdk.openqasm import import_openqasm, ProgramType\n", "\n", "source = \"\"\"\n", " include \"stdgates.inc\";\n", @@ -199,7 +199,9 @@ } ], "source": [ - "from qdk.code.qasm_import import bell\n", + "from qdk import code\n", + "bell = code.qasm_import.bell\n", + "\n", "bell()" ] }, @@ -400,9 +402,12 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk.code.qasm_import import parameterized_program\n", + "from qdk import code\n", "from qdk.openqasm import compile\n", "\n", + "qasm_import = code.qasm_import\n", + "parameterized_program = qasm_import.parameterized_program\n", + "\n", "print(compile(parameterized_program, 1.57))" ] }, @@ -432,7 +437,8 @@ "\n", "import_openqasm(source, name=\"measure2\", program_type=ProgramType.File)\n", "\n", - "from qdk.code.qasm_import import measure2\n", + "from qdk import code\n", + "measure2 = code.qasm_import.measure2\n", "\n", "Histogram(run(measure2, shots=1000, qubit_loss=0.1))" ] @@ -450,7 +456,23 @@ "execution_count": null, "id": "02a97625", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "93679940faa64427a70f7c0c829730f2", + "version_major": 2, + "version_minor": 1 + }, + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "source = \"\"\"\n", "include \"stdgates.inc\";\n", @@ -463,7 +485,7 @@ "\n", "import_openqasm(source, name=\"mresetz_checked_example\", program_type=ProgramType.File)\n", "\n", - "from qdk.code.qasm_import import mresetz_checked_example\n", + "mresetz_checked_example = code.qasm_import.mresetz_checked_example\n", "\n", "Histogram(run(mresetz_checked_example, shots=1000, qubit_loss=0.1))\n" ] diff --git a/samples/notebooks/project.ipynb b/samples/notebooks/project.ipynb index 51b03de551..d6d745efbd 100644 --- a/samples/notebooks/project.ipynb +++ b/samples/notebooks/project.ipynb @@ -28,7 +28,7 @@ "Q# initialized with configuration: {'targetProfile': 'unrestricted', 'manifest': '{}\\n', 'projectRoot': 'file:///Users/joao/Projects/qdk/samples/notebooks/test_project'}" ] }, - "execution_count": 1, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -154,7 +154,7 @@ "One" ] }, - "execution_count": 2, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -192,8 +192,8 @@ } ], "source": [ - "from qdk.code.Sample import Main\n", - "\n", + "from qdk import code\n", + "Main = code.Sample.Main\n", "res = Main()\n", "print(f\"Got return value from Q# code: {res}\")" ] diff --git a/samples/notebooks/sample.ipynb b/samples/notebooks/sample.ipynb index e7ebf4f8ee..f5bff787aa 100644 --- a/samples/notebooks/sample.ipynb +++ b/samples/notebooks/sample.ipynb @@ -449,7 +449,8 @@ " }\n", " \"\"\")\n", "\n", - "from qdk.code import AddTwoInts\n", + "from qdk import code\n", + "AddTwoInts = code.AddTwoInts\n", "\n", "print(AddTwoInts(2, 3))\n", "\n", @@ -500,7 +501,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk.code.MyNamespace import MyOperation\n", + "from qdk import code\n", + "MyOperation = code.MyNamespace.MyOperation\n", "\n", "MyOperation()" ] diff --git a/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py b/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py index 8e9434ef0a..e73233a9d8 100644 --- a/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py +++ b/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py @@ -1,10 +1,11 @@ from pathlib import Path -import qsharp +from qdk import qsharp this_dir = Path(__file__).parent qsharp.init(project_root=this_dir) -from qsharp.code.GenerateRandomNumbers import GenerateRandomNumbers +from qdk import code +GenerateRandomNumbers = code.GenerateRandomNumbers nQubits = input("Enter the number of random bits to be generated: ") (results, number) = GenerateRandomNumbers(int(nQubits)) From f730a5436babe28001bcc1dca748fede09b3db5f Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 22:00:54 -0700 Subject: [PATCH 03/10] export QasmError from qsharp.interop.qiskit --- source/pip/qsharp/interop/qiskit/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/source/pip/qsharp/interop/qiskit/__init__.py b/source/pip/qsharp/interop/qiskit/__init__.py index 47efd0ed95..480e2761b7 100644 --- a/source/pip/qsharp/interop/qiskit/__init__.py +++ b/source/pip/qsharp/interop/qiskit/__init__.py @@ -105,4 +105,5 @@ def estimate( "estimate", "EstimatorParams", "EstimatorResult", + "QasmError", ] From d685a32d154bb3e6b244f3abdde3000fa9d934a4 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 22:01:06 -0700 Subject: [PATCH 04/10] update readmes --- source/pip/README.md | 2 +- source/widgets/README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/pip/README.md b/source/pip/README.md index 15cc6765b0..dfc229221d 100644 --- a/source/pip/README.md +++ b/source/pip/README.md @@ -17,7 +17,7 @@ pip install qsharp First, import the `qsharp` module: ```python -import qsharp +from qdk import qsharp ``` Then, use the `%%qsharp` cell magic to run Q# directly in Jupyter notebook cells: diff --git a/source/widgets/README.md b/source/widgets/README.md index 9eb0d1e54f..1128473ab0 100644 --- a/source/widgets/README.md +++ b/source/widgets/README.md @@ -27,8 +27,8 @@ code such as that shown below: ```python # Cell-1 : Import the modules and generate some estimates -import qsharp -from qsharp_widgets import SpaceChart, EstimateDetails +from qdk import qsharp +from qdk.widgets import SpaceChart, EstimateDetails with open("sample.qs", "r") as f: contents = f.read() From fc8ce74847dfa6cd0f65adabf21e014b0f3a4ee9 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 22:01:45 -0700 Subject: [PATCH 05/10] change import in qsharp_widgets --- source/widgets/src/qsharp_widgets/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/widgets/src/qsharp_widgets/__init__.py b/source/widgets/src/qsharp_widgets/__init__.py index 0b56139ae2..5f5e172c7e 100644 --- a/source/widgets/src/qsharp_widgets/__init__.py +++ b/source/widgets/src/qsharp_widgets/__init__.py @@ -186,7 +186,7 @@ def __init__( ) def run(self, entry_expr, shots): - import qsharp + from qdk import qsharp self._new_buckets = {} self._new_count = 0 From 833a56118c9b3f3c746e27cade8c44349e54e987 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Mon, 27 Apr 2026 22:02:01 -0700 Subject: [PATCH 06/10] change remaining importing patterns --- samples/estimation/df-chemistry/chemistry.py | 2 +- samples/estimation/estimation-factoring.ipynb | 4 ++-- .../estimation-frontier-widgets.ipynb | 4 ++-- .../estimation-hardcoded-circuit.ipynb | 2 +- .../estimation/estimation-heisenberg-2D.ipynb | 2 +- .../estimation/estimation-hubbard-2D.ipynb | 2 +- samples/estimation/estimation-ising-2D.ipynb | 2 +- samples/estimation/estimation-openqasm.ipynb | 8 +++---- samples/estimation/estimation-qiskit.ipynb | 12 +++++----- .../estimation-random-circuit.ipynb | 2 +- .../carbon_error_correction/decoder.py | 2 +- .../iterative_phase_estimation.ipynb | 6 +---- .../python_interop/eval_single_file/run.py | 2 +- samples/python_interop/qiskit.ipynb | 22 +++++++++---------- .../teleportation_project/RunTeleport.py | 2 +- .../classical_values/test_classical_values.py | 2 +- samples/testing/operations/test_operations.py | 4 ++-- samples/testing/states/test_states.py | 2 +- 18 files changed, 39 insertions(+), 43 deletions(-) diff --git a/samples/estimation/df-chemistry/chemistry.py b/samples/estimation/df-chemistry/chemistry.py index db0b3e9e6d..4dffc71361 100644 --- a/samples/estimation/df-chemistry/chemistry.py +++ b/samples/estimation/df-chemistry/chemistry.py @@ -5,7 +5,7 @@ import numpy as np import numpy.linalg as LA import numpy.typing as npt -import qsharp +from qdk import qsharp from argparse import ArgumentParser from dataclasses import dataclass from pathlib import Path diff --git a/samples/estimation/estimation-factoring.ipynb b/samples/estimation/estimation-factoring.ipynb index 5f392ddec5..960a5e6f7c 100644 --- a/samples/estimation/estimation-factoring.ipynb +++ b/samples/estimation/estimation-factoring.ipynb @@ -17,8 +17,8 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", - "from qsharp_widgets import EstimatesOverview\n", + "from qdk import qsharp\n", + "from qdk.widgets import EstimatesOverview\n", "\n", "with open(\"EkeraHastadFactoring.qs\", \"r\") as f:\n", " qsharp.eval(f.read())" diff --git a/samples/estimation/estimation-frontier-widgets.ipynb b/samples/estimation/estimation-frontier-widgets.ipynb index 70b3b696b3..9f72b61ac1 100644 --- a/samples/estimation/estimation-frontier-widgets.ipynb +++ b/samples/estimation/estimation-frontier-widgets.ipynb @@ -10,8 +10,8 @@ "# by running the following command in a terminal:\n", "# pip install qsharp qsharp-widgets -U\n", "\n", - "import qsharp\n", - "from qsharp_widgets import SpaceChart, EstimateDetails, EstimatesOverview, EstimatesPanel\n", + "from qdk import qsharp\n", + "from qdk.widgets import SpaceChart, EstimateDetails, EstimatesOverview, EstimatesPanel\n", "\n", "with open(\"Dynamics.qs\", \"r\") as f:\n", " contents = f.read()\n", diff --git a/samples/estimation/estimation-hardcoded-circuit.ipynb b/samples/estimation/estimation-hardcoded-circuit.ipynb index 719867c182..3c53f01b16 100644 --- a/samples/estimation/estimation-hardcoded-circuit.ipynb +++ b/samples/estimation/estimation-hardcoded-circuit.ipynb @@ -16,7 +16,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp" + "from qdk import qsharp" ] }, { diff --git a/samples/estimation/estimation-heisenberg-2D.ipynb b/samples/estimation/estimation-heisenberg-2D.ipynb index 68a63b6b58..7563bd04b8 100644 --- a/samples/estimation/estimation-heisenberg-2D.ipynb +++ b/samples/estimation/estimation-heisenberg-2D.ipynb @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "import pandas as pd" ] }, diff --git a/samples/estimation/estimation-hubbard-2D.ipynb b/samples/estimation/estimation-hubbard-2D.ipynb index 16b31befb9..1aaca46a75 100644 --- a/samples/estimation/estimation-hubbard-2D.ipynb +++ b/samples/estimation/estimation-hubbard-2D.ipynb @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "import pandas as pd" ] }, diff --git a/samples/estimation/estimation-ising-2D.ipynb b/samples/estimation/estimation-ising-2D.ipynb index 87f1ad8a58..3019041d5f 100644 --- a/samples/estimation/estimation-ising-2D.ipynb +++ b/samples/estimation/estimation-ising-2D.ipynb @@ -20,7 +20,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp\n", + "from qdk import qsharp\n", "import pandas as pd" ] }, diff --git a/samples/estimation/estimation-openqasm.ipynb b/samples/estimation/estimation-openqasm.ipynb index 4818a736d2..b991720062 100644 --- a/samples/estimation/estimation-openqasm.ipynb +++ b/samples/estimation/estimation-openqasm.ipynb @@ -96,8 +96,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.estimator import EstimatorParams\n", - "from qsharp.openqasm import estimate\n", + "from qdk.estimator import EstimatorParams\n", + "from qdk.openqasm import estimate\n", "\n", "params = EstimatorParams()\n", "result = estimate(program, params)" @@ -116,7 +116,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import EstimateDetails\n", + "from qdk.widgets import EstimateDetails\n", "\n", "EstimateDetails(result)" ] @@ -134,7 +134,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import SpaceChart\n", + "from qdk.widgets import SpaceChart\n", "\n", "SpaceChart(result)" ] diff --git a/samples/estimation/estimation-qiskit.ipynb b/samples/estimation/estimation-qiskit.ipynb index fa201b977f..12524b5f79 100644 --- a/samples/estimation/estimation-qiskit.ipynb +++ b/samples/estimation/estimation-qiskit.ipynb @@ -91,8 +91,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.estimator import EstimatorParams\n", - "from qsharp.interop.qiskit import estimate\n", + "from qdk.estimator import EstimatorParams\n", + "from qdk.qiskit import estimate\n", "\n", "params = EstimatorParams()\n", "result = estimate(circ, params, skip_transpilation=True)" @@ -111,8 +111,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.interop.qiskit import ResourceEstimatorBackend\n", - "from qsharp.estimator import EstimatorParams\n", + "from qdk.qiskit import ResourceEstimatorBackend\n", + "from qdk.estimator import EstimatorParams\n", "\n", "params = EstimatorParams()\n", "backend = ResourceEstimatorBackend(skip_transpilation=True)\n", @@ -134,7 +134,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import EstimateDetails\n", + "from qdk.widgets import EstimateDetails\n", "\n", "EstimateDetails(result)" ] @@ -152,7 +152,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp_widgets import SpaceChart\n", + "from qdk.widgets import SpaceChart\n", "\n", "SpaceChart(result)" ] diff --git a/samples/estimation/estimation-random-circuit.ipynb b/samples/estimation/estimation-random-circuit.ipynb index 5bfc323322..4294cd2ce1 100644 --- a/samples/estimation/estimation-random-circuit.ipynb +++ b/samples/estimation/estimation-random-circuit.ipynb @@ -16,7 +16,7 @@ "metadata": {}, "outputs": [], "source": [ - "import qsharp" + "from qdk import qsharp" ] }, { diff --git a/samples/notebooks/carbon_error_correction/decoder.py b/samples/notebooks/carbon_error_correction/decoder.py index 87acc5ad3f..fa6a501695 100644 --- a/samples/notebooks/carbon_error_correction/decoder.py +++ b/samples/notebooks/carbon_error_correction/decoder.py @@ -3,7 +3,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -import qsharp +from qdk import qsharp table = { frozenset(): "IIIIIIIIIIII", diff --git a/samples/notebooks/iterative_phase_estimation.ipynb b/samples/notebooks/iterative_phase_estimation.ipynb index 0265f37c9b..c244024465 100644 --- a/samples/notebooks/iterative_phase_estimation.ipynb +++ b/samples/notebooks/iterative_phase_estimation.ipynb @@ -353,11 +353,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "vscode": { - "languageId": "qsharp" - } - }, + "metadata": {}, "outputs": [], "source": [ "job = target.submit(qsharp.compile(\"PerformMeasurements(PI() / 7.0, PI() / 5.0, 4)\"), shots=128)\n", diff --git a/samples/python_interop/eval_single_file/run.py b/samples/python_interop/eval_single_file/run.py index 9eed91c649..2a842c9790 100644 --- a/samples/python_interop/eval_single_file/run.py +++ b/samples/python_interop/eval_single_file/run.py @@ -1,5 +1,5 @@ from pathlib import Path -import qsharp +from qdk import qsharp # Import the Q# code from the teleport.qs file code = (Path(__file__).parent / "sample.qs").read_text() diff --git a/samples/python_interop/qiskit.ipynb b/samples/python_interop/qiskit.ipynb index 697a2f4877..c82ac6ce50 100644 --- a/samples/python_interop/qiskit.ipynb +++ b/samples/python_interop/qiskit.ipynb @@ -71,7 +71,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.interop.qiskit import QSharpBackend\n", + "from qdk.qiskit import QSharpBackend\n", "\n", "backend = QSharpBackend()\n", "job = backend.run(circuit)\n", @@ -148,8 +148,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp import QSharpError, TargetProfile\n", - "from qsharp.interop.qiskit import QSharpBackend\n", + "from qdk.qsharp import QSharpError, TargetProfile\n", + "from qdk.qiskit import QSharpBackend\n", "\n", "circuit = get_parameterized_circuit(3)\n", "backend = QSharpBackend()\n", @@ -174,7 +174,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.interop.qiskit import QSharpBackend\n", + "from qdk.qiskit import QSharpBackend\n", "\n", "circuit = get_parameterized_circuit(3)\n", "backend = QSharpBackend()\n", @@ -219,7 +219,7 @@ " QuantumCircuit,\n", ")\n", "\n", - "from qsharp import QSharpError, TargetProfile\n", + "from qdk.qsharp import QSharpError, TargetProfile\n", "\n", "qreg = QuantumRegister(3, name=\"q\")\n", "creg = ClassicalRegister(3, name=\"c\")\n", @@ -329,7 +329,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.interop.qiskit import QasmError\n", + "from qdk.qiskit import QasmError\n", "\n", "try:\n", " circuit = QuantumCircuit(2)\n", @@ -355,7 +355,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qsharp.interop.qiskit import QasmError\n", + "from qdk.qiskit import QasmError\n", "\n", "try:\n", " q = QuantumRegister(2, name=\"q\")\n", @@ -457,10 +457,10 @@ } ], "metadata": { - "language_info": { - "name": "python" - } - }, + "language_info": { + "name": "python" + } + }, "nbformat": 4, "nbformat_minor": 5 } diff --git a/samples/python_interop/teleportation_project/RunTeleport.py b/samples/python_interop/teleportation_project/RunTeleport.py index 872c8c2580..8afa16848a 100644 --- a/samples/python_interop/teleportation_project/RunTeleport.py +++ b/samples/python_interop/teleportation_project/RunTeleport.py @@ -1,5 +1,5 @@ from pathlib import Path -import qsharp +from qdk import qsharp # set the root folder for the Q# project # the root folder of a Q# project is where the qsharp.json file is located diff --git a/samples/testing/classical_values/test_classical_values.py b/samples/testing/classical_values/test_classical_values.py index 458e9ffc7d..98bc8a305a 100644 --- a/samples/testing/classical_values/test_classical_values.py +++ b/samples/testing/classical_values/test_classical_values.py @@ -1,7 +1,7 @@ from pathlib import Path from random import randint import pytest -import qsharp +from qdk import qsharp @pytest.fixture(autouse=True) diff --git a/samples/testing/operations/test_operations.py b/samples/testing/operations/test_operations.py index a7f1a03dc4..c732ea6abf 100644 --- a/samples/testing/operations/test_operations.py +++ b/samples/testing/operations/test_operations.py @@ -3,8 +3,8 @@ from pathlib import Path import pytest -import qsharp -from qsharp.utils import dump_operation +from qdk import qsharp +from qdk.qsharp import dump_operation @pytest.fixture(autouse=True) diff --git a/samples/testing/states/test_states.py b/samples/testing/states/test_states.py index 1519090998..954c32f242 100644 --- a/samples/testing/states/test_states.py +++ b/samples/testing/states/test_states.py @@ -1,5 +1,5 @@ import pytest -import qsharp +from qdk import qsharp @pytest.fixture(autouse=True) def setup(): From 056c1d923797725e3a0934e266757fe9bf819325 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Tue, 28 Apr 2026 10:14:37 -0700 Subject: [PATCH 07/10] resolve comments --- samples/notebooks/noise.ipynb | 2 +- samples/notebooks/openqasm.ipynb | 67 ++------ samples/notebooks/project.ipynb | 148 +----------------- .../RunGenerateRandom.py | 3 +- 4 files changed, 26 insertions(+), 194 deletions(-) diff --git a/samples/notebooks/noise.ipynb b/samples/notebooks/noise.ipynb index 2f13026a5d..2187203b93 100644 --- a/samples/notebooks/noise.ipynb +++ b/samples/notebooks/noise.ipynb @@ -7,7 +7,7 @@ "# Simulating Pauli noise and Qubit Loss\n", "This notebook shows how to run simulations with Pauli noise, such as bit-flip or depolarizing noise, as well as qubit loss.\n", "\n", - "First, make sure prerequisites are available. `qdk` package must be already installed." + "First, make sure prerequisites are available. Packages `qdk` and `qdk[\"jupyter\"]` must be already installed." ] }, { diff --git a/samples/notebooks/openqasm.ipynb b/samples/notebooks/openqasm.ipynb index 8d51d58e2b..c208282bf4 100644 --- a/samples/notebooks/openqasm.ipynb +++ b/samples/notebooks/openqasm.ipynb @@ -60,8 +60,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk import qsharp\n", - "from qdk.qsharp import DepolarizingNoise\n", + "from qdk import DepolarizingNoise\n", "from qdk.openqasm import run\n", "from qdk.widgets import Histogram\n", "\n", @@ -119,7 +118,7 @@ "\n", "### Run OpenQASM 3 Code in interactive session\n", "\n", - "Import the `qsharp` module from qdk.\n", + "Import `init` method from qdk.\n", "\n", "This initializes a QDK interpreter singleton." ] @@ -131,8 +130,8 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk import qsharp\n", - "qsharp.init(target_profile=qsharp.TargetProfile.Base)" + "from qdk import init, TargetProfile\n", + "init(target_profile=TargetProfile.Base)" ] }, { @@ -145,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "012cc902", "metadata": {}, "outputs": [], @@ -177,27 +176,7 @@ "execution_count": null, "id": "db043bda", "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file provides CodeMirror syntax highlighting for Q# magic cells\n// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n// VS Code, Azure Notebooks, etc.) environments.\n\n// Detect the prerequisites and do nothing if they don't exist.\nif (window.require && window.CodeMirror && window.Jupyter) {\n // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n let rules = [\n {\n token: \"comment\",\n regex: /(\\/\\/).*/,\n beginWord: false,\n },\n {\n token: \"string\",\n regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n beginWord: false,\n },\n {\n token: \"keyword\",\n regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(not|and|or)\\b|(w/)`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n beginWord: false,\n },\n {\n token: \"meta\",\n regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n beginWord: true,\n },\n {\n token: \"atom\",\n regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n beginWord: true,\n },\n ];\n let simpleRules = [];\n for (let rule of rules) {\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(rule.regex, \"g\"),\n sol: rule.beginWord,\n });\n if (rule.beginWord) {\n // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n sol: false,\n });\n }\n }\n\n // Register the mode defined above with CodeMirror\n window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n\n // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n reg: [/^%%qsharp/],\n };\n\n // Force re-highlighting of all cells the first time this code runs\n for (const cell of window.Jupyter.notebook.get_cells()) {\n cell.auto_highlight();\n }\n });\n}\n", - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'qdk.code'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m qdk.code.qasm_import \u001b[38;5;28;01mimport\u001b[39;00m bell\n\u001b[32m 2\u001b[39m bell()\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'qdk.code'" - ] - } - ], + "outputs": [], "source": [ "from qdk import code\n", "bell = code.qasm_import.bell\n", @@ -233,7 +212,7 @@ "id": "6578cadc", "metadata": {}, "source": [ - "This also unlocks all of the other `qsharp` module functionality. Like noisy simulation. Here we'll use the `run` function showing how we can call into the program from Python and display a histogram:" + "This also unlocks all of the other `qdk` module functionality. Like noisy simulation. Here we'll use the `run` function showing how we can call into the program from Python and display a histogram:" ] }, { @@ -243,7 +222,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk.qsharp import DepolarizingNoise\n", + "from qdk import DepolarizingNoise\n", "from qdk.openqasm import run\n", "from qdk.widgets import Histogram\n", "\n", @@ -265,7 +244,8 @@ "metadata": {}, "outputs": [], "source": [ - "qsharp.circuit(bell)" + "from qdk.openqasm import circuit\n", + "circuit(bell)" ] }, { @@ -285,7 +265,7 @@ "source": [ "from qdk.widgets import Circuit\n", "\n", - "Circuit(qsharp.circuit(bell))" + "Circuit(circuit(bell))" ] }, { @@ -303,7 +283,8 @@ "metadata": {}, "outputs": [], "source": [ - "print(qsharp.compile(bell))" + "from qdk.openqasm import compile\n", + "print(compile(bell))" ] }, { @@ -379,7 +360,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qdk.qsharp import init, TargetProfile\n", + "from qdk import init, TargetProfile\n", "\n", "source = \"\"\"\n", "include \"stdgates.inc\";\n", @@ -456,23 +437,7 @@ "execution_count": null, "id": "02a97625", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "93679940faa64427a70f7c0c829730f2", - "version_major": 2, - "version_minor": 1 - }, - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "source = \"\"\"\n", "include \"stdgates.inc\";\n", @@ -493,7 +458,7 @@ ], "metadata": { "kernelspec": { - "display_name": "venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/samples/notebooks/project.ipynb b/samples/notebooks/project.ipynb index d6d745efbd..f319c076c0 100644 --- a/samples/notebooks/project.ipynb +++ b/samples/notebooks/project.ipynb @@ -9,30 +9,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "1e8e4faa", "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file provides CodeMirror syntax highlighting for Q# magic cells\n// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n// VS Code, Azure Notebooks, etc.) environments.\n\n// Detect the prerequisites and do nothing if they don't exist.\nif (window.require && window.CodeMirror && window.Jupyter) {\n // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n let rules = [\n {\n token: \"comment\",\n regex: /(\\/\\/).*/,\n beginWord: false,\n },\n {\n token: \"string\",\n regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n beginWord: false,\n },\n {\n token: \"keyword\",\n regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(not|and|or)\\b|(w/)`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n beginWord: false,\n },\n {\n token: \"meta\",\n regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n beginWord: true,\n },\n {\n token: \"atom\",\n regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n beginWord: true,\n },\n ];\n let simpleRules = [];\n for (let rule of rules) {\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(rule.regex, \"g\"),\n sol: rule.beginWord,\n });\n if (rule.beginWord) {\n // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n sol: false,\n });\n }\n }\n\n // Register the mode defined above with CodeMirror\n window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n\n // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n reg: [/^%%qsharp/],\n };\n\n // Force re-highlighting of all cells the first time this code runs\n for (const cell of window.Jupyter.notebook.get_cells()) {\n cell.auto_highlight();\n }\n });\n}\n", - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/x.qsharp-config": "{\"targetProfile\":\"unrestricted\",\"manifest\":\"{}\\n\",\"projectRoot\":\"file:///Users/joao/Projects/qdk/samples/notebooks/test_project\"}", - "text/plain": [ - "Q# initialized with configuration: {'targetProfile': 'unrestricted', 'manifest': '{}\\n', 'projectRoot': 'file:///Users/joao/Projects/qdk/samples/notebooks/test_project'}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from qdk import qsharp\n", "\n", @@ -49,116 +29,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "9df62352", "metadata": { "vscode": { "languageId": "qsharp" } }, - "outputs": [ - { - "data": { - "text/markdown": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - " \n", - "
Basis State
(|𝜓₁…𝜓ₙ⟩)
AmplitudeMeasurement ProbabilityPhase
\n", - " |1⟩\n", - " \n", - " 1.0000+0.0000𝑖\n", - " \n", - " \n", - " 100.0000%\n", - " \n", - " 0.0000\n", - "
\n", - "\n", - "\n", - "$|\\psi\\rangle = |1\\rangle$" - ], - "text/plain": [ - "STATE:\n", - "|1⟩: 1.0000+0.0000𝑖" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "The result of the measurement is One" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": {}, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "One" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "%%qsharp\n", "\n", @@ -175,22 +53,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "423b6fc4", "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'qdk.code'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m qdk.code.Sample \u001b[38;5;28;01mimport\u001b[39;00m Main\n\u001b[32m 2\u001b[39m \n\u001b[32m 3\u001b[39m res = Main()\n\u001b[32m 4\u001b[39m print(f\"Got return value from Q# code: {res}\")\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'qdk.code'" - ] - } - ], + "outputs": [], "source": [ "from qdk import code\n", "Main = code.Sample.Main\n", @@ -201,7 +67,7 @@ ], "metadata": { "kernelspec": { - "display_name": "venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py b/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py index e73233a9d8..4186415810 100644 --- a/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py +++ b/samples/python_interop/generating_n_random_bits/RunGenerateRandom.py @@ -5,7 +5,8 @@ qsharp.init(project_root=this_dir) from qdk import code -GenerateRandomNumbers = code.GenerateRandomNumbers + +GenerateRandomNumbers = code.GenerateRandomNumbers.GenerateRandomNumbers nQubits = input("Enter the number of random bits to be generated: ") (results, number) = GenerateRandomNumbers(int(nQubits)) From 8ff8aef52d310dea3e81bdd678d197f799282356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Boechat?= Date: Tue, 28 Apr 2026 11:06:50 -0700 Subject: [PATCH 08/10] minor doc fix Co-authored-by: Stefan J. Wernli --- samples/notebooks/noise.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/notebooks/noise.ipynb b/samples/notebooks/noise.ipynb index 2187203b93..42e1a15642 100644 --- a/samples/notebooks/noise.ipynb +++ b/samples/notebooks/noise.ipynb @@ -7,7 +7,7 @@ "# Simulating Pauli noise and Qubit Loss\n", "This notebook shows how to run simulations with Pauli noise, such as bit-flip or depolarizing noise, as well as qubit loss.\n", "\n", - "First, make sure prerequisites are available. Packages `qdk` and `qdk[\"jupyter\"]` must be already installed." + "First, make sure prerequisites are available. The package and extra `qdk[jupyter]` must be already installed." ] }, { From f85b1e927b596373b0ab7e677a57d3a568edf844 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Tue, 28 Apr 2026 11:19:44 -0700 Subject: [PATCH 09/10] add utf-8 encoding to read_text calls --- samples/notebooks/benzene_molecule/benzene.ipynb | 8 ++++---- samples/python_interop/eval_single_file/run.py | 2 +- source/pip/qsharp/qre/interop/_qsharp.py | 2 +- source/pip/tests/qre/test_interop.py | 2 +- source/vscode/skills/qdk-programming/python.md | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/notebooks/benzene_molecule/benzene.ipynb b/samples/notebooks/benzene_molecule/benzene.ipynb index 505dbf824f..118839e24c 100644 --- a/samples/notebooks/benzene_molecule/benzene.ipynb +++ b/samples/notebooks/benzene_molecule/benzene.ipynb @@ -24,7 +24,7 @@ "from qdk.widgets import Circuit, Histogram\n", "\n", "from pathlib import Path\n", - "src = Path(\"benzene_diradical_injected_rotation_measurement_circuit_0.qasm\").read_text()\n", + "src = Path(\"benzene_diradical_injected_rotation_measurement_circuit_0.qasm\").read_text(encoding=\"utf-8\")\n", "\n", "init(target_profile=TargetProfile.Base)\n", "qir = compile(src)" @@ -131,16 +131,16 @@ "from qdk.widgets import MoleculeViewer\n", "\n", "# Load cached molecule data from file.\n", - "molecule_data = Path(\"benzene_diradical.structure.xyz\").read_text()\n", + "molecule_data = Path(\"benzene_diradical.structure.xyz\").read_text(encoding=\"utf-8\")\n", "\n", "# Note: The \"info\" field is optional and can contain any metadata you want to display with the cube data.\n", "cube_data = {\n", " \"alpha_18\": {\n", - " \"data\": Path(\"MO_alpha_18.cube\").read_text(),\n", + " \"data\": Path(\"MO_alpha_18.cube\").read_text(encoding=\"utf-8\"),\n", " \"info\": {\"Energy (Ha)\": -0.392, \"Symmetry\": \"A1\", \"Occupation\": 1.0}\n", " },\n", " \"alpha_19\": {\n", - " \"data\": Path(\"MO_alpha_19.cube\").read_text(),\n", + " \"data\": Path(\"MO_alpha_19.cube\").read_text(encoding=\"utf-8\"),\n", " \"info\": {\"Energy (Ha)\": 0.581, \"Symmetry\": \"B2\", \"Occupation\": 0.0}\n", " }\n", "}\n", diff --git a/samples/python_interop/eval_single_file/run.py b/samples/python_interop/eval_single_file/run.py index 2a842c9790..0d8316e4b6 100644 --- a/samples/python_interop/eval_single_file/run.py +++ b/samples/python_interop/eval_single_file/run.py @@ -2,7 +2,7 @@ from qdk import qsharp # Import the Q# code from the teleport.qs file -code = (Path(__file__).parent / "sample.qs").read_text() +code = (Path(__file__).parent / "sample.qs").read_text(encoding="utf-8") qsharp.eval(code) # Directly invoke the Main operation defined in the loaded file diff --git a/source/pip/qsharp/qre/interop/_qsharp.py b/source/pip/qsharp/qre/interop/_qsharp.py index 83c2cee60d..e8a8e8fe12 100644 --- a/source/pip/qsharp/qre/interop/_qsharp.py +++ b/source/pip/qsharp/qre/interop/_qsharp.py @@ -144,7 +144,7 @@ def trace_from_entry_expr_cached( Trace: A trace representing the resource profile of the program. """ if cache_path and cache_path.exists(): - return Trace.from_json(cache_path.read_text()) + return Trace.from_json(cache_path.read_text(encoding="utf-8")) trace = trace_from_entry_expr(entry_expr, *args) diff --git a/source/pip/tests/qre/test_interop.py b/source/pip/tests/qre/test_interop.py index 6f3cf37713..99416d6bb7 100644 --- a/source/pip/tests/qre/test_interop.py +++ b/source/pip/tests/qre/test_interop.py @@ -31,7 +31,7 @@ def test_trace_from_qir(ll_file): # QIR output without errors, rather than checking specific properties of the # trace. try: - app = QIRApplication(ll_file.read_text()) + app = QIRApplication(ll_file.read_text(encoding="utf-8")) _ = app.get_trace() except ValueError as e: # The only reason of failure is presence of control flow diff --git a/source/vscode/skills/qdk-programming/python.md b/source/vscode/skills/qdk-programming/python.md index 1b2bcbd409..904739f0c0 100644 --- a/source/vscode/skills/qdk-programming/python.md +++ b/source/vscode/skills/qdk-programming/python.md @@ -151,7 +151,7 @@ results = qsharp.run("CNOT_Measure()", 100, seed=42) from pathlib import Path # Load and evaluate a .qs file -code = Path("sample.qs").read_text() +code = Path("sample.qs").read_text(encoding="utf-8") qsharp.eval(code) # Run an operation defined in that file From 2c0eac9afdc3e351df1d4bed4a495165ade4b208 Mon Sep 17 00:00:00 2001 From: joao-boechat Date: Tue, 28 Apr 2026 11:47:40 -0700 Subject: [PATCH 10/10] add utf-8 encoding to read_text calls --- samples/qre/0_getting_started.ipynb | 2 +- samples/qre/1_qre_input.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/qre/0_getting_started.ipynb b/samples/qre/0_getting_started.ipynb index 268fca6083..0aa45b0a17 100644 --- a/samples/qre/0_getting_started.ipynb +++ b/samples/qre/0_getting_started.ipynb @@ -71,7 +71,7 @@ "outputs": [], "source": [ "# Evaluate the Q# application into the scope\n", - "qsharp.eval(Path(\"../algorithms/Ising/Simple1dIsingOrder1.qs\").read_text())\n", + "qsharp.eval(Path(\"../algorithms/Ising/Simple1dIsingOrder1.qs\").read_text(encoding=\"utf-8\"))\n", "\n", "# The entry point in the Q# code above is called Main\n", "app = QSharpApplication(qdk.code.Main)" diff --git a/samples/qre/1_qre_input.ipynb b/samples/qre/1_qre_input.ipynb index d3ed86cfd9..a6f07d2d9d 100644 --- a/samples/qre/1_qre_input.ipynb +++ b/samples/qre/1_qre_input.ipynb @@ -135,7 +135,7 @@ " / \"source\" / \"pip\" / \"tests-integration\" / \"resources\"\n", " / \"adaptive_ri\" / \"output\" / \"HiddenShiftNISQ.ll\"\n", ")\n", - "qir_app = QIRApplication(qir_file.read_text())" + "qir_app = QIRApplication(qir_file.read_text(encoding=\"utf-8\"))" ] }, {