René's URL Explorer Experiment


Title: Support parallel step insertion and parallelism breakup in Bitbucket pipelines by Copilot · Pull Request #1051 · usethis-python/usethis-python · GitHub

Open Graph Title: Support parallel step insertion and parallelism breakup in Bitbucket pipelines by Copilot · Pull Request #1051 · usethis-python/usethis-python

X Title: Support parallel step insertion and parallelism breakup in Bitbucket pipelines by Copilot · Pull Request #1051 · usethis-python/usethis-python

Description: Support adding steps in parallel in Bitbucket pipelines Summary: This PR implements support for adding steps in parallel and breaking up existing parallelism in Bitbucket pipelines, completing the integration with the pipeweld solver. Features Implemented: InsertParallel instruction handling Converts single steps to parallel blocks Adds to existing parallel blocks (both simple and expanded YAML formats) Handles StepItem, ParallelItem, and StageItem cases Breaking up existing parallelism Extracts and moves steps from parallel blocks to satisfy dependencies Automatically simplifies parallel blocks when reduced to one step Supports full pipeweld instruction sequences for rearrangement Changes: Modified apply_pipeweld_instruction_via_doc to handle both new step insertion and existing step movement Added _insert_parallel_step singledispatch for parallel block creation/extension Added _extract_step_from_items and _extract_step_from_item for step extraction Added comprehensive test coverage (6 test cases total) Recent updates: Restored new_step.name in import pipeline error message for better error reporting Removed redundant test_extract_step_from_parallel test Clarified comment: instructions apply to existing steps (not "move" instructions) Changed to raise AssertionError when step not found in pipeline Added detailed comments explaining when is_new_step is true vs false with real-world examples Removed docstrings from all .register functions (keeping only on @singledispatch functions) Refactored to use MissingStepError exception with try-except instead of None checking for more Pythonic and efficient code Extracted instruction application logic into _apply_instruction_to_items helper function to remove noqa comment Renamed new_step parameter to step_to_insert throughout the module for consistency Added test for ParallelExpanded format (line 360) Added test for extracting last step from parallel block, leaving it empty (line 287-289) Original prompt This section details on the original issue you should resolve Support adding steps in parallel in Bitbucket pipelines Motivation Based on the current implementation I am working on for #54, I am making the decision to start by only supporting adding new steps in series, not in parallel. Pipeweld, the solver that underlies this logic, already supports adding steps in parallel, we mostly just need to write the integration for this aspect. There's also a similar integration to handle an edge case where we need to move an existing step to break up a parallelism. Supporting parallelism makes pipelines run more efficiently by taking into account (the lack of) dependency relations between steps. Supporting the ability to break up an existing parallelism allows us to satisfy otherwise-impossible dependency relations. Summary of desired enhancement Handle adding a new step to a Bitbucket pipeline in parallel to an existing step, and breaking up an existing parallelism. Comments on the Issue (you are @copilot in this section) @nathanjmcdougall This is where to look: https://github.com/nathanjmcdougall/usethis-python/blob/0c6fb508d668a38e14c872b708bba281c0d6a24f/src/usethis/_integrations/bitbucket/pipeweld.py#L149 https://github.com/nathanjmcdougall/usethis-python/blob/0c6fb508d668a38e14c872b708bba281c0d6a24f/src/usethis/_integrations/bitbucket/pipeweld.py#L124 We would start by creating test cases. Fixes #149 ✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Open Graph Description: Support adding steps in parallel in Bitbucket pipelines Summary: This PR implements support for adding steps in parallel and breaking up existing parallelism in Bitbucket pipelines, completing the ...

X Description: Support adding steps in parallel in Bitbucket pipelines Summary: This PR implements support for adding steps in parallel and breaking up existing parallelism in Bitbucket pipelines, completing the ...

Opengraph URL: https://github.com/usethis-python/usethis-python/pull/1051

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:2367dafc-6622-b0a7-b057-b6b50041f054
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idD5D0:13DA2D:8AACF5:C6E3C1:6A4CB343
html-safe-nonce31d956bd94e63c787f2068d3b373734601e6dd2202df1b387c707be87897b579
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENUQwOjEzREEyRDo4QUFDRjU6QzZFM0MxOjZBNENCMzQzIiwidmlzaXRvcl9pZCI6IjQ0NTA4NDU0NDM1MDUzMDQzODciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac6bd431470f60ba2d5535f194afe00bceec4aaa38de276615179d218814a32bca
hovercard-subject-tagpull_request:2949024244
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/usethis-python/usethis-python/pull/1051/files
twitter:imagehttps://avatars.githubusercontent.com/in/1143301?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/in/1143301?s=400&v=4
og:image:altSupport adding steps in parallel in Bitbucket pipelines Summary: This PR implements support for adding steps in parallel and breaking up existing parallelism in Bitbucket pipelines, completing the ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/usethis-python/usethis-python git https://github.com/usethis-python/usethis-python.git
octolytics-dimension-user_id216362695
octolytics-dimension-user_loginusethis-python
octolytics-dimension-repository_id842189705
octolytics-dimension-repository_nwousethis-python/usethis-python
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id842189705
octolytics-dimension-repository_network_root_nwousethis-python/usethis-python
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseae90d426644ca15e89bacceb72e51f4e9dbf85f7
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/usethis-python/usethis-python/pull/1051/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fusethis-python%2Fusethis-python%2Fpull%2F1051%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fusethis-python%2Fusethis-python%2Fpull%2F1051%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=usethis-python%2Fusethis-python
Reloadhttps://github.com/usethis-python/usethis-python/pull/1051/files
Reloadhttps://github.com/usethis-python/usethis-python/pull/1051/files
Reloadhttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
usethis-python https://github.com/usethis-python
usethis-pythonhttps://github.com/usethis-python/usethis-python
Notifications https://github.com/login?return_to=%2Fusethis-python%2Fusethis-python
Fork 5 https://github.com/login?return_to=%2Fusethis-python%2Fusethis-python
Star 19 https://github.com/login?return_to=%2Fusethis-python%2Fusethis-python
Code https://github.com/usethis-python/usethis-python
Issues 163 https://github.com/usethis-python/usethis-python/issues
Pull requests 4 https://github.com/usethis-python/usethis-python/pulls
Actions https://github.com/usethis-python/usethis-python/actions
Security and quality 0 https://github.com/usethis-python/usethis-python/security
Insights https://github.com/usethis-python/usethis-python/pulse
Code https://github.com/usethis-python/usethis-python
Issues https://github.com/usethis-python/usethis-python/issues
Pull requests https://github.com/usethis-python/usethis-python/pulls
Actions https://github.com/usethis-python/usethis-python/actions
Security and quality https://github.com/usethis-python/usethis-python/security
Insights https://github.com/usethis-python/usethis-python/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fusethis-python%2Fusethis-python%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fusethis-python%2Fusethis-python%2Fissues%2Fnew%2Fchoose
nathanjmcdougallhttps://github.com/nathanjmcdougall
mainhttps://github.com/usethis-python/usethis-python/tree/main
copilot/support-parallel-steps-bitbuckethttps://github.com/usethis-python/usethis-python/tree/copilot/support-parallel-steps-bitbucket
Conversation 28 https://github.com/usethis-python/usethis-python/pull/1051
Commits 19 https://github.com/usethis-python/usethis-python/pull/1051/commits
Checks 20 https://github.com/usethis-python/usethis-python/pull/1051/checks
Files changed https://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Support parallel step insertion and parallelism breakup in Bitbucket pipelines https://github.com/usethis-python/usethis-python/pull/1051/files#top
Show all changes 19 commits https://github.com/usethis-python/usethis-python/pull/1051/files
b02dd22 Initial plan Copilot Oct 26, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/b02dd2233294f37789cd45993124c421f1ee22d2
7f29321 Add InsertParallel instruction handling and test cases Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/7f29321538359c1a31c5321b2396f7b29c8b455e
42dacbf Fix singledispatch signature for _insert_parallel_step Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/42dacbf021b5a665896c739990949053d63e700a
81bb3af Add support for breaking up parallelism by moving existing steps Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/81bb3afff225ebf0058b42faacf2549979d8be52
6500216 Fix test to use correct instruction order for A, C, B sequence Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/650021631effac14ff1d0488f7d0a1b79c5884e5
147b856 Add clarifying comments to test for instruction/new_step relationship Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/147b856a55f1ae0ac4b95b6f98c06b9a941ccf5e
e35688e Restore new_step.name in import pipeline error message Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/e35688efd7e0000e882d10e64259c91fb782046e
6eda12d Remove test_extract_step_from_parallel test Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/6eda12db673bae72ef73c1514a06619f0e2d31b9
cb6b258 Improve type compliance nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/cb6b258cc024779d958be1a3a653ff7742fc1132
228fd3d Improve type compliance nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/228fd3dd20dd830b7ef1a35c9fb8088df41aeef5
7410b36 Clarify comment and raise AssertionError when step not found Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/7410b3698f2fbfa9b86165387cb4d99ad448b9e0
6758f8c Add detailed comments explaining new vs existing step logic and remov… Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/6758f8cc8fc97806d7b93561d08ce562384f6ac4
25f4c99 Refactor to use MissingStepError exception instead of None checking Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/25f4c99e978aca02b50ed767b7493c4054e3fb0e
f2e552e Pass Ruff nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/f2e552ea918f8db6959f0acaac224f2506bbfa38
095e3f8 Extract instruction application logic and rename new_step to step_to_… Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/095e3f80ac03decf2f54faeae4d17689aa767f46
acb48b6 Make various arguments kwarg-only nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/acb48b64053922ddf5b085725b091ffdddcde109
a7a1dd1 Apply variable renaming consistently (step_to_insert) nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/a7a1dd1576c8aa59dbf83ee12583466fe4c857f2
7a28d39 Add tests for ParallelExpanded format and empty parallel block extrac… Copilot Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/7a28d39be4cc0b33b2109d27e69e954a4b314eca
fa35be1 Fix outdated variable name in comment nathanjmcdougall Oct 27, 2025 https://github.com/usethis-python/usethis-python/pull/1051/commits/fa35be176ff7dd68b8e03d33e2c48f853d8251c8
Clear filters https://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
errors.py https://github.com/usethis-python/usethis-python/pull/1051/files#diff-d256a950f7fa12cfd1d1095e04054f405939ebcab872aec6a2944fec590a3641
pipeweld.py https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
steps.py https://github.com/usethis-python/usethis-python/pull/1051/files#diff-157eb8acd88d2ce77bab7ff7e2d87706c6763e74a9305e658f2fa82f156ef43c
test_pipeweld.py https://github.com/usethis-python/usethis-python/pull/1051/files#diff-54e9dfc05fcfe16747bbfe855f3db34f2b2be5fc4cbea4de239e8b48f643325b
src/usethis/_integrations/ci/bitbucket/errors.pyhttps://github.com/usethis-python/usethis-python/pull/1051/files#diff-d256a950f7fa12cfd1d1095e04054f405939ebcab872aec6a2944fec590a3641
View file https://github.com/usethis-python/usethis-python/blob/fa35be176ff7dd68b8e03d33e2c48f853d8251c8/src/usethis/_integrations/ci/bitbucket/errors.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/usethis-python/usethis-python/pull/1051/{{ revealButtonHref }}
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-d256a950f7fa12cfd1d1095e04054f405939ebcab872aec6a2944fec590a3641
src/usethis/_integrations/ci/bitbucket/pipeweld.pyhttps://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
View file https://github.com/usethis-python/usethis-python/blob/fa35be176ff7dd68b8e03d33e2c48f853d8251c8/src/usethis/_integrations/ci/bitbucket/pipeweld.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/usethis-python/usethis-python/pull/1051/{{ revealButtonHref }}
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-31e84deca1e3a0c223667c1d677f7aa2257a9813d0da79f899330c90063e901a
src/usethis/_integrations/ci/bitbucket/steps.pyhttps://github.com/usethis-python/usethis-python/pull/1051/files#diff-157eb8acd88d2ce77bab7ff7e2d87706c6763e74a9305e658f2fa82f156ef43c
View file https://github.com/usethis-python/usethis-python/blob/fa35be176ff7dd68b8e03d33e2c48f853d8251c8/src/usethis/_integrations/ci/bitbucket/steps.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/usethis-python/usethis-python/pull/1051/{{ revealButtonHref }}
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-157eb8acd88d2ce77bab7ff7e2d87706c6763e74a9305e658f2fa82f156ef43c
https://github.com/usethis-python/usethis-python/pull/1051/files#diff-157eb8acd88d2ce77bab7ff7e2d87706c6763e74a9305e658f2fa82f156ef43c
Please reload this pagehttps://github.com/usethis-python/usethis-python/pull/1051/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.