OpenCyphal / nunavut

Generate code from DSDL using PyDSDL and Jinja2
https://nunavut.readthedocs.io/
Other
39 stars 24 forks source link

Add field initializing constructor, fix explicit, fix deserialization… #320

Closed skeetsaz closed 1 year ago

skeetsaz commented 1 year ago

… bug

When you use "cetl++14-17" or "c++17-pmr" we code-gen message classes with constructors that take an allocator. Since the class has a user-defined constructor this means it can no longer use aggregate initialization (https://en.cppreference.com/w/cpp/language/aggregate_initialization) This is inconvenient so I'm adding a constructor with args for each field, in order. This also makes it possible to declare a const message instance.

Some single arg constructors weren't marked explicit, thus becoming user-defined conversion functions, which introduces unexpected bugs. I've fixed all the constructors so any single-arg ones are declared explicit.

Fixed a deserialization bug where the allocator was not getting passed to a temporary.

sonarcloud[bot] commented 1 year ago

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

92.2% 92.2% Coverage
0.0% 0.0% Duplication

skeetsaz commented 1 year ago

The docs and doctests pass locally. How do I override the check failure?

root@8f1c1a3e30e3:/workspace# tox -e docs
.pkg: _optional_hooks> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_editable> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_editable> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
docs: install_package> python -I -m pip install --force-reinstall --no-deps /workspace/.tox/.tmp/package/341/nunavut-2.2.0-0.editable-py3-none-any.whl
docs: commands[0]> sphinx-build -W -b html /workspace /workspace/.tox/docs/tmp
Running Sphinx v6.2.1
loading intersphinx inventory from https://docs.python.org/3/objects.inv...
loading intersphinx inventory from http://jinja.pocoo.org/docs/2.10/objects.inv...
intersphinx inventory has moved: http://jinja.pocoo.org/docs/2.10/objects.inv -> https://jinja.palletsprojects.com/en/2.10.x/objects.inv
building [mo]: targets for 0 po files that are out of date
writing output... 
building [html]: targets for 11 source files that are out of date
updating environment: [new config] 11 added, 0 changed, 0 removed
reading sources... [100%] index                                                                                                                                                                
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index                                                                                                                                                                 
generating indices... genindex py-modindex done
highlighting module code... [100%] nunavut.lang.py                                                                                                                                             
writing additional pages... search done
copying images... [100%] docs/static/images/nunavut_pipeline.svg                                                                                                                               
copying static files... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded.

The HTML pages are in .tox/docs/tmp.
.pkg: _exit> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
  docs: OK (11.78=setup[2.48]+cmd[9.29] seconds)
  congratulations :) (12.05 seconds)
root@8f1c1a3e30e3:/workspace# tox -e doctest
doctest: install_deps> python -I -m pip install coverage pytest-timeout 'pytest<7.0.0,>=5.4.3' 'Sybil<4.0.0,>=3.0.0' types-PyYAML
.pkg: _optional_hooks> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_editable> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_editable> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
doctest: install_package_deps> python -I -m pip install importlib-resources 'pydsdl~=1.18' pyyaml
doctest: install_package> python -I -m pip install --force-reinstall --no-deps /workspace/.tox/.tmp/package/342/nunavut-2.2.0-0.editable-py3-none-any.whl
doctest: commands[0]> coverage run -m pytest --basetemp=/workspace/.tox/doctest/tmp -p no:cacheprovider --rootdir=/workspace /workspace/src
====================================================================================== test session starts ======================================================================================
platform linux -- Python 3.10.6, pytest-6.2.5, py-1.11.0, pluggy-1.3.0
rootdir: /workspace, configfile: tox.ini
plugins: timeout-2.2.0
collected 322 items                                                                                                                                                                             

src/nunavut/__init__.py::line:24,column:1 PASSED                                                                                                                                          [  0%]
src/nunavut/_dependencies.py::line:37,column:1 PASSED                                                                                                                                     [  0%]
src/nunavut/_utilities.py::line:36,column:1 PASSED                                                                                                                                        [  0%]
src/nunavut/_utilities.py::line:41,column:1 PASSED                                                                                                                                        [  1%]
src/nunavut/_utilities.py::line:53,column:1 PASSED                                                                                                                                        [  1%]
src/nunavut/_utilities.py::line:65,column:1 PASSED                                                                                                                                        [  1%]
src/nunavut/_utilities.py::line:69,column:1 PASSED                                                                                                                                        [  2%]
src/nunavut/_utilities.py::line:125,column:1 PASSED                                                                                                                                       [  2%]
src/nunavut/_utilities.py::line:126,column:1 PASSED                                                                                                                                       [  2%]
src/nunavut/_utilities.py::line:127,column:1 PASSED                                                                                                                                       [  3%]
src/nunavut/_utilities.py::line:129,column:1 PASSED                                                                                                                                       [  3%]
src/nunavut/_utilities.py::line:162,column:1 PASSED                                                                                                                                       [  3%]
src/nunavut/_utilities.py::line:167,column:1 PASSED                                                                                                                                       [  4%]
src/nunavut/jinja/__init__.py::line:439,column:1 PASSED                                                                                                                                   [  4%]
src/nunavut/jinja/__init__.py::line:444,column:1 PASSED                                                                                                                                   [  4%]
src/nunavut/jinja/__init__.py::line:455,column:1 PASSED                                                                                                                                   [  4%]
src/nunavut/jinja/__init__.py::line:460,column:1 PASSED                                                                                                                                   [  5%]
src/nunavut/jinja/__init__.py::line:472,column:1 PASSED                                                                                                                                   [  5%]
src/nunavut/jinja/__init__.py::line:490,column:1 PASSED                                                                                                                                   [  5%]
src/nunavut/jinja/__init__.py::line:506,column:1 PASSED                                                                                                                                   [  6%]
src/nunavut/jinja/__init__.py::line:521,column:1 PASSED                                                                                                                                   [  6%]
src/nunavut/jinja/__init__.py::line:544,column:1 PASSED                                                                                                                                   [  6%]
src/nunavut/jinja/__init__.py::line:558,column:1 PASSED                                                                                                                                   [  7%]
src/nunavut/jinja/__init__.py::line:590,column:1 PASSED                                                                                                                                   [  7%]
src/nunavut/jinja/__init__.py::line:616,column:1 PASSED                                                                                                                                   [  7%]
src/nunavut/jinja/__init__.py::line:642,column:1 PASSED                                                                                                                                   [  8%]
src/nunavut/jinja/__init__.py::line:725,column:1 PASSED                                                                                                                                   [  8%]
src/nunavut/jinja/environment.py::line:33,column:1 PASSED                                                                                                                                 [  8%]
src/nunavut/jinja/environment.py::line:37,column:1 PASSED                                                                                                                                 [  9%]
src/nunavut/jinja/environment.py::line:57,column:1 PASSED                                                                                                                                 [  9%]
src/nunavut/jinja/environment.py::line:64,column:1 PASSED                                                                                                                                 [  9%]
src/nunavut/jinja/environment.py::line:121,column:1 PASSED                                                                                                                                [  9%]
src/nunavut/jinja/environment.py::line:130,column:1 PASSED                                                                                                                                [ 10%]
src/nunavut/jinja/environment.py::line:142,column:1 PASSED                                                                                                                                [ 10%]
src/nunavut/jinja/environment.py::line:152,column:1 PASSED                                                                                                                                [ 10%]
src/nunavut/jinja/environment.py::line:172,column:1 PASSED                                                                                                                                [ 11%]
src/nunavut/jinja/environment.py::line:394,column:1 PASSED                                                                                                                                [ 11%]
src/nunavut/jinja/extensions.py::line:19,column:1 PASSED                                                                                                                                  [ 11%]
src/nunavut/jinja/extensions.py::line:23,column:1 PASSED                                                                                                                                  [ 12%]
src/nunavut/jinja/extensions.py::line:43,column:1 PASSED                                                                                                                                  [ 12%]
src/nunavut/jinja/extensions.py::line:47,column:1 PASSED                                                                                                                                  [ 12%]
src/nunavut/jinja/extensions.py::line:104,column:1 PASSED                                                                                                                                 [ 13%]
src/nunavut/jinja/extensions.py::line:115,column:1 PASSED                                                                                                                                 [ 13%]
src/nunavut/jinja/extensions.py::line:144,column:1 PASSED                                                                                                                                 [ 13%]
src/nunavut/jinja/loaders.py::line:108,column:1 PASSED                                                                                                                                    [ 13%]
src/nunavut/jinja/loaders.py::line:149,column:1 PASSED                                                                                                                                    [ 14%]
src/nunavut/jinja/loaders.py::line:194,column:1 PASSED                                                                                                                                    [ 14%]
src/nunavut/lang/__init__.py::line:38,column:1 PASSED                                                                                                                                     [ 14%]
src/nunavut/lang/__init__.py::line:49,column:1 PASSED                                                                                                                                     [ 15%]
src/nunavut/lang/__init__.py::line:97,column:1 PASSED                                                                                                                                     [ 15%]
src/nunavut/lang/__init__.py::line:101,column:1 PASSED                                                                                                                                    [ 15%]
src/nunavut/lang/__init__.py::line:113,column:1 PASSED                                                                                                                                    [ 16%]
src/nunavut/lang/__init__.py::line:119,column:1 PASSED                                                                                                                                    [ 16%]
src/nunavut/lang/__init__.py::line:138,column:1 PASSED                                                                                                                                    [ 16%]
src/nunavut/lang/__init__.py::line:173,column:1 PASSED                                                                                                                                    [ 17%]
src/nunavut/lang/__init__.py::line:177,column:1 PASSED                                                                                                                                    [ 17%]
src/nunavut/lang/__init__.py::line:193,column:1 PASSED                                                                                                                                    [ 17%]
src/nunavut/lang/__init__.py::line:197,column:1 PASSED                                                                                                                                    [ 18%]
src/nunavut/lang/__init__.py::line:210,column:1 PASSED                                                                                                                                    [ 18%]
src/nunavut/lang/__init__.py::line:237,column:1 PASSED                                                                                                                                    [ 18%]
src/nunavut/lang/__init__.py::line:253,column:1 PASSED                                                                                                                                    [ 18%]
src/nunavut/lang/__init__.py::line:275,column:1 PASSED                                                                                                                                    [ 19%]
src/nunavut/lang/__init__.py::line:285,column:1 PASSED                                                                                                                                    [ 19%]
src/nunavut/lang/__init__.py::line:291,column:1 PASSED                                                                                                                                    [ 19%]
src/nunavut/lang/__init__.py::line:451,column:1 PASSED                                                                                                                                    [ 20%]
src/nunavut/lang/_common.py::line:65,column:1 PASSED                                                                                                                                      [ 20%]
src/nunavut/lang/_common.py::line:89,column:1 PASSED                                                                                                                                      [ 20%]
src/nunavut/lang/_common.py::line:174,column:1 PASSED                                                                                                                                     [ 21%]
src/nunavut/lang/_common.py::line:198,column:1 PASSED                                                                                                                                     [ 21%]
src/nunavut/lang/_common.py::line:219,column:1 PASSED                                                                                                                                     [ 21%]
src/nunavut/lang/_common.py::line:240,column:1 PASSED                                                                                                                                     [ 22%]
src/nunavut/lang/_common.py::line:246,column:1 PASSED                                                                                                                                     [ 22%]
src/nunavut/lang/_common.py::line:278,column:1 PASSED                                                                                                                                     [ 22%]
src/nunavut/lang/_common.py::line:294,column:1 PASSED                                                                                                                                     [ 22%]
src/nunavut/lang/_common.py::line:500,column:1 PASSED                                                                                                                                     [ 23%]
src/nunavut/lang/_common.py::line:516,column:1 PASSED                                                                                                                                     [ 23%]
src/nunavut/lang/_common.py::line:537,column:1 PASSED                                                                                                                                     [ 23%]
src/nunavut/lang/_common.py::line:545,column:1 PASSED                                                                                                                                     [ 24%]
src/nunavut/lang/_common.py::line:552,column:1 PASSED                                                                                                                                     [ 24%]
src/nunavut/lang/_common.py::line:562,column:1 PASSED                                                                                                                                     [ 24%]
src/nunavut/lang/_common.py::line:573,column:1 PASSED                                                                                                                                     [ 25%]
src/nunavut/lang/_common.py::line:585,column:1 PASSED                                                                                                                                     [ 25%]
src/nunavut/lang/_common.py::line:604,column:1 PASSED                                                                                                                                     [ 25%]
src/nunavut/lang/_common.py::line:622,column:1 PASSED                                                                                                                                     [ 26%]
src/nunavut/lang/_common.py::line:630,column:1 PASSED                                                                                                                                     [ 26%]
src/nunavut/lang/_config.py::line:60,column:1 PASSED                                                                                                                                      [ 26%]
src/nunavut/lang/_config.py::line:74,column:1 PASSED                                                                                                                                      [ 27%]
src/nunavut/lang/_config.py::line:93,column:1 PASSED                                                                                                                                      [ 27%]
src/nunavut/lang/_config.py::line:105,column:1 PASSED                                                                                                                                     [ 27%]
src/nunavut/lang/_config.py::line:127,column:1 PASSED                                                                                                                                     [ 27%]
src/nunavut/lang/_config.py::line:130,column:1 PASSED                                                                                                                                     [ 28%]
src/nunavut/lang/_config.py::line:162,column:1 PASSED                                                                                                                                     [ 28%]
src/nunavut/lang/_config.py::line:192,column:1 PASSED                                                                                                                                     [ 28%]
src/nunavut/lang/_config.py::line:279,column:1 PASSED                                                                                                                                     [ 29%]
src/nunavut/lang/_config.py::line:320,column:1 PASSED                                                                                                                                     [ 29%]
src/nunavut/lang/_config.py::line:324,column:1 PASSED                                                                                                                                     [ 29%]
src/nunavut/lang/_config.py::line:387,column:1 PASSED                                                                                                                                     [ 30%]
src/nunavut/lang/_config.py::line:391,column:1 PASSED                                                                                                                                     [ 30%]
src/nunavut/lang/_config.py::line:433,column:1 PASSED                                                                                                                                     [ 30%]
src/nunavut/lang/_config.py::line:440,column:1 PASSED                                                                                                                                     [ 31%]
src/nunavut/lang/_config.py::line:500,column:1 PASSED                                                                                                                                     [ 31%]
src/nunavut/lang/_config.py::line:507,column:1 PASSED                                                                                                                                     [ 31%]
src/nunavut/lang/_config.py::line:513,column:1 PASSED                                                                                                                                     [ 31%]
src/nunavut/lang/_config.py::line:570,column:1 PASSED                                                                                                                                     [ 32%]
src/nunavut/lang/_config.py::line:577,column:1 PASSED                                                                                                                                     [ 32%]
src/nunavut/lang/_config.py::line:583,column:1 PASSED                                                                                                                                     [ 32%]
src/nunavut/lang/_language.py::line:47,column:1 PASSED                                                                                                                                    [ 33%]
src/nunavut/lang/_language.py::line:165,column:1 PASSED                                                                                                                                   [ 33%]
src/nunavut/lang/_language.py::line:234,column:1 PASSED                                                                                                                                   [ 33%]
src/nunavut/lang/_language.py::line:339,column:1 PASSED                                                                                                                                   [ 34%]
src/nunavut/lang/_language.py::line:391,column:1 PASSED                                                                                                                                   [ 34%]
src/nunavut/lang/_language.py::line:424,column:1 PASSED                                                                                                                                   [ 34%]
src/nunavut/lang/_language.py::line:438,column:1 PASSED                                                                                                                                   [ 35%]
src/nunavut/lang/_language.py::line:521,column:1 PASSED                                                                                                                                   [ 35%]
src/nunavut/lang/_language.py::line:542,column:1 PASSED                                                                                                                                   [ 35%]
src/nunavut/lang/_language.py::line:545,column:1 PASSED                                                                                                                                   [ 36%]
src/nunavut/lang/_language.py::line:561,column:1 PASSED                                                                                                                                   [ 36%]
src/nunavut/lang/_language.py::line:564,column:1 PASSED                                                                                                                                   [ 36%]
src/nunavut/lang/_language.py::line:609,column:1 PASSED                                                                                                                                   [ 36%]
src/nunavut/lang/_language.py::line:647,column:1 PASSED                                                                                                                                   [ 37%]
src/nunavut/lang/_language.py::line:651,column:1 PASSED                                                                                                                                   [ 37%]
src/nunavut/lang/_language.py::line:668,column:1 PASSED                                                                                                                                   [ 37%]
src/nunavut/lang/c/__init__.py::line:90,column:1 PASSED                                                                                                                                   [ 38%]
src/nunavut/lang/c/__init__.py::line:95,column:1 PASSED                                                                                                                                   [ 38%]
src/nunavut/lang/c/__init__.py::line:107,column:1 PASSED                                                                                                                                  [ 38%]
src/nunavut/lang/c/__init__.py::line:112,column:1 PASSED                                                                                                                                  [ 39%]
src/nunavut/lang/c/__init__.py::line:124,column:1 PASSED                                                                                                                                  [ 39%]
src/nunavut/lang/c/__init__.py::line:129,column:1 PASSED                                                                                                                                  [ 39%]
src/nunavut/lang/c/__init__.py::line:140,column:1 PASSED                                                                                                                                  [ 40%]
src/nunavut/lang/c/__init__.py::line:144,column:1 PASSED                                                                                                                                  [ 40%]
src/nunavut/lang/c/__init__.py::line:155,column:1 PASSED                                                                                                                                  [ 40%]
src/nunavut/lang/c/__init__.py::line:175,column:1 PASSED                                                                                                                                  [ 40%]
src/nunavut/lang/c/__init__.py::line:181,column:1 PASSED                                                                                                                                  [ 41%]
src/nunavut/lang/c/__init__.py::line:190,column:1 PASSED                                                                                                                                  [ 41%]
src/nunavut/lang/c/__init__.py::line:198,column:1 PASSED                                                                                                                                  [ 41%]
src/nunavut/lang/c/__init__.py::line:211,column:1 PASSED                                                                                                                                  [ 42%]
src/nunavut/lang/c/__init__.py::line:217,column:1 PASSED                                                                                                                                  [ 42%]
src/nunavut/lang/c/__init__.py::line:225,column:1 PASSED                                                                                                                                  [ 42%]
src/nunavut/lang/c/__init__.py::line:231,column:1 PASSED                                                                                                                                  [ 43%]
src/nunavut/lang/c/__init__.py::line:239,column:1 PASSED                                                                                                                                  [ 43%]
src/nunavut/lang/c/__init__.py::line:335,column:1 PASSED                                                                                                                                  [ 43%]
src/nunavut/lang/c/__init__.py::line:341,column:1 PASSED                                                                                                                                  [ 44%]
src/nunavut/lang/c/__init__.py::line:350,column:1 PASSED                                                                                                                                  [ 44%]
src/nunavut/lang/c/__init__.py::line:359,column:1 PASSED                                                                                                                                  [ 44%]
src/nunavut/lang/c/__init__.py::line:368,column:1 PASSED                                                                                                                                  [ 45%]
src/nunavut/lang/c/__init__.py::line:383,column:1 PASSED                                                                                                                                  [ 45%]
src/nunavut/lang/c/__init__.py::line:434,column:1 PASSED                                                                                                                                  [ 45%]
src/nunavut/lang/c/__init__.py::line:438,column:1 PASSED                                                                                                                                  [ 45%]
src/nunavut/lang/c/__init__.py::line:446,column:1 PASSED                                                                                                                                  [ 46%]
src/nunavut/lang/c/__init__.py::line:451,column:1 PASSED                                                                                                                                  [ 46%]
src/nunavut/lang/c/__init__.py::line:460,column:1 PASSED                                                                                                                                  [ 46%]
src/nunavut/lang/c/__init__.py::line:464,column:1 PASSED                                                                                                                                  [ 47%]
src/nunavut/lang/c/__init__.py::line:473,column:1 PASSED                                                                                                                                  [ 47%]
src/nunavut/lang/c/__init__.py::line:496,column:1 PASSED                                                                                                                                  [ 47%]
src/nunavut/lang/c/__init__.py::line:500,column:1 PASSED                                                                                                                                  [ 48%]
src/nunavut/lang/c/__init__.py::line:508,column:1 PASSED                                                                                                                                  [ 48%]
src/nunavut/lang/c/__init__.py::line:535,column:1 PASSED                                                                                                                                  [ 48%]
src/nunavut/lang/c/__init__.py::line:540,column:1 PASSED                                                                                                                                  [ 49%]
src/nunavut/lang/c/__init__.py::line:549,column:1 PASSED                                                                                                                                  [ 49%]
src/nunavut/lang/c/__init__.py::line:554,column:1 PASSED                                                                                                                                  [ 49%]
src/nunavut/lang/c/__init__.py::line:562,column:1 PASSED                                                                                                                                  [ 50%]
src/nunavut/lang/c/__init__.py::line:585,column:1 PASSED                                                                                                                                  [ 50%]
src/nunavut/lang/c/__init__.py::line:595,column:1 PASSED                                                                                                                                  [ 50%]
src/nunavut/lang/c/__init__.py::line:608,column:1 PASSED                                                                                                                                  [ 50%]
src/nunavut/lang/c/__init__.py::line:614,column:1 PASSED                                                                                                                                  [ 51%]
src/nunavut/lang/c/__init__.py::line:618,column:1 PASSED                                                                                                                                  [ 51%]
src/nunavut/lang/c/__init__.py::line:642,column:1 PASSED                                                                                                                                  [ 51%]
src/nunavut/lang/c/__init__.py::line:652,column:1 PASSED                                                                                                                                  [ 52%]
src/nunavut/lang/c/__init__.py::line:664,column:1 PASSED                                                                                                                                  [ 52%]
src/nunavut/lang/c/__init__.py::line:668,column:1 PASSED                                                                                                                                  [ 52%]
src/nunavut/lang/c/__init__.py::line:674,column:1 PASSED                                                                                                                                  [ 53%]
src/nunavut/lang/c/__init__.py::line:699,column:1 PASSED                                                                                                                                  [ 53%]
src/nunavut/lang/c/__init__.py::line:708,column:1 PASSED                                                                                                                                  [ 53%]
src/nunavut/lang/c/__init__.py::line:721,column:1 PASSED                                                                                                                                  [ 54%]
src/nunavut/lang/c/__init__.py::line:729,column:1 PASSED                                                                                                                                  [ 54%]
src/nunavut/lang/c/__init__.py::line:735,column:1 PASSED                                                                                                                                  [ 54%]
src/nunavut/lang/c/__init__.py::line:743,column:1 PASSED                                                                                                                                  [ 54%]
src/nunavut/lang/c/__init__.py::line:749,column:1 PASSED                                                                                                                                  [ 55%]
src/nunavut/lang/c/__init__.py::line:757,column:1 PASSED                                                                                                                                  [ 55%]
src/nunavut/lang/c/__init__.py::line:780,column:1 PASSED                                                                                                                                  [ 55%]
src/nunavut/lang/c/__init__.py::line:790,column:1 PASSED                                                                                                                                  [ 56%]
src/nunavut/lang/c/__init__.py::line:798,column:1 PASSED                                                                                                                                  [ 56%]
src/nunavut/lang/c/__init__.py::line:805,column:1 PASSED                                                                                                                                  [ 56%]
src/nunavut/lang/c/__init__.py::line:813,column:1 PASSED                                                                                                                                  [ 57%]
src/nunavut/lang/c/__init__.py::line:827,column:1 PASSED                                                                                                                                  [ 57%]
src/nunavut/lang/c/__init__.py::line:835,column:1 PASSED                                                                                                                                  [ 57%]
src/nunavut/lang/c/__init__.py::line:907,column:1 PASSED                                                                                                                                  [ 58%]
src/nunavut/lang/c/__init__.py::line:917,column:1 PASSED                                                                                                                                  [ 58%]
src/nunavut/lang/c/__init__.py::line:931,column:1 PASSED                                                                                                                                  [ 58%]
src/nunavut/lang/c/__init__.py::line:952,column:1 PASSED                                                                                                                                  [ 59%]
src/nunavut/lang/c/__init__.py::line:957,column:1 PASSED                                                                                                                                  [ 59%]
src/nunavut/lang/c/__init__.py::line:968,column:1 PASSED                                                                                                                                  [ 59%]
src/nunavut/lang/c/__init__.py::line:992,column:1 PASSED                                                                                                                                  [ 59%]
src/nunavut/lang/c/__init__.py::line:997,column:1 PASSED                                                                                                                                  [ 60%]
src/nunavut/lang/c/__init__.py::line:1018,column:1 PASSED                                                                                                                                 [ 60%]
src/nunavut/lang/c/__init__.py::line:1074,column:1 PASSED                                                                                                                                 [ 60%]
src/nunavut/lang/c/__init__.py::line:1081,column:1 PASSED                                                                                                                                 [ 61%]
src/nunavut/lang/c/__init__.py::line:1089,column:1 PASSED                                                                                                                                 [ 61%]
src/nunavut/lang/c/support/__init__.py::line:23,column:1 PASSED                                                                                                                           [ 61%]
src/nunavut/lang/c/support/__init__.py::line:29,column:1 PASSED                                                                                                                           [ 62%]
src/nunavut/lang/c/support/__init__.py::line:36,column:1 PASSED                                                                                                                           [ 62%]
src/nunavut/lang/cpp/__init__.py::line:78,column:1 PASSED                                                                                                                                 [ 62%]
src/nunavut/lang/cpp/__init__.py::line:119,column:1 PASSED                                                                                                                                [ 63%]
src/nunavut/lang/cpp/__init__.py::line:163,column:1 PASSED                                                                                                                                [ 63%]
src/nunavut/lang/cpp/__init__.py::line:271,column:1 PASSED                                                                                                                                [ 63%]
src/nunavut/lang/cpp/__init__.py::line:281,column:1 PASSED                                                                                                                                [ 63%]
src/nunavut/lang/cpp/__init__.py::line:332,column:1 PASSED                                                                                                                                [ 64%]
src/nunavut/lang/cpp/__init__.py::line:337,column:1 PASSED                                                                                                                                [ 64%]
src/nunavut/lang/cpp/__init__.py::line:347,column:1 PASSED                                                                                                                                [ 64%]
src/nunavut/lang/cpp/__init__.py::line:361,column:1 PASSED                                                                                                                                [ 65%]
src/nunavut/lang/cpp/__init__.py::line:366,column:1 PASSED                                                                                                                                [ 65%]
src/nunavut/lang/cpp/__init__.py::line:378,column:1 PASSED                                                                                                                                [ 65%]
src/nunavut/lang/cpp/__init__.py::line:383,column:1 PASSED                                                                                                                                [ 66%]
src/nunavut/lang/cpp/__init__.py::line:395,column:1 PASSED                                                                                                                                [ 66%]
src/nunavut/lang/cpp/__init__.py::line:400,column:1 PASSED                                                                                                                                [ 66%]
src/nunavut/lang/cpp/__init__.py::line:411,column:1 PASSED                                                                                                                                [ 67%]
src/nunavut/lang/cpp/__init__.py::line:432,column:1 PASSED                                                                                                                                [ 67%]
src/nunavut/lang/cpp/__init__.py::line:436,column:1 PASSED                                                                                                                                [ 67%]
src/nunavut/lang/cpp/__init__.py::line:444,column:1 PASSED                                                                                                                                [ 68%]
src/nunavut/lang/cpp/__init__.py::line:450,column:1 PASSED                                                                                                                                [ 68%]
src/nunavut/lang/cpp/__init__.py::line:458,column:1 PASSED                                                                                                                                [ 68%]
src/nunavut/lang/cpp/__init__.py::line:464,column:1 PASSED                                                                                                                                [ 68%]
src/nunavut/lang/cpp/__init__.py::line:472,column:1 PASSED                                                                                                                                [ 69%]
src/nunavut/lang/cpp/__init__.py::line:496,column:1 PASSED                                                                                                                                [ 69%]
src/nunavut/lang/cpp/__init__.py::line:502,column:1 PASSED                                                                                                                                [ 69%]
src/nunavut/lang/cpp/__init__.py::line:516,column:1 PASSED                                                                                                                                [ 70%]
src/nunavut/lang/cpp/__init__.py::line:573,column:1 PASSED                                                                                                                                [ 70%]
src/nunavut/lang/cpp/__init__.py::line:579,column:1 PASSED                                                                                                                                [ 70%]
src/nunavut/lang/cpp/__init__.py::line:591,column:1 PASSED                                                                                                                                [ 71%]
src/nunavut/lang/cpp/__init__.py::line:627,column:1 PASSED                                                                                                                                [ 71%]
src/nunavut/lang/cpp/__init__.py::line:637,column:1 PASSED                                                                                                                                [ 71%]
src/nunavut/lang/cpp/__init__.py::line:650,column:1 PASSED                                                                                                                                [ 72%]
src/nunavut/lang/cpp/__init__.py::line:675,column:1 PASSED                                                                                                                                [ 72%]
src/nunavut/lang/cpp/__init__.py::line:685,column:1 PASSED                                                                                                                                [ 72%]
src/nunavut/lang/cpp/__init__.py::line:698,column:1 PASSED                                                                                                                                [ 72%]
src/nunavut/lang/cpp/__init__.py::line:723,column:1 PASSED                                                                                                                                [ 73%]
src/nunavut/lang/cpp/__init__.py::line:734,column:1 PASSED                                                                                                                                [ 73%]
src/nunavut/lang/cpp/__init__.py::line:747,column:1 PASSED                                                                                                                                [ 73%]
src/nunavut/lang/cpp/__init__.py::line:756,column:1 PASSED                                                                                                                                [ 74%]
src/nunavut/lang/cpp/__init__.py::line:769,column:1 PASSED                                                                                                                                [ 74%]
src/nunavut/lang/cpp/__init__.py::line:773,column:1 PASSED                                                                                                                                [ 74%]
src/nunavut/lang/cpp/__init__.py::line:789,column:1 PASSED                                                                                                                                [ 75%]
src/nunavut/lang/cpp/__init__.py::line:810,column:1 PASSED                                                                                                                                [ 75%]
src/nunavut/lang/cpp/__init__.py::line:836,column:1 PASSED                                                                                                                                [ 75%]
src/nunavut/lang/cpp/__init__.py::line:846,column:1 PASSED                                                                                                                                [ 76%]
src/nunavut/lang/cpp/__init__.py::line:854,column:1 PASSED                                                                                                                                [ 76%]
src/nunavut/lang/cpp/__init__.py::line:858,column:1 PASSED                                                                                                                                [ 76%]
src/nunavut/lang/cpp/__init__.py::line:864,column:1 PASSED                                                                                                                                [ 77%]
src/nunavut/lang/cpp/__init__.py::line:888,column:1 PASSED                                                                                                                                [ 77%]
src/nunavut/lang/cpp/__init__.py::line:900,column:1 PASSED                                                                                                                                [ 77%]
src/nunavut/lang/cpp/__init__.py::line:912,column:1 PASSED                                                                                                                                [ 77%]
src/nunavut/lang/cpp/__init__.py::line:1082,column:1 PASSED                                                                                                                               [ 78%]
src/nunavut/lang/cpp/__init__.py::line:1088,column:1 PASSED                                                                                                                               [ 78%]
src/nunavut/lang/cpp/__init__.py::line:1096,column:1 PASSED                                                                                                                               [ 78%]
src/nunavut/lang/cpp/__init__.py::line:1107,column:1 PASSED                                                                                                                               [ 79%]
src/nunavut/lang/cpp/__init__.py::line:1112,column:1 PASSED                                                                                                                               [ 79%]
src/nunavut/lang/cpp/__init__.py::line:1139,column:1 PASSED                                                                                                                               [ 79%]
src/nunavut/lang/cpp/__init__.py::line:1145,column:1 PASSED                                                                                                                               [ 80%]
src/nunavut/lang/cpp/__init__.py::line:1151,column:1 PASSED                                                                                                                               [ 80%]
src/nunavut/lang/cpp/__init__.py::line:1157,column:1 PASSED                                                                                                                               [ 80%]
src/nunavut/lang/cpp/__init__.py::line:1163,column:1 PASSED                                                                                                                               [ 81%]
src/nunavut/lang/cpp/__init__.py::line:1193,column:1 PASSED                                                                                                                               [ 81%]
src/nunavut/lang/cpp/__init__.py::line:1198,column:1 PASSED                                                                                                                               [ 81%]
src/nunavut/lang/cpp/__init__.py::line:1207,column:1 PASSED                                                                                                                               [ 81%]
src/nunavut/lang/cpp/__init__.py::line:1212,column:1 PASSED                                                                                                                               [ 82%]
src/nunavut/lang/cpp/__init__.py::line:1220,column:1 PASSED                                                                                                                               [ 82%]
src/nunavut/lang/cpp/__init__.py::line:1242,column:1 PASSED                                                                                                                               [ 82%]
src/nunavut/lang/cpp/__init__.py::line:1246,column:1 PASSED                                                                                                                               [ 83%]
src/nunavut/lang/cpp/__init__.py::line:1262,column:1 PASSED                                                                                                                               [ 83%]
src/nunavut/lang/cpp/__init__.py::line:1266,column:1 PASSED                                                                                                                               [ 83%]
src/nunavut/lang/cpp/__init__.py::line:1274,column:1 PASSED                                                                                                                               [ 84%]
src/nunavut/lang/cpp/__init__.py::line:1279,column:1 PASSED                                                                                                                               [ 84%]
src/nunavut/lang/cpp/__init__.py::line:1287,column:1 PASSED                                                                                                                               [ 84%]
src/nunavut/lang/cpp/__init__.py::line:1291,column:1 PASSED                                                                                                                               [ 85%]
src/nunavut/lang/cpp/__init__.py::line:1298,column:1 PASSED                                                                                                                               [ 85%]
src/nunavut/lang/cpp/__init__.py::line:1302,column:1 PASSED                                                                                                                               [ 85%]
src/nunavut/lang/cpp/__init__.py::line:1309,column:1 PASSED                                                                                                                               [ 86%]
src/nunavut/lang/cpp/__init__.py::line:1313,column:1 PASSED                                                                                                                               [ 86%]
src/nunavut/lang/cpp/__init__.py::line:1328,column:1 PASSED                                                                                                                               [ 86%]
src/nunavut/lang/cpp/__init__.py::line:1357,column:1 PASSED                                                                                                                               [ 86%]
src/nunavut/lang/cpp/__init__.py::line:1363,column:1 PASSED                                                                                                                               [ 87%]
src/nunavut/lang/cpp/__init__.py::line:1371,column:1 PASSED                                                                                                                               [ 87%]
src/nunavut/lang/cpp/__init__.py::line:1473,column:1 PASSED                                                                                                                               [ 87%]
src/nunavut/lang/cpp/__init__.py::line:1533,column:1 PASSED                                                                                                                               [ 88%]
src/nunavut/lang/cpp/__init__.py::line:1553,column:1 PASSED                                                                                                                               [ 88%]
src/nunavut/lang/cpp/__init__.py::line:1559,column:1 PASSED                                                                                                                               [ 88%]
src/nunavut/lang/cpp/__init__.py::line:1577,column:1 PASSED                                                                                                                               [ 89%]
src/nunavut/lang/cpp/__init__.py::line:1583,column:1 PASSED                                                                                                                               [ 89%]
src/nunavut/lang/cpp/__init__.py::line:1597,column:1 PASSED                                                                                                                               [ 89%]
src/nunavut/lang/cpp/__init__.py::line:1603,column:1 PASSED                                                                                                                               [ 90%]
src/nunavut/lang/cpp/__init__.py::line:1619,column:1 PASSED                                                                                                                               [ 90%]
src/nunavut/lang/cpp/__init__.py::line:1625,column:1 PASSED                                                                                                                               [ 90%]
src/nunavut/lang/cpp/__init__.py::line:1641,column:1 PASSED                                                                                                                               [ 90%]
src/nunavut/lang/cpp/support/__init__.py::line:23,column:1 PASSED                                                                                                                         [ 91%]
src/nunavut/lang/cpp/support/__init__.py::line:29,column:1 PASSED                                                                                                                         [ 91%]
src/nunavut/lang/cpp/support/__init__.py::line:36,column:1 PASSED                                                                                                                         [ 91%]
src/nunavut/lang/html/__init__.py::line:76,column:1 PASSED                                                                                                                                [ 92%]
src/nunavut/lang/html/__init__.py::line:81,column:1 PASSED                                                                                                                                [ 92%]
src/nunavut/lang/html/__init__.py::line:90,column:1 PASSED                                                                                                                                [ 92%]
src/nunavut/lang/html/__init__.py::line:95,column:1 PASSED                                                                                                                                [ 93%]
src/nunavut/lang/html/__init__.py::line:103,column:1 PASSED                                                                                                                               [ 93%]
src/nunavut/lang/py/__init__.py::line:82,column:1 PASSED                                                                                                                                  [ 93%]
src/nunavut/lang/py/__init__.py::line:87,column:1 PASSED                                                                                                                                  [ 94%]
src/nunavut/lang/py/__init__.py::line:96,column:1 PASSED                                                                                                                                  [ 94%]
src/nunavut/lang/py/__init__.py::line:100,column:1 PASSED                                                                                                                                 [ 94%]
src/nunavut/lang/py/__init__.py::line:108,column:1 PASSED                                                                                                                                 [ 95%]
src/nunavut/lang/py/__init__.py::line:125,column:1 PASSED                                                                                                                                 [ 95%]
src/nunavut/lang/py/__init__.py::line:129,column:1 PASSED                                                                                                                                 [ 95%]
src/nunavut/lang/py/__init__.py::line:141,column:1 PASSED                                                                                                                                 [ 95%]
src/nunavut/lang/py/__init__.py::line:145,column:1 PASSED                                                                                                                                 [ 96%]
src/nunavut/lang/py/__init__.py::line:157,column:1 PASSED                                                                                                                                 [ 96%]
src/nunavut/lang/py/__init__.py::line:162,column:1 PASSED                                                                                                                                 [ 96%]
src/nunavut/lang/py/__init__.py::line:174,column:1 PASSED                                                                                                                                 [ 97%]
src/nunavut/lang/py/__init__.py::line:192,column:1 PASSED                                                                                                                                 [ 97%]
src/nunavut/lang/py/__init__.py::line:200,column:1 PASSED                                                                                                                                 [ 97%]
src/nunavut/lang/py/__init__.py::line:213,column:1 PASSED                                                                                                                                 [ 98%]
src/nunavut/lang/py/__init__.py::line:241,column:1 PASSED                                                                                                                                 [ 98%]
src/nunavut/lang/py/__init__.py::line:249,column:1 PASSED                                                                                                                                 [ 98%]
src/nunavut/lang/py/__init__.py::line:262,column:1 PASSED                                                                                                                                 [ 99%]
src/nunavut/lang/py/__init__.py::line:318,column:1 PASSED                                                                                                                                 [ 99%]
src/nunavut/lang/py/__init__.py::line:323,column:1 PASSED                                                                                                                                 [ 99%]
src/nunavut/lang/py/__init__.py::line:334,column:1 PASSED                                                                                                                                 [100%]

===================================================================================== 322 passed in 16.15s ======================================================================================
.pkg: _exit> python /usr/local/lib/python3.10/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
  doctest: OK (23.15=setup[6.23]+cmd[16.92] seconds)
  congratulations :) (23.39 seconds)