Skip to content

Commit

Permalink
Merge branch 'main' into ivanbasov/various_obj
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanbasov authored Nov 21, 2023
2 parents a985070 + 4908b19 commit d5c945d
Show file tree
Hide file tree
Showing 9 changed files with 318 additions and 57 deletions.
221 changes: 221 additions & 0 deletions .ado/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
trigger: none
pr: none

parameters:
- name: Build_Type
type: string
values:
- dev
- rc
- stable
default: 'dev'
- name: Patch_Number
type: number
default: 0
- name: Deploy_Azure_Quantum_Package
type: boolean
default: True
- name: Deploy_QDK_Package
type: boolean
default: False
- name: Create_GitHub_Release
type: boolean
default: False
- name: Publish_PyPi_Packages
type: boolean
default: False

variables:
- name: OwnerPersonalAlias
value: 'billti'

jobs:
- job: "Build_Azure_Quantum_Python"
pool:
vmImage: 'windows-latest'

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'

- script: |
pip install wheel
displayName: Install wheel
- script: |
pip freeze
displayName: List installed packages
- script: |
python set_version.py
env:
BUILD_TYPE: ${{ parameters.Build_Type }}
PATCH_NUMBER: ${{ parameters.Patch_Number }}
displayName: Set version
- script: |
cd $(Build.SourcesDirectory)/azure-quantum
python setup.py sdist --dist-dir=target/wheels
python setup.py bdist_wheel --dist-dir=target/wheels
displayName: Build azure-quantum package
- publish: $(Build.SourcesDirectory)/azure-quantum/target/wheels/
artifact: azure-quantum-wheels
displayName: Upload azure-quantum artifacts

- job: "Test_Azure_Quantum_Python"
pool:
vmImage: 'windows-latest'

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'

- script: |
pip install pytest pytest-azurepipelines pytest-cov
displayName: Install pytest dependencies
- script: |
pip freeze
displayName: List installed packages
- script: |
cd $(Build.SourcesDirectory)/azure-quantum
pip install .[all]
pytest --cov-report term --cov=azure.quantum --junitxml test-output-azure-quantum.xml $(Build.SourcesDirectory)/azure-quantum
displayName: Run azure-quantum unit tests
- task: PublishTestResults@2
displayName: 'Publish tests results (python)'
condition: succeededOrFailed()
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Azure Quantum Python Tests'

- job: "Build_QDK_Python"
pool:
vmImage: 'windows-latest'

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'

- script: |
pip install wheel
displayName: Install wheel
- script: |
pip freeze
displayName: List installed packages
- script: |
python set_version.py
env:
BUILD_TYPE: ${{ parameters.Build_Type }}
PATCH_NUMBER: ${{ parameters.Patch_Number }}
displayName: Set version
- script: |
cd $(System.DefaultWorkingDirectory)/qdk
python setup.py sdist --dist-dir=target/wheels
python setup.py bdist_wheel --dist-dir=target/wheels
displayName: Build qdk package
- publish: $(System.DefaultWorkingDirectory)/qdk/target/wheels/
artifact: qdk-wheels
displayName: Upload qdk-wheels artifacts

- job: "Approval"
dependsOn:
- "Build_Azure_Quantum_Python"
- "Build_QDK_Python"
- "Test_Azure_Quantum_Python"
pool: server
timeoutInMinutes: 1440 # job times out in 1 day
steps:
- task: ManualValidation@0
timeoutInMinutes: 1440 # task times out in 1 day
inputs:
notifyUsers: ''
instructions: 'Please verify artifacts and approve the release'
onTimeout: 'reject'

- job: "Publish_Python_Packages"
dependsOn: Approval
pool:
vmImage: 'windows-latest'

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'

- script: |
python set_version.py
env:
BUILD_TYPE: ${{ parameters.Build_Type }}
PATCH_NUMBER: ${{ parameters.Patch_Number }}
displayName: Set version
- download: current
artifact: azure-quantum-wheels
displayName: Download azure-quantum artifacts

- download: current
artifact: qdk-wheels
displayName: Download qdk artifacts

- task: CopyFiles@2
condition: ${{ parameters.Deploy_Azure_Quantum_Package }}
displayName: Copy azure-quantum artifacts
inputs:
SourceFolder: '$(Pipeline.Workspace)/azure-quantum-wheels'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/target/wheels'

- task: CopyFiles@2
condition: ${{ parameters.Deploy_QDK_Package }}
displayName: Copy qdk artifacts
inputs:
SourceFolder: '$(Pipeline.Workspace)/qdk-wheels'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/target/wheels'

- script: |
ls $(Build.ArtifactStagingDirectory)/target/wheels/*
displayName: List Py Artifacts to publish
- task: GitHubRelease@1
condition: ${{ parameters.Create_GitHub_Release }}
displayName: Create GitHub Release
inputs:
gitHubConnection: AzureQuantumOauth
repositoryName: Microsoft/azure-quantum-python
action: create
tagSource: 'userSpecifiedTag'
tag: azure-quantum_v$(PYTHON_VERSION)
isDraft: True
isPreRelease: ${{ ne(parameters.Build_Type, 'stable') }}
target: $(Build.SourceVersion)
addChangeLog: False
assets: |
$(Build.ArtifactStagingDirectory)/target/wheels/*
- task: EsrpRelease@4
condition: ${{ parameters.Publish_PyPi_Packages }}
displayName: Publish Py Packages
inputs:
ConnectedServiceName: 'ESRP_Release'
Intent: 'PackageDistribution'
ContentType: 'PyPi'
FolderLocation: '$(Build.ArtifactStagingDirectory)/target/wheels'
Owners: '$(OwnerPersonalAlias)@microsoft.com' # NB: Group email here fails the task with non-actionable output.
Approvers: '[email protected]'
# Auto-inserted Debugging defaults:
ServiceEndpointUrl: 'https://api.esrp.microsoft.com'
MainPublisher: 'QuantumDevelpmentKit' # ESRP Team's Correction (including the critical typo "Develpm").
DomainTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47'
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @microsoft/azurequantumclients
4 changes: 4 additions & 0 deletions azure-quantum/azure/quantum/target/microsoft/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ def __init__(self, data: Union[Dict, List]):
# Add plot function for batching jobs
self.plot = self._plot
self.summary_data_frame = self._summary_data_frame

def _is_succeeded(self):
return 'status' in self and self['status'] == "success"

def data(self, idx: Optional[int] = None) -> Any:
"""
Expand Down Expand Up @@ -409,6 +412,7 @@ def _item_result_summary_table(self):

def _batch_result_table(self, indices):
succeeded_item_indices = [i for i in indices if is_succeeded(self[i])]

if len(succeeded_item_indices) == 0:
print("None of the jobs succeeded")
return ""
Expand Down
14 changes: 5 additions & 9 deletions azure-quantum/azure/quantum/target/pasqal/target.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,13 @@ class PasqalTarget(str, Enum):
"""The known targets for the Pasqal provider
"""

SIM_EMU_FREE = "pasqal.sim.emu_free"
SIM_EMU_TN = "pasqal.sim.emu_tn"
SIM_EMU_TN = "pasqal.sim.emu-tn"
QPU_FRESNEL = "pasqal.qpu.fresnel"
"""A simulator target for Quil. See https://github.com/quil-lang/qvm for more info."""

def simulators() -> List[str]:
"""Returns a list of simulator targets"""
return [
PasqalTarget.SIM_EMU_FREE.value,
PasqalTarget.SIM_EMU_TN.value
]

Expand All @@ -44,9 +42,7 @@ def qpus() -> List[str]:

def num_qubits(target_name) -> int:
"""Returns the number of qubits supported by the given target"""
if target_name == PasqalTarget.SIM_EMU_FREE.value:
return 12
elif target_name == PasqalTarget.SIM_EMU_TN.value:
if target_name == PasqalTarget.SIM_EMU_TN.value:
return 100
elif target_name == PasqalTarget.QPU_FRESNEL.value:
return 20
Expand All @@ -61,7 +57,7 @@ class InputParams:


class Pasqal(Target):
"""Pasqal target, defaults to the simulator PasqalTarget.SIM_EMU_FREE
"""Pasqal target, defaults to the simulator PasqalTarget.SIM_EMU_TN
In order to process the results of a Quil input to this target, we recommend using the included Result class.
"""
Expand All @@ -71,7 +67,7 @@ class Pasqal(Target):
def __init__(
self,
workspace: Workspace,
name: Union[PasqalTarget, str] = PasqalTarget.SIM_EMU_FREE,
name: Union[PasqalTarget, str] = PasqalTarget.SIM_EMU_TN,
input_data_format: str = "pasqal.pulser.v1",
output_data_format: str = "pasqal.pulser-results.v1",
capability: str = "BasicExecution",
Expand All @@ -86,7 +82,7 @@ def __init__(
output_data_format=output_data_format,
capability=capability,
provider_id=provider_id,
content_type="text/plain",
content_type="application/json",
encoding=encoding,
**kwargs,
)
Expand Down
2 changes: 1 addition & 1 deletion azure-quantum/requirements-qsharp.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
qsharp>=0.28.263081
qsharp>=0.28.263081,<=1.0
3 changes: 2 additions & 1 deletion azure-quantum/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,14 @@ def read_requirements(requirement_file: str) -> list[str]:
license="MIT License",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/microsoft/qdk-python",
url="https://github.com/microsoft/azure-quantum-python",
packages=setuptools.find_namespace_packages(include=["azure.*"]),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.7",
install_requires=requirements,
extras_require=extras_require
)
Loading

0 comments on commit d5c945d

Please sign in to comment.