pytket v1.0.0 release candidate 10
Pre-release
Pre-release
Feature/routing-v3 (#167) * Update build_and_test.yml * Feature/TokenSwapping (#94) * Copy TokenSwapping CodeBase, update CMakeLists.txt * Add TokenSwapping tests * Update GraphTests to use TokenSwapping RNG * Remove "class RNG;" * Add cpp files to compilation * Add "MappingManager" class and port older routing solution (#95) * Copy code from private repository * Add binders for mapping module * Adding mapping module to setup.py * Add shared_ptr to Architecture subclasses in binder file * Port python test for mapping module * Add token swapping stage to routing v3 (#96) * Assert candidate swaps size (#108) * Add assertion that there are at least some swaps to trial * Pseudo code for Yao * Fix routing with measurements issue * Add classically controlled gates to lexiroute test Co-authored-by: sjdilkes <[email protected]> * Update Architecture method names * get_all_nodes -> nodes * Update Compilation Passes to use RoutingV3 (#115) * Add token swapping stage, add test * Update compilation passes to use new routing * Add json serialization * Continue adding JSON serialisation for routing_config * Improve Json definitions * Update JSON Serialization and use of Barrier * Change from reference_wrapper to shared_ptr * Add JSON_DECL for std::vector<RoutingMethodPtr> * format routing_test * Fix up tests and binders for python * Uncoment measurement tests * rename method to merge_ancilla * debug proptest * Make add_qubit add qubit to unit_bimaps_ if not nullptr * Architectures -> Architecture * Install boost on MacOS. * comments to debug * update proptest to support ancillas properly * remove couts * format * Make Unitary dimensions match * add tket assert for comparison * Update test to check value * add_qubit -> add_ancilla * Remove kwargs formatting from argument * Rename Architecture Methods * rename architecture methods * Allow architecture mapping to take original edges, to calculate Node to size_t mapping * add get_square_grid_edges, to allow fixed tests independent of SquareGrid * use ArchitectureMapping and edges in most tests, instead of Architecture * trivial typos, comments, cmake update * add copyright notices, pragma once, remove semicolon typos * update binders for inheritance and docs * format * Remove NodeGraph * update formatting * Update CMakeLists and Setup.py * Use explicit shared_ptr * Refactor Routing module binder Make "FullMappingPass" use a kwargs based argument to get round faulty docs type definitions. * remove trailing whitespace * update clang formatting * reformat file * update orientation of BRIDGE gates * Update conf docs mapping, remove kwargs full mapping pass Co-authored-by: Alec Edgington <[email protected]> Co-authored-by: Zen Harper <[email protected]> * Remove outdated Routing code from repository (#165) * Add token swapping stage, add test * Update compilation passes to use new routing * Add json serialization * Continue adding JSON serialisation for routing_config * Improve Json definitions * Update JSON Serialization and use of Barrier * Change from reference_wrapper to shared_ptr * Add JSON_DECL for std::vector<RoutingMethodPtr> * format routing_test * Fix up tests and binders for python * Uncoment measurement tests * rename method to merge_ancilla * debug proptest * Make add_qubit add qubit to unit_bimaps_ if not nullptr * Architectures -> Architecture * Install boost on MacOS. * comments to debug * update proptest to support ancillas properly * remove couts * format * Make Unitary dimensions match * add tket assert for comparison * Update test to check value * add_qubit -> add_ancilla * Remove kwargs formatting from argument * Rename Architecture Methods * rename architecture methods * Allow architecture mapping to take original edges, to calculate Node to size_t mapping * add get_square_grid_edges, to allow fixed tests independent of SquareGrid * use ArchitectureMapping and edges in most tests, instead of Architecture * trivial typos, comments, cmake update * add copyright notices, pragma once, remove semicolon typos * update binders for inheritance and docs * format * Remove NodeGraph * update formatting * Update CMakeLists and Setup.py * Use explicit shared_ptr * Refactor Routing module binder Make "FullMappingPass" use a kwargs based argument to get round faulty docs type definitions. * remove trailing whitespace * update clang formatting * reformat file * update orientation of BRIDGE gates * Remove src/Routing Move Placement files into new src/Placement subdirectory, update tests as necessary, move connectivty constraint verification to utils * update tket/pytket to not install or use old pytket.routing * clang formatting * Update mitigation test to use explicit placement * remove binder file * Update conf docs mapping, remove kwargs full mapping pass * update docs for new python modules * Move Verification files to src/Mapping subdirectory * Delete test_Routing.cpp * Update imports for Verification.hpp * Add default argument to LexiRouteRoutingMethod binder Update python tests to use default * upadte Verification.cpp compilation pass * Formatting Co-authored-by: Alec Edgington <[email protected]> Co-authored-by: Zen Harper <[email protected]> * Improve LexiRoute.cpp coverage * Improve MappingFrontier.cpp test coverage * Rmoeve decmopose_module method * readd missing test * Update LexiRoute test coverage * Remove redundant comments * Feature/reorder multi qubit gates (#157) * Add token swapping stage, add test * Update compilation passes to use new routing * Add json serialization * Continue adding JSON serialisation for routing_config * Improve Json definitions * Update JSON Serialization and use of Barrier * Change from reference_wrapper to shared_ptr * Add JSON_DECL for std::vector<RoutingMethodPtr> * format routing_test * Fix up tests and binders for python * Uncoment measurement tests * rename method to merge_ancilla * debug proptest * Make add_qubit add qubit to unit_bimaps_ if not nullptr * Architectures -> Architecture * Install boost on MacOS. * comments to debug * update proptest to support ancillas properly * remove couts * format * Make Unitary dimensions match * add tket assert for comparison * Update test to check value * add_qubit -> add_ancilla * Remove kwargs formatting from argument * Rename Architecture Methods * rename architecture methods * Allow architecture mapping to take original edges, to calculate Node to size_t mapping * add get_square_grid_edges, to allow fixed tests independent of SquareGrid * use ArchitectureMapping and edges in most tests, instead of Architecture * trivial typos, comments, cmake update * add copyright notices, pragma once, remove semicolon typos * update binders for inheritance and docs * format * Remove NodeGraph * update formatting * Reorder CZ circuits * Revert "Reorder CZ circuits" This reverts commit 9d67720f2047fb6875c6c520f37fb28967b3752e. * Make two methods in MappingFrontier public * Add MultiGateReorderRoutingMethod * Remove unnecessary frontier advancement * Avoid copying the whole MappingFrontier * Remove the edge_in_frontier method * Add comment for vertex rewiring * Allow users to set search limits * Change default max depth/size limits to 10 * Fix using incorrect port colours * Obtain unitid by traversing to frontier instead of inputs * Add test for MultiGateReorderRoutingMethod * Refactor condition checks and rewire * Implement check_method * Add test for routing with LexiRoute Co-authored-by: sjdilkes <[email protected]> Co-authored-by: Alec Edgington <[email protected]> Co-authored-by: Zen Harper <[email protected]> * modify TKET_ASSERT: allow extra messages, catch exceptions in evaluation * replace some exceptions with tket asserts; should be ignored by test coverage * Start moving files for modularisation * compilation refactor commit * Reorder base cmake * add assertmessage.cpp to compiilation * Rework TokenSwapping includes * clang format * update linking for pytket * reformat with black * Revert "reformat with black" This reverts commit 66ce863e16ab6e7ba50c739eb7c696c9afbf7ffc. * reformat setup.py * update proptests cmakelists * Feature/add serialisation for multi qubit reorder (#184) * Add JSON serialisation for MultiGateReorderRoutingMethod and getters * Add tests for JSON serialisation for MultiGateReorderRoutingMethod * Update test coverage for RoutingMethod serialization * make mapping_frontier from mapping_frontier * routing -> mapping * use TKET_ASSERT_WITH_THROW instead of TKET_ASSERT * Replace TKET_ASSERT with throw and use GCOVR_EXCL_START,STOP where appropriate * replace throws with TKET_ASSERT_WITH_THROW where appropriate * Add the TKET_ASSERT_WITH_THROW macro * add simple swap functions tests * add TKET_ASSERT_WITH_THROW tests, for detailed error messages * clang format * try to fix code coverage branching problems in TKET_ASSERT_WITH_THROW by hiding throws * correct "does not return a value" error * Infra/use bimap for quantum boundary (#185) * Add sequenced_bimap_t * Use sequenced_bimap_t for unit_vertport_frontier_t * Update MultiGateReorder * remove try/catch from tket assert with throw, to cut down branching * remove TKET_ASSERT_WITH_THROW, replace with TKET_ASSERT * Remove AssertMessage(), add TKET_ASSERT_WITH_MESSAGE * manually add coverage exclusion tags for now, until the branching problem is fixed * Add copyright information * [RV3] [refactor] Clean up of the dependencies of the modules (#199) * remove cycle from cmake lists * clean up * add comment * fix binder include * try to fix pytket build * try to fix problems * fix windows build * try to fix windows * add bimaps attribute to MappingFrontier * update_quantum_boundary_uids remaps bimaps entries * Update build_and_test.yml * Update changelog.rst * Update copyright dates 2021 -> 2022 * Update pytket/binders/mapping.cpp Co-authored-by: Alec Edgington <[email protected]> * Update pytket/binders/mapping.cpp Co-authored-by: Alec Edgington <[email protected]> * Update pytket/binders/mapping.cpp Co-authored-by: Alec Edgington <[email protected]> * Corrections for PR * Remove tokenswapping from dependneices * Feature/decompose boxes in routing (#197) * Reject boxes in Architecture::valid_operation * Add `next_q_cut` method to a quantum cut Only consider quantum edges * Use `next_q_cut` in `advance_frontier_boundary` * Add BoxDecompositionRoutingMethod * Add tests * Reformat * Reject boxes in LexiRouteMethod::check_method * Update tests * Add JSON serialisation * Handle unused arguments * Refactor Circuit::decompose_boxes * fix naming Co-authored-by: sjdilkes <[email protected]> * update compilation for tokenswapping * Revert "Feature/decompose boxes in routing (#197)" This reverts commit 86fb61e6f2922050a1ac438d1a8103ea6942a239. * Address PR Requested changes * change copyright to 2022 * remove unused code, including PathFinderInterface * rename HybridTsa00 -> HybridTsa; move files out of include directory * move DebugFunctions into tests * move get_swaps_lower_bound out of tket into tests * simple typos; unused code; extra comments, asserts * rename main_entry_functions -> SwapsFromQubitMapping; remove unused function * move RNG from token swapping to Utils; erase tests/Graphs/RNG * move get_random_set out of token swapping into test utils * move some stuff out of namespace tsa_internal into namespace tket * more cleanup * clang format * added OpType dependency to token swapping * clang format * replace throws with TKET_ASSERT_WITH_MESSAGE * move BruteForceColouring.hpp, ColouringPriority.hpp out of include directory * add TokenSwappingWithArch project; move files out of TokenSwapping * remove architecture from TokenSwapping * move DistancesInterface, NeighboursInterface out of namespace tsa_internal * update TokenSwapping tests to use TokenSwappingWithArch * bool type for delay_measures * Create architecture_test.py * Reduce test times: add TSGlobalTestParameters with run_long_tests option * add test_DebugFunctions.cpp and remove test coverage exclusion * Remove unreachable code. * update architecture binder * Revert "update architecture binder" This reverts commit d7bbd01adf9759adae0aabf1afd88a8678117f06. * formatting, remove nodegraph test * update architecture and mapping tests * add architecture_aware_synthesis_test.py * Create placement_test.py * Update range of python mapping tests * update routing test coverage * Cover Alec's comments * format transform_test * change length of line * remove trailing white space * name -> name_of_ethod * name -> name_of_method RoutingMethod * tokenswappingwitharch * add type ignores * "name_of_method" -> "name' * Update valid_operation description * reformat transform_test and remove "had" * remove second auto_rebase_pass * Add missing import. * Add option to tket-tests conan build determining whether full tests are run. If tket-tests:full=True, the compiler flag TKET_TESTS_FULL is defined. * remove TokenSwappingWithArch project; move files into Architecture * Set "full tests" option on scheduled CI runs only. * change TKET_ASSERT_WITH_MESSAGE to have parentheses around message * Add note to README. * rename HybridTSA_00 to HybridTsa * Replace TSGlobalTestParameters with #ifdef TKET_TESTS_FULL * commit other forgotten files * Remove GetTketAssertMessage and TKET_ASSERT_WITH_MESSAGE, go back to AssertMessage(). * clang format * Move test_Utils.cpp to test/Utils directory, rename to test_HelperFunctions.cpp * fix "function does not return a value" error * fix "non-void function does not return a value" error, attempt 2! * Forgot to remove final TokenSwappingWithArch bits * Fix build failure. Puzzling. * Fix for mypy, Co-authored-by: yao-cqc <[email protected]> Co-authored-by: Alec Edgington <[email protected]> Co-authored-by: Zen Harper <[email protected]> Co-authored-by: cqc-melf <[email protected]> Co-authored-by: Alec Edgington <[email protected]> Co-authored-by: melf <[email protected]>