Skip to content

Commit ba4e8b4

Browse files
authored
Implement doctests in CI (#211)
* Fix doctests * Add doctests to CI
1 parent 6544de8 commit ba4e8b4

File tree

5 files changed

+93
-25
lines changed

5 files changed

+93
-25
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ jobs:
5858
- name: Test package
5959
run: python -m pytest -ra --cov=vector tests/
6060

61+
- name: Run doctests
62+
run: xdoctest ./src/vector/
63+
6164
- name: Upload coverage report
6265
uses: codecov/[email protected]
6366

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"test": [
1212
"pytest>=6",
1313
"pytest-cov>=3.0.0",
14+
"xdoctest>=1.0.0",
1415
],
1516
"test_extras": [
1617
"uncompyle6",

src/vector/backends/awkward.py

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ def from_fields(cls, array: ak.Array) -> "AzimuthalAwkward":
108108
the fields in ``array``.
109109
110110
Examples:
111+
>>> import vector
111112
>>> import awkward as ak
112113
>>> a = ak.Array([{"x": [1, 2]}, {"y": [1]}])
113114
>>> az = vector.backends.awkward.AzimuthalAwkward.from_fields(a)
@@ -134,6 +135,7 @@ def from_momentum_fields(cls, array: ak.Array) -> "AzimuthalAwkward":
134135
the fields in ``array``, allowing momentum synonyms.
135136
136137
Examples:
138+
>>> import vector
137139
>>> import awkward as ak
138140
>>> a = ak.Array([{"px": [1, 2]}, {"py": [1]}])
139141
>>> az = vector.backends.awkward.AzimuthalAwkward.from_momentum_fields(a)
@@ -181,6 +183,7 @@ def from_fields(cls, array: ak.Array) -> "LongitudinalAwkward":
181183
the fields in ``array``.
182184
183185
Examples:
186+
>>> import vector
184187
>>> import awkward as ak
185188
>>> a = ak.Array([{"theta": [1, 0]}])
186189
>>> l = vector.backends.awkward.LongitudinalAwkward.from_fields(a)
@@ -209,6 +212,7 @@ def from_momentum_fields(cls, array: ak.Array) -> "LongitudinalAwkward":
209212
the fields in ``array``, allowing momentum synonyms.
210213
211214
Examples:
215+
>>> import vector
212216
>>> import awkward as ak
213217
>>> a = ak.Array([{"theta": [1, 0]}])
214218
>>> l = vector.backends.awkward.LongitudinalAwkward.from_momentum_fields(a)
@@ -250,6 +254,7 @@ def from_fields(cls, array: ak.Array) -> "TemporalAwkward":
250254
the fields in ``array``.
251255
252256
Examples:
257+
>>> import vector
253258
>>> import awkward as ak
254259
>>> a = ak.Array([{"tau": [1, 0]}])
255260
>>> t = vector.backends.awkward.TemporalAwkward.from_fields(a)
@@ -275,6 +280,7 @@ def from_momentum_fields(cls, array: ak.Array) -> "TemporalAwkward":
275280
the fields in ``array``, allowing momentum synonyms.
276281
277282
Examples:
283+
>>> import vector
278284
>>> import awkward as ak
279285
>>> a = ak.Array([{"mass": [1, 0]}])
280286
>>> t = vector.backends.awkward.TemporalAwkward.from_momentum_fields(a)
@@ -310,6 +316,8 @@ class AzimuthalAwkwardXY(AzimuthalAwkward, AzimuthalXY):
310316
Class for the ``x`` and ``y`` (azimuthal) coordinates of Awkward backend.
311317
312318
Examples:
319+
>>> import vector
320+
>>> import awkward as ak
313321
>>> a = ak.Array([{"x": [1, 2]}, {"y": [1]}])
314322
>>> az = vector.backends.awkward.AzimuthalAwkwardXY(a["x"], a["y"])
315323
>>> az.elements
@@ -327,6 +335,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord, ArrayOrRecord]:
327335
Azimuthal coordinates (``x`` and ``y``) as a tuple.
328336
329337
Examples:
338+
>>> import vector
330339
>>> az = vector.backends.awkward.AzimuthalAwkwardXY([1, 2, 3], [1, 2])
331340
>>> az.elements
332341
([1, 2, 3], [1, 2])
@@ -339,6 +348,8 @@ class AzimuthalAwkwardRhoPhi(AzimuthalAwkward, AzimuthalRhoPhi):
339348
Class for the ``rho`` and ``phi`` (azimuthal) coordinates of Awkward backend.
340349
341350
Examples:
351+
>>> import vector
352+
>>> import awkward as ak
342353
>>> a = ak.Array([{"rho": [1, 2]}, {"phi": [1]}])
343354
>>> az = vector.backends.awkward.AzimuthalAwkwardRhoPhi(a["rho"], a["phi"])
344355
>>> az.elements
@@ -357,6 +368,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord, ArrayOrRecord]:
357368
Azimuthal coordinates (``rho`` and ``phi``) as a tuple.
358369
359370
Examples:
371+
>>> import vector
360372
>>> az = vector.backends.awkward.AzimuthalAwkwardRhoPhi([1, 2, 3], [1, 2])
361373
>>> az.elements
362374
([1, 2, 3], [1, 2])
@@ -369,6 +381,8 @@ class LongitudinalAwkwardZ(LongitudinalAwkward, LongitudinalZ):
369381
Class for the ``z`` (longitudinal) coordinate of Awkward backend.
370382
371383
Examples:
384+
>>> import vector
385+
>>> import awkward as ak
372386
>>> a = ak.Array([{"z": [1, 2]}])
373387
>>> l = vector.backends.awkward.LongitudinalAwkwardZ(a["z"])
374388
>>> l.elements
@@ -386,6 +400,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord]:
386400
Longitudinal coordinates (``z``) as a tuple.
387401
388402
Examples:
403+
>>> import vector
389404
>>> l = vector.backends.awkward.LongitudinalAwkwardZ(5)
390405
>>> l.elements
391406
(5,)
@@ -398,6 +413,8 @@ class LongitudinalAwkwardTheta(LongitudinalAwkward, LongitudinalTheta):
398413
Class for the ``theta`` (longitudinal) coordinate of Awkward backend.
399414
400415
Examples:
416+
>>> import vector
417+
>>> import awkward as ak
401418
>>> a = ak.Array([{"theta": [1, 2]}])
402419
>>> l = vector.backends.awkward.LongitudinalAwkwardTheta(a["theta"])
403420
>>> l.elements
@@ -415,6 +432,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord]:
415432
Longitudinal coordinates (``theta``) as a tuple.
416433
417434
Examples:
435+
>>> import vector
418436
>>> l = vector.backends.awkward.LongitudinalAwkwardTheta(5)
419437
>>> l.elements
420438
(5,)
@@ -427,6 +445,8 @@ class LongitudinalAwkwardEta(LongitudinalAwkward, LongitudinalEta):
427445
Class for the ``eta`` (longitudinal) coordinate of Awkward backend.
428446
429447
Examples:
448+
>>> import vector
449+
>>> import awkward as ak
430450
>>> a = ak.Array([{"eta": [1, 2]}])
431451
>>> l = vector.backends.awkward.LongitudinalAwkwardEta(a["eta"])
432452
>>> l.elements
@@ -444,6 +464,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord]:
444464
Longitudinal coordinates (``eta``) as a tuple.
445465
446466
Examples:
467+
>>> import vector
447468
>>> l = vector.backends.awkward.LongitudinalAwkwardEta(5)
448469
>>> l.elements
449470
(5,)
@@ -456,6 +477,8 @@ class TemporalAwkwardT(TemporalAwkward, TemporalT):
456477
Class for the ``t`` (temporal) coordinate of Awkward backend.
457478
458479
Examples:
480+
>>> import vector
481+
>>> import awkward as ak
459482
>>> a = ak.Array([{"t": [1, 2]}])
460483
>>> t = vector.backends.awkward.TemporalAwkwardT(a["t"])
461484
>>> t.elements
@@ -473,6 +496,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord]:
473496
Temporal coordinates (``t``) as a tuple.
474497
475498
Examples:
499+
>>> import vector
476500
>>> t = vector.backends.awkward.TemporalAwkwardT(5)
477501
>>> t.elements
478502
(5,)
@@ -485,6 +509,8 @@ class TemporalAwkwardTau(TemporalAwkward, TemporalTau):
485509
Class for the ``tau`` (temporal) coordinate of Awkward backend.
486510
487511
Examples:
512+
>>> import vector
513+
>>> import awkward as ak
488514
>>> a = ak.Array([{"tau": [1, 2]}])
489515
>>> t = vector.backends.awkward.TemporalAwkwardTau(a["tau"])
490516
>>> t.elements
@@ -502,6 +528,7 @@ def elements(self) -> typing.Tuple[ArrayOrRecord]:
502528
Temporal coordinates (``tau``) as a tuple.
503529
504530
Examples:
531+
>>> import vector
505532
>>> t = vector.backends.awkward.TemporalAwkwardTau(5)
506533
>>> t.elements
507534
(5,)
@@ -873,11 +900,10 @@ def azimuthal(self) -> AzimuthalAwkward:
873900
to access the coordinates.
874901
875902
Examples:
903+
>>> import vector
876904
>>> a = vector.Array(
877905
... [{"x": 1, "y": 1.1}, {"x": 2, "y": 2.2}],
878906
... )
879-
>>> a.azimuthal
880-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x00000282311F3680>
881907
>>> a.azimuthal.elements
882908
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
883909
"""
@@ -902,11 +928,10 @@ def azimuthal(self) -> AzimuthalAwkward:
902928
to access the coordinates.
903929
904930
Examples:
931+
>>> import vector
905932
>>> a = vector.Array(
906933
... [{"px": 1, "py": 1.1}, {"px": 2, "py": 2.2}],
907934
... )
908-
>>> a.azimuthal
909-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x00000282311FBEC0>
910935
>>> a.azimuthal.elements
911936
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
912937
"""
@@ -931,11 +956,10 @@ def azimuthal(self) -> AzimuthalAwkward:
931956
to access the coordinates.
932957
933958
Examples:
959+
>>> import vector
934960
>>> a = vector.Array(
935961
... [{"x": 1, "y": 1.1, "z": 0.1}, {"x": 2, "y": 2.2, "z": 0.2}],
936962
... )
937-
>>> a.azimuthal
938-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x0000028231220580>
939963
>>> a.azimuthal.elements
940964
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
941965
"""
@@ -950,11 +974,10 @@ def longitudinal(self) -> LongitudinalAwkward:
950974
to access the coordinates.
951975
952976
Examples:
977+
>>> import vector
953978
>>> a = vector.Array(
954979
... [{"x": 1, "y": 1.1, "z": 0.1}, {"x": 2, "y": 2.2, "z": 0.2}],
955980
... )
956-
>>> a.longitudinal
957-
<vector.backends.awkward.LongitudinalAwkwardZ object at 0x0000028231215A80>
958981
>>> a.longitudinal.elements
959982
(<Array [0.1, 0.2] type='2 * float64'>,)
960983
"""
@@ -979,11 +1002,10 @@ def azimuthal(self) -> AzimuthalAwkward:
9791002
to access the coordinates.
9801003
9811004
Examples:
1005+
>>> import vector
9821006
>>> a = vector.Array(
9831007
... [{"px": 1, "py": 1.1, "z": 0.1}, {"px": 2, "py": 2.2, "z": 0.2}],
9841008
... )
985-
>>> a.azimuthal
986-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x0000028231220580>
9871009
>>> a.azimuthal.elements
9881010
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
9891011
"""
@@ -998,11 +1020,10 @@ def longitudinal(self) -> LongitudinalAwkward:
9981020
to access the coordinates.
9991021
10001022
Examples:
1023+
>>> import vector
10011024
>>> a = vector.Array(
10021025
... [{"px": 1, "py": 1.1, "z": 0.1}, {"px": 2, "py": 2.2, "z": 0.2}],
10031026
... )
1004-
>>> a.longitudinal
1005-
<vector.backends.awkward.LongitudinalAwkwardZ object at 0x0000028231215A80>
10061027
>>> a.longitudinal.elements
10071028
(<Array [0.1, 0.2] type='2 * float64'>,)
10081029
"""
@@ -1027,11 +1048,10 @@ def azimuthal(self) -> AzimuthalAwkward:
10271048
to access the coordinates.
10281049
10291050
Examples:
1051+
>>> import vector
10301052
>>> a = vector.Array(
10311053
... [{"x": 1, "y": 1.1, "z": 0.1, "tau": 1}, {"x": 2, "y": 2.2, "z": 0.2, "tau": 3}],
10321054
... )
1033-
>>> a.azimuthal
1034-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x000001992A41BB40>
10351055
>>> a.azimuthal.elements
10361056
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
10371057
"""
@@ -1046,11 +1066,10 @@ def longitudinal(self) -> LongitudinalAwkward:
10461066
to access the coordinates.
10471067
10481068
Examples:
1069+
>>> import vector
10491070
>>> a = vector.Array(
10501071
... [{"x": 1, "y": 1.1, "z": 0.1, "tau": 1}, {"x": 2, "y": 2.2, "z": 0.2, "tau": 3}],
10511072
... )
1052-
>>> a.longitudinal
1053-
<vector.backends.awkward.LongitudinalAwkwardZ object at 0x000001992A40A380>
10541073
>>> a.longitudinal.elements
10551074
(<Array [0.1, 0.2] type='2 * float64'>,)
10561075
"""
@@ -1065,11 +1084,10 @@ def temporal(self) -> TemporalAwkward:
10651084
to access the coordinates.
10661085
10671086
Examples:
1087+
>>> import vector
10681088
>>> a = vector.Array(
10691089
... [{"x": 1, "y": 1.1, "z": 0.1, "tau": 1}, {"x": 2, "y": 2.2, "z": 0.2, "tau": 3}],
10701090
... )
1071-
>>> a.temporal
1072-
<vector.backends.awkward.TemporalAwkwardTau object at 0x000001992A40AC00>
10731091
>>> a.temporal.elements
10741092
(<Array [1, 3] type='2 * int64'>,)
10751093
"""
@@ -1094,11 +1112,10 @@ def azimuthal(self) -> AzimuthalAwkward:
10941112
to access the coordinates.
10951113
10961114
Examples:
1115+
>>> import vector
10971116
>>> a = vector.Array(
10981117
... [{"px": 1, "py": 1.1, "z": 0.1, "m": 1}, {"px": 2, "py": 2.2, "z": 0.2, "m": 3}],
10991118
... )
1100-
>>> a.azimuthal
1101-
<vector.backends.awkward.AzimuthalAwkwardXY object at 0x0000028231220580>
11021119
>>> a.azimuthal.elements
11031120
(<Array [1, 2] type='2 * int64'>, <Array [1.1, 2.2] type='2 * float64'>)
11041121
"""
@@ -1113,11 +1130,10 @@ def longitudinal(self) -> LongitudinalAwkward:
11131130
to access the coordinates.
11141131
11151132
Examples:
1133+
>>> import vector
11161134
>>> a = vector.Array(
11171135
... [{"px": 1, "py": 1.1, "z": 0.1, "m": 1}, {"px": 2, "py": 2.2, "z": 0.2, "m": 3}],
11181136
... )
1119-
>>> a.longitudinal
1120-
<vector.backends.awkward.LongitudinalAwkwardZ object at 0x0000028231215A80>
11211137
>>> a.longitudinal.elements
11221138
(<Array [0.1, 0.2] type='2 * float64'>,)
11231139
"""
@@ -1131,11 +1147,10 @@ def temporal(self) -> TemporalAwkward:
11311147
Use the ``elements`` property of the created object
11321148
to access the coordinates.
11331149
Examples:
1150+
>>> import vector
11341151
>>> a = vector.Array(
11351152
... [{"px": 1, "py": 1.1, "z": 0.1, "m": 1}, {"px": 2, "py": 2.2, "z": 0.2, "m": 3}],
11361153
... )
1137-
>>> a.temporal
1138-
<vector.backends.awkward.TemporalAwkwardTau object at 0x000001992A40AC00>
11391154
>>> a.temporal.elements
11401155
(<Array [1, 3] type='2 * int64'>,)
11411156
"""

0 commit comments

Comments
 (0)