From d03948cb09710d59d53db825d61bd92c24567fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erc=C3=BCment=20Kaya?= Date: Mon, 15 Jun 2026 17:21:09 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=8E=A8=20minor=20improvements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/mqss/job.h | 1 + include/mqss/resource.h | 15 +++++++++---- src/resource.cpp | 49 ++++++++++++++++++++++++++++++++++++----- 3 files changed, 55 insertions(+), 10 deletions(-) diff --git a/include/mqss/job.h b/include/mqss/job.h index dc15af9..05d59b9 100644 --- a/include/mqss/job.h +++ b/include/mqss/job.h @@ -17,6 +17,7 @@ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +#pragma once #include #include #include diff --git a/include/mqss/resource.h b/include/mqss/resource.h index 4af8dc3..ba6bbf8 100644 --- a/include/mqss/resource.h +++ b/include/mqss/resource.h @@ -17,6 +17,7 @@ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +#pragma once #include #include #include @@ -26,14 +27,19 @@ namespace mqss::client { class Gate { public: - Gate(std::string name, unsigned int arity, + Gate(std::string name, unsigned int qubitNumber, unsigned int parameterNumber, std::vector> supportedQubits) - : mName(std::move(name)), mArity(arity), + : mName(std::move(name)), mQubitNumber(qubitNumber), + mParameterNumber(parameterNumber), mSupportedQubits(std::move(supportedQubits)) {} const std::string& getName() const noexcept { return mName; } - const unsigned int& getArity() const noexcept { return mArity; } + const unsigned int& getQubitNumber() const noexcept { return mQubitNumber; } + + const unsigned int& getParameterNumber() const noexcept { + return mParameterNumber; + } const std::vector>& getSupportedQubits() const noexcept { @@ -42,7 +48,8 @@ class Gate { private: std::string mName; - unsigned int mArity; + unsigned int mQubitNumber; + unsigned int mParameterNumber; std::vector> mSupportedQubits; }; diff --git a/src/resource.cpp b/src/resource.cpp index 735b6fe..e0635f4 100644 --- a/src/resource.cpp +++ b/src/resource.cpp @@ -51,6 +51,43 @@ std::vector> extractCouplingMap(const nlohmann::json& response, return result; } +std::pair +getGateProterties(const std::string& gateName) { + + if (gateName == "cz") { + return {2, 0}; + } + if (gateName == "measure") { + return {1, 0}; + } + if (gateName == "id") { + return {1, 0}; + } + if (gateName == "r") { + return {1, 2}; + } + if (gateName == "rx") { + return {1, 1}; + } + if (gateName == "rz") { + return {1, 1}; + } + if (gateName == "rxx") { + return {2, 1}; + } + if (gateName == "if_else") { + return {1, 0}; + } + if (gateName == "reset") { + return {1, 0}; + } + if (gateName == "swap") { + return {2, 0}; + } + + throw std::invalid_argument("Unknown Gate: " + gateName); +} + std::vector extractGates(const nlohmann::json& response, const std::string& key) { @@ -66,13 +103,13 @@ std::vector extractGates(const nlohmann::json& response, std::regex gateRegex(R"(\(\s*['"]([^'"]+)['"]\s*,\s*(\{[^{}]*\})\s*\))"); auto gateBegin = std::sregex_iterator(text.begin(), text.end(), gateRegex); auto gateEnd = std::sregex_iterator(); - std::string GateName; - unsigned int arity; + std::string gateName; + unsigned int qubitCount; std::vector> supportedQubits; for (auto it = gateBegin; it != gateEnd; ++it) { - GateName = (*it)[1]; + gateName = (*it)[1]; std::string body = (*it)[2]; std::regex tupleRegex(R"(([^)]*)\)\s*:\s*None)"); @@ -99,9 +136,9 @@ std::vector extractGates(const nlohmann::json& response, supportedQubits.push_back(qubits); } - arity = !supportedQubits.empty() ? supportedQubits.at(0).size() : 0; - - result.push_back(Gate(GateName, arity, std::move(supportedQubits))); + auto [qubitCount, parameterNumber] = getGateProterties(gateName); + result.emplace_back(gateName, qubitCount, parameterNumber, + std::move(supportedQubits)); } return result; From a35209df9e82436de0193a383149ecb5b9a96c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erc=C3=BCment=20Kaya?= Date: Tue, 16 Jun 2026 10:52:36 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=90=8D=20Updating=20the=20Python=20bi?= =?UTF-8?q?ndings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bindings/resource.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bindings/resource.cpp b/bindings/resource.cpp index c9e1521..2aedbbe 100644 --- a/bindings/resource.cpp +++ b/bindings/resource.cpp @@ -34,7 +34,8 @@ void registerResourceInterface(const py::module& m) { py::class_(m, "Gate") .def_property_readonly("name", &mqss::client::Gate::getName) - .def_property_readonly("arity", &mqss::client::Gate::getArity) + .def_property_readonly("qubit_number", &mqss::client::Gate::getQubitNumber) + .def_property_readonly("parameter_number", &mqss::client::Gate::getParameterNumber) .def_property_readonly("supported_qubits", &mqss::client::Gate::getSupportedQubits); } From 9dc07d53297d37714f827c7443f5e2c76b1463e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erc=C3=BCment=20Kaya?= Date: Tue, 16 Jun 2026 16:33:03 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=8E=A8=20minor=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/mqss/client.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/mqss/client.h b/include/mqss/client.h index 92cb013..222c415 100644 --- a/include/mqss/client.h +++ b/include/mqss/client.h @@ -56,10 +56,8 @@ class MQSSClient { const std::string& url_or_queue = MQP_DEFAULT_URL, bool is_hpc = false); -#ifdef ENABLE_UNIT_TEST explicit MQSSClient(std::unique_ptr client) : mClient(std::move(client)) {} -#endif // Resources std::vector getAllResources() const;