Skip to content

Commit 431735d

Browse files
committed
rename make_float/make_duration
1 parent 40aa8ae commit 431735d

File tree

7 files changed

+46
-34
lines changed

7 files changed

+46
-34
lines changed

oqpy/base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,10 +384,10 @@ def __init__(
384384
ast.BinaryOperator["-"],
385385
]:
386386
# Late import to avoid circular imports.
387-
from oqpy.timing import make_duration
387+
from oqpy.timing import convert_float_to_duration
388388

389-
self.lhs = make_duration(self.lhs)
390-
self.rhs = make_duration(self.rhs)
389+
self.lhs = convert_float_to_duration(self.lhs)
390+
self.rhs = convert_float_to_duration(self.rhs)
391391

392392
def to_ast(self, program: Program) -> ast.BinaryExpression:
393393
"""Converts the OQpy expression into an ast node."""

oqpy/classical_types.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
optional_ast,
4343
to_ast,
4444
)
45-
from oqpy.timing import make_duration
45+
from oqpy.timing import convert_float_to_duration
4646

4747
if TYPE_CHECKING:
4848
from oqpy.program import Program
@@ -321,7 +321,7 @@ def __init__(
321321
**type_kwargs: Any,
322322
) -> None:
323323
if init_expression is not None:
324-
init_expression = make_duration(init_expression)
324+
init_expression = convert_float_to_duration(init_expression)
325325
super().__init__(init_expression, name, *args, **type_kwargs)
326326

327327

@@ -375,7 +375,9 @@ def __init__(
375375

376376
# Automatically handle Duration array.
377377
if base_type is DurationVar and kwargs["init_expression"] is not None:
378-
kwargs["init_expression"] = (make_duration(i) for i in kwargs["init_expression"])
378+
kwargs["init_expression"] = (
379+
convert_float_to_duration(i) for i in kwargs["init_expression"]
380+
)
379381

380382
super().__init__(
381383
*args,

oqpy/control_flow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
_ClassicalVar,
3131
convert_range,
3232
)
33-
from oqpy.timing import make_duration
33+
from oqpy.timing import convert_float_to_duration
3434

3535
ClassicalVarT = TypeVar("ClassicalVarT", bound=_ClassicalVar)
3636

@@ -126,7 +126,7 @@ def ForIn(
126126
set_declaration = convert_range(program, iterator)
127127
elif isinstance(iterator, Iterable):
128128
if identifier_type is DurationVar:
129-
iterator = (make_duration(i) for i in iterator)
129+
iterator = (convert_float_to_duration(i) for i in iterator)
130130

131131
set_declaration = ast.DiscreteSet([to_ast(program, i) for i in iterator])
132132
else:

oqpy/program.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
to_ast,
4242
)
4343
from oqpy.pulse import FrameVar, PortVar, WaveformVar
44-
from oqpy.timing import make_duration, make_float
44+
from oqpy.timing import convert_float_to_duration, convert_duration_to_float
4545

4646
__all__ = ["Program"]
4747

@@ -366,7 +366,7 @@ def delay(
366366
"""Apply a delay to a set of qubits or frames."""
367367
if not isinstance(qubits_or_frames, Iterable):
368368
qubits_or_frames = [qubits_or_frames]
369-
ast_duration = to_ast(self, make_duration(time))
369+
ast_duration = to_ast(self, convert_float_to_duration(time))
370370
ast_qubits_or_frames = map_to_ast(self, qubits_or_frames)
371371
self._add_statement(ast.DelayInstruction(ast_duration, ast_qubits_or_frames))
372372
return self
@@ -400,32 +400,32 @@ def set_phase(self, frame: AstConvertible, phase: AstConvertible) -> Program:
400400
# such as s^{-1}. For instance, in 2 * oqpy.pi * tppi * DurationVar(1e-8),
401401
# tppi is a float but has a frequency unit. This will coerce the result type
402402
# to a float by assuming the duration should be represented in seconds."
403-
self.function_call("set_phase", [frame, make_float(phase)])
403+
self.function_call("set_phase", [frame, convert_duration_to_float(phase)])
404404
return self
405405

406406
def shift_phase(self, frame: AstConvertible, phase: AstConvertible) -> Program:
407407
"""Shift the phase of a particular frame."""
408-
self.function_call("shift_phase", [frame, make_float(phase)])
408+
self.function_call("shift_phase", [frame, convert_duration_to_float(phase)])
409409
return self
410410

411411
def set_frequency(self, frame: AstConvertible, freq: AstConvertible) -> Program:
412412
"""Set the frequency of a particular frame."""
413-
self.function_call("set_frequency", [frame, make_float(freq)])
413+
self.function_call("set_frequency", [frame, convert_duration_to_float(freq)])
414414
return self
415415

416416
def shift_frequency(self, frame: AstConvertible, freq: AstConvertible) -> Program:
417417
"""Shift the frequency of a particular frame."""
418-
self.function_call("shift_frequency", [frame, make_float(freq)])
418+
self.function_call("shift_frequency", [frame, convert_duration_to_float(freq)])
419419
return self
420420

421421
def set_scale(self, frame: AstConvertible, scale: AstConvertible) -> Program:
422422
"""Set the amplitude scaling of a particular frame."""
423-
self.function_call("set_scale", [frame, make_float(scale)])
423+
self.function_call("set_scale", [frame, convert_duration_to_float(scale)])
424424
return self
425425

426426
def shift_scale(self, frame: AstConvertible, scale: AstConvertible) -> Program:
427427
"""Shift the amplitude scaling of a particular frame."""
428-
self.function_call("shift_scale", [frame, make_float(scale)])
428+
self.function_call("shift_scale", [frame, convert_duration_to_float(scale)])
429429
return self
430430

431431
def returns(self, expression: AstConvertible) -> Program:
@@ -480,7 +480,7 @@ def pragma(self, command: str) -> Program:
480480
def _do_assignment(self, var: AstConvertible, op: str, value: AstConvertible) -> None:
481481
"""Helper function for variable assignment operations."""
482482
if isinstance(var, classical_types.DurationVar):
483-
value = make_duration(value)
483+
value = convert_float_to_duration(value)
484484
var_ast = to_ast(self, var)
485485
if isinstance(var_ast, ast.IndexExpression):
486486
assert isinstance(var_ast.collection, ast.Identifier)

oqpy/subroutines.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from oqpy.base import AstConvertible, OQPyExpression, make_annotations, to_ast
2929
from oqpy.classical_types import OQFunctionCall, _ClassicalVar
3030
from oqpy.quantum_types import Qubit
31-
from oqpy.timing import make_duration
31+
from oqpy.timing import convert_float_to_duration
3232

3333
__all__ = ["subroutine", "annotate_subroutine", "declare_extern", "declare_waveform_generator"]
3434

@@ -200,14 +200,14 @@ def call_extern(*call_args: AstConvertible, **call_kwargs: AstConvertible) -> OQ
200200
raise TypeError(f"{name}() got multiple values for argument '{k}'.")
201201

202202
if type(arg_types[k_idx]) == ast.DurationType:
203-
new_args[k_idx] = make_duration(call_kwargs[k])
203+
new_args[k_idx] = convert_float_to_duration(call_kwargs[k])
204204
else:
205205
new_args[k_idx] = call_kwargs[k]
206206

207207
# Casting floats into durations for the non-keyword arguments
208208
for i, a in enumerate(call_args):
209209
if type(arg_types[i]) == ast.DurationType:
210-
new_args[i] = make_duration(a)
210+
new_args[i] = convert_float_to_duration(a)
211211
return OQFunctionCall(name, new_args, return_type, extern_decl=extern_decl)
212212

213213
return call_extern

oqpy/timing.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import contextlib
2121
from typing import TYPE_CHECKING, Iterator, cast
22+
import warnings
2223

2324
from openpulse import ast
2425

@@ -29,21 +30,30 @@
2930
from oqpy.program import Program
3031

3132

32-
__all__ = ["Box", "make_duration"]
33+
__all__ = ["Box", "convert_float_to_duration", "convert_float_to_duration", "make_duration"]
3334

3435

3536
@contextlib.contextmanager
3637
def Box(program: Program, duration: AstConvertible | None = None) -> Iterator[None]:
3738
"""Creates a section of the program with a specified duration."""
3839
if duration is not None:
39-
duration = make_duration(duration)
40+
duration = convert_float_to_duration(duration)
4041
program._push()
4142
yield
4243
state = program._pop()
4344
program._add_statement(ast.Box(optional_ast(program, duration), state.body))
4445

4546

4647
def make_duration(time: AstConvertible) -> HasToAst:
48+
warnings.warn(
49+
"make_duration name is deprecated in favor of convert_float_to_duration",
50+
DeprecationWarning,
51+
stacklevel=2,
52+
)
53+
return convert_duration_to_float(time)
54+
55+
56+
def convert_float_to_duration(time: AstConvertible) -> HasToAst:
4757
"""Make value into an expression representing a duration."""
4858
if isinstance(time, (float, int)):
4959
return OQDurationLiteral(time)
@@ -62,7 +72,7 @@ def make_duration(time: AstConvertible) -> HasToAst:
6272
)
6373

6474

65-
def make_float(value: AstConvertible) -> AstConvertible:
75+
def convert_duration_to_float(value: AstConvertible) -> AstConvertible:
6676
if isinstance(value, OQPyExpression) and isinstance(value.type, ast.DurationType):
6777
value = value / OQDurationLiteral(1)
6878
return value

tests/test_directives.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,8 @@ def test_binary_expressions():
402402
prog.set(d, d / 5)
403403
prog.set(d, d + 5e-9)
404404
prog.set(d, 5e-9 - d)
405-
prog.set(d, d + make_duration(10e-9))
406-
prog.set(f, d / make_duration(1))
405+
prog.set(d, d + convert_float_to_duration(10e-9))
406+
prog.set(f, d / convert_float_to_duration(1))
407407

408408
expected = textwrap.dedent(
409409
"""
@@ -840,7 +840,7 @@ def test_box_and_timings():
840840

841841
with pytest.raises(TypeError):
842842
f = FloatVar(200e-9, "f", needs_declaration=False)
843-
make_duration(f.to_ast(prog))
843+
convert_float_to_duration(f.to_ast(prog))
844844

845845
expected = textwrap.dedent(
846846
"""
@@ -1567,7 +1567,7 @@ def f(prog: Program, x: IntVar) -> IntVar:
15671567
prog.gate(q1, "x")
15681568
with oqpy.Else(prog):
15691569
prog.annotate(("annotation-in-else"))
1570-
prog.delay(make_duration(1e-8), q1)
1570+
prog.delay(convert_float_to_duration(1e-8), q1)
15711571
prog.annotate("annotation-after-if")
15721572

15731573
prog.annotate("annotation-no-else-before-if")
@@ -1717,8 +1717,8 @@ def test_duration_literal_arithmetic():
17171717
# Test that duration literals can be used as a part of expression.
17181718
port = oqpy.PortVar("myport")
17191719
frame = oqpy.FrameVar(port, 1e9, name="myframe")
1720-
delay_time = oqpy.make_duration(50e-9) # 50 ns
1721-
one_second = oqpy.make_duration(1) # 1 second
1720+
delay_time = oqpy.convert_float_to_duration(50e-9) # 50 ns
1721+
one_second = oqpy.convert_float_to_duration(1) # 1 second
17221722
delay_repetition = 10
17231723

17241724
program = oqpy.Program()
@@ -1744,24 +1744,24 @@ def test_duration_literal_arithmetic():
17441744

17451745

17461746
def test_make_duration():
1747-
assert expr_matches(make_duration(1e-3), OQDurationLiteral(1e-3))
1748-
assert expr_matches(make_duration(OQDurationLiteral(1e-4)), OQDurationLiteral(1e-4))
1747+
assert expr_matches(convert_float_to_duration(1e-3), OQDurationLiteral(1e-3))
1748+
assert expr_matches(convert_float_to_duration(OQDurationLiteral(1e-4)), OQDurationLiteral(1e-4))
17491749

17501750
class MyExprConvertible:
17511751
def _to_oqpy_expression(self):
17521752
return OQDurationLiteral(1e-5)
17531753

1754-
assert expr_matches(make_duration(MyExprConvertible()), OQDurationLiteral(1e-5))
1754+
assert expr_matches(convert_float_to_duration(MyExprConvertible()), OQDurationLiteral(1e-5))
17551755

17561756
class MyToAst:
17571757
def to_ast(self):
17581758
return OQDurationLiteral(1e-6)
17591759

17601760
obj = MyToAst()
1761-
assert make_duration(obj) is obj
1761+
assert convert_float_to_duration(obj) is obj
17621762

17631763
with pytest.raises(TypeError):
1764-
make_duration("asdf")
1764+
convert_float_to_duration("asdf")
17651765

17661766

17671767
def test_autoencal():

0 commit comments

Comments
 (0)