>>> hy: Building testing/hy 0.25.0-r0 (using abuild 3.10.0_rc1-r2) started Wed, 09 Nov 2022 18:15:31 +0000 >>> hy: Checking sanity of /home/buildozer/aports/testing/hy/APKBUILD... >>> hy: Analyzing dependencies... >>> hy: Installing for build: build-base python3 py3-funcparserlib py3-rply py3-colorama py3-setuptools py3-sphinx py3-sphinxcontrib-hydomain py3-sphinx_rtd_theme py3-wheel (1/40) Installing libbz2 (1.0.8-r3) (2/40) Installing libffi (3.4.4-r0) (3/40) Installing gdbm (1.23-r0) (4/40) Installing xz-libs (5.2.7-r0) (5/40) Installing mpdecimal (2.5.1-r1) (6/40) Installing readline (8.2.0-r0) (7/40) Installing sqlite-libs (3.39.4-r0) (8/40) Installing python3 (3.10.8-r3) (9/40) Installing py3-funcparserlib (1.0.1-r0) (10/40) Installing py3-appdirs (1.4.4-r4) (11/40) Installing py3-rply (0.7.8-r2) (12/40) Installing py3-colorama (0.4.6-r0) (13/40) Installing py3-parsing (3.0.9-r0) (14/40) Installing py3-packaging (21.3-r2) (15/40) Installing py3-setuptools (65.5.1-r0) (16/40) Installing py3-tz (2022.6-r0) (17/40) Installing py3-babel (2.11.0-r0) (18/40) Installing py3-docutils (0.19-r1) (19/40) Installing py3-imagesize (1.4.1-r0) (20/40) Installing py3-markupsafe (2.1.1-r1) (21/40) Installing py3-jinja2 (3.1.2-r0) (22/40) Installing py3-pygments (2.13.0-r0) (23/40) Installing py3-certifi (2022.9.24-r0) (24/40) Installing py3-charset-normalizer (3.0.0-r0) (25/40) Installing py3-idna (3.4-r2) (26/40) Installing py3-urllib3 (1.26.12-r0) (27/40) Installing py3-requests (2.28.1-r1) (28/40) Installing py3-snowballstemmer (2.2.0-r0) (29/40) Installing py3-alabaster (0.7.12-r5) (30/40) Installing py3-sphinxcontrib-applehelp (1.0.2-r3) (31/40) Installing py3-sphinxcontrib-devhelp (1.0.2-r3) (32/40) Installing py3-sphinxcontrib-htmlhelp (2.0.0-r2) (33/40) Installing py3-sphinxcontrib-jsmath (1.0.1-r3) (34/40) Installing py3-sphinxcontrib-serializinghtml (1.1.5-r2) (35/40) Installing py3-sphinxcontrib-qthelp (1.0.3-r3) (36/40) Installing py3-sphinx (5.3.0-r0) (37/40) Installing py3-sphinxcontrib-hydomain (0.1.0_git20220623-r0) (38/40) Installing py3-sphinx_rtd_theme (1.1.0-r0) (39/40) Installing py3-wheel (0.38.3-r0) (40/40) Installing .makedepends-hy (20221109.181535) Executing busybox-1.35.0-r27.trigger OK: 402 MiB in 136 packages >>> hy: Cleaning up srcdir >>> hy: Cleaning up pkgdir >>> hy: Fetching https://distfiles.alpinelinux.org/distfiles/edge/hy-0.25.0.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 146 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 >>> hy: Fetching hy-0.25.0.tar.gz::https://github.com/hylang/hy/archive/0.25.0.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 421k 100 421k 0 0 358k 0 0:00:01 0:00:01 --:--:-- 358k >>> hy: Fetching https://distfiles.alpinelinux.org/distfiles/edge/hy-0.25.0.tar.gz >>> hy: Checking sha512sums... hy-0.25.0.tar.gz: OK >>> hy: Unpacking /var/cache/distfiles/hy-0.25.0.tar.gz... running build running build_py creating build creating build/lib creating build/lib/hy copying hy/model_patterns.py -> build/lib/hy copying hy/macros.py -> build/lib/hy copying hy/__init__.py -> build/lib/hy copying hy/errors.py -> build/lib/hy copying hy/cmdline.py -> build/lib/hy copying hy/__main__.py -> build/lib/hy copying hy/completer.py -> build/lib/hy copying hy/models.py -> build/lib/hy copying hy/scoping.py -> build/lib/hy copying hy/importer.py -> build/lib/hy copying hy/version.py -> build/lib/hy copying hy/_compat.py -> build/lib/hy copying hy/compiler.py -> build/lib/hy creating build/lib/hy/reader copying hy/reader/mangling.py -> build/lib/hy/reader copying hy/reader/__init__.py -> build/lib/hy/reader copying hy/reader/hy_reader.py -> build/lib/hy/reader copying hy/reader/exceptions.py -> build/lib/hy/reader copying hy/reader/reader.py -> build/lib/hy/reader creating build/lib/hy/core copying hy/core/__init__.py -> build/lib/hy/core copying hy/core/result_macros.py -> build/lib/hy/core copying hy/reserved.hy -> build/lib/hy copying hy/pyops.hy -> build/lib/hy copying hy/core/hy_repr.hy -> build/lib/hy/core copying hy/core/macros.hy -> build/lib/hy/core copying hy/core/util.hy -> build/lib/hy/core Running Sphinx v5.3.0 making output directory... done loading intersphinx inventory from https://docs.python.org/3.10/objects.inv... loading intersphinx inventory from https://hyrule.readthedocs.io/en/master/objects.inv... loading intersphinx inventory from https://docs.python.org/3/objects.inv... building [mo]: targets for 0 po files that are out of date building [man]: all manpages updating environment: [new config] 14 added, 0 changed, 0 removed reading sources... [ 7%] api WARNING:root:error while formatting arguments for hy.core.macros: unsupported callable DEBUG:hy-domain:[autodoc] from hy.core.macros import cond DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.core.macros import defreader DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.core.macros import delmacro DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.core.macros import doc DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.core.macros import export DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.core.macros import when DEBUG:hy-domain:[autodoc] import hy.core.macros => DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:module:: hy.core.macros .. hy:macro:: (cond [#* args]) :module: hy.core.macros Shorthand for a nested sequence of :hy:func:`if` forms, like an :py:keyword:`if`-:py:keyword:`elif`-:py:keyword:`else` ladder in Python. Syntax such as :: (cond condition1 result1 condition2 result2) is equivalent to :: (if condition1 result1 (if condition2 result2 None)) Notice that ``None`` is returned when no conditions match; use ``True`` as the final condition to change the fallback result. Use :hy:func:`do` to execute several forms as part of a single condition or result. With no arguments, ``cond`` returns ``None``. With an odd number of arguments, ``cond`` raises an error. .. hy:macro:: (defreader [key #* body]) :module: hy.core.macros Define a new reader macro. Reader macros are expanded at read time and allow you to modify the behavior of the Hy reader. Access to the currently instantiated `HyReader` is available in the ``body`` as ``&reader``. See :py:class:`HyReader ` and its base class :py:class:`Reader ` for details regarding the available processing methods. Reader macro names can be any symbol that does not start with a ``^`` and are callable by prefixing the name with a ``#``. i.e. ``(defreader upper ...)`` is called with ``#upper``. .. rubric:: Examples The following is a primitive example of a reader macro that adds Python's colon ``:`` slice sugar into Hy:: => (defreader slice ... (defn parse-node [] ... (let [node (when (!= ":" (.peekc &reader)) ... (.parse-one-form &reader))] ... (if (= node '...) 'Ellipse node))) ... ... (with [(&reader.end-identifier ":")] ... (let [nodes []] ... (&reader.slurp-space) ... (nodes.append (parse-node)) ... (while (&reader.peek-and-getc ":") ... (nodes.append (parse-node))) ... ... `(slice ~@nodes)))) => (setv an-index 42) => #slice a:(+ 1 2):"column" (slice 42 3 column) See the :ref:`reader macros docs ` for more detailed information on how reader macros work and are defined. .. hy:macro:: (delmacro [#* names]) :module: hy.core.macros Delete a macro(s) from the current module :: => (require a-module [some-macro]) => (some-macro) 1 => (delmacro some-macro) => (some-macro) Traceback (most recent call last): File "", line 1, in (some-macro) NameError: name 'some_macro' is not defined => (delmacro some-macro) Traceback (most recent call last): File "", line 1, in (delmacro some-macro) NameError: macro 'some-macro' is not defined .. hy:macro:: (doc [symbol]) :module: hy.core.macros macro documentation Gets help for a macro function available in this module. Use ``require`` to make other macros available. Use ``(help foo)`` instead for help with runtime objects. .. hy:macro:: (export [#* args]) :module: hy.core.macros A convenience macro for defining ``__all__`` and ``_hy_export_macros``, which control which Python objects and macros (respectively) are collected by ``*`` imports in :hy:func:`import` and :hy:func:`require` (respectively). ``export`` allows you to provide the names as symbols instead of strings, and it calls :hy:func:`hy.mangle` for you on each name. The syntax is ``(export objects macros)``, where ``objects`` refers to Python objects and ``macros`` to macros. Keyword arguments are allowed. For example, :: (export :objects [my-fun MyClass] :macros [my-macro]) exports the function ``my-fun``, the class ``MyClass``, and the macro ``my-macro``. .. hy:macro:: (when [test #* body]) :module: hy.core.macros Shorthand for ``(if test (do …) None)``. See :hy:func:`if`. For a logically negated version, see Hyrule's :hy:func:`unless `. :: (when panic (log.write panic) (print "Process returned:" panic.msg) (return panic)) /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1451: input: .. hy:autofunction:: hy.read DEBUG:hy-domain:[autodoc] from hy import read DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'read') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (read [stream filename reader]) :module: hy Like :hy:func:`hy.read-many`, but only one form is read, and shebangs are forbidden. The model corresponding to this specific form is returned, or, if there are no forms left in the stream, :class:`EOFError` is raised. ``stream.pos`` is left where it was immediately after the form. /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1453: input: .. hy:autofunction:: hy.read_many DEBUG:hy-domain:[autodoc] from hy import read_many DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'read_many') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (read-many [stream [filename ] reader [skip-shebang False]]) :module: hy Parse all the Hy source code in ``stream``, which should be a textual file-like object or a string. ``filename``, if provided, is used in error messages. If no ``reader`` is provided, a new :class:`hy.reader.hy_reader.HyReader` object is created. If ``skip_shebang`` is true and a :ref:`shebang line ` is present, it's detected and discarded first. Return a value of type :class:`hy.models.Lazy`. If you want to evaluate this, be careful to allow evaluating each model before reading the next, as in ``(hy.eval (hy.read-many o))``. By contrast, forcing all the code to be read before evaluating any of it, as in ``(hy.eval `(do [~@(hy.read-many o)]))``, will yield the wrong result if one form defines a reader macro that's later used in the same stream to produce new forms. .. warning:: Thanks to reader macros, reading can execute arbitrary code. Don't read untrusted input. /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1455: input: .. hy:autofunction:: hy.eval DEBUG:hy-domain:[autodoc] from hy import eval DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'eval') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (eval [hytree locals module ast-callback compiler filename source [import-stdlib True]]) :module: hy Evaluates a quoted expression and returns the value. If you're evaluating hand-crafted AST trees, make sure the line numbers are set properly. Try `fix_missing_locations` and related functions in the Python `ast` library. .. rubric:: Examples :: => (hy.eval '(print "Hello World")) "Hello World" If you want to evaluate a string, use ``read-str`` to convert it to a form first:: => (hy.eval (hy.read-str "(+ 1 1)")) 2 :param hytree: The Hy AST object to evaluate. :type hytree: Object :param locals: Local environment in which to evaluate the Hy tree. Defaults to the calling frame. :type locals: Optional[dict] :param module: Module, or name of the module, to which the Hy tree is assigned and the global values are taken. The module associated with `compiler` takes priority over this value. When neither `module` nor `compiler` is specified, the calling frame's module is used. :type module: Optional[Union[str, types.ModuleType]] :param ast_callback: A callback that is passed the Hy compiled tree and resulting expression object, in that order, after compilation but before evaluation. :type ast_callback: Optional[Callable] :param compiler: An existing Hy compiler to use for compilation. Also serves as the `module` value when given. :type compiler: Optional[HyASTCompiler] :param filename: The filename corresponding to the source for `tree`. This will be overridden by the `filename` field of `tree`, if any; otherwise, it defaults to "". When `compiler` is given, its `filename` field value is always used. :type filename: Optional[str] :param source: A string containing the source code for `tree`. This will be overridden by the `source` field of `tree`, if any; otherwise, if `None`, an attempt will be made to obtain it from the module given by `module`. When `compiler` is given, its `source` field value is always used. :type source: Optional[str] :returns: Result of evaluating the Hy compiled tree. :rtype: Any /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1457: input: .. hy:autofunction:: hy.repr DEBUG:hy-domain:[autodoc] from hy import repr DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'repr') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (repr [obj]) :module: hy This function is Hy's equivalent of Python's :func:`repr`. It returns a string representing the input object in Hy syntax. :: => (hy.repr [1 2 3]) "[1 2 3]" => (repr [1 2 3]) "[1, 2, 3]" Like ``repr`` in Python, ``hy.repr`` can round-trip many kinds of values. Round-tripping implies that given an object ``x``, ``(hy.eval (hy.read (hy.repr x)))`` returns ``x``, or at least a value that's equal to ``x``. A notable exception to round-tripping is that if a :class:`hy.models.Object` contains a non-model, the latter will be promoted to a model in the output:: (setv x (hy.models.List [5]) output (hy.repr x) y (hy.eval (hy.read output))) (print output) ; '[5] (print (type (get x 0))) ; (print (type (get y 0))) ; /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1459: input: .. hy:autofunction:: hy.repr-register DEBUG:hy-domain:[autodoc] from hy import repr-register DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'repr-register') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (repr-register [types f placeholder]) :module: hy ``hy.repr-register`` lets you set the function that ``hy.repr`` calls to represent a type. .. rubric:: Examples :: => (hy.repr-register the-type fun) => (defclass C) => (hy.repr-register C (fn [x] "cuddles")) => (hy.repr [1 (C) 2]) "[1 cuddles 2]" If the type of an object passed to ``hy.repr`` doesn't have a registered function, ``hy.repr`` falls back on ``repr``. Registered functions often call ``hy.repr`` themselves. ``hy.repr`` will automatically detect self-references, even deeply nested ones, and output ``"..."`` for them instead of calling the usual registered function. To use a placeholder other than ``"..."``, pass a string of your choice to the keyword argument ``:placeholder`` of ``hy.repr-register``. => (defclass Container [object] ... (defn __init__ (fn [self value] ... (setv self.value value)))) => (hy.repr-register Container :placeholder "HY THERE" (fn [x] ... (+ "(Container " (hy.repr x.value) ")"))) => (setv container (Container 5)) => (setv container.value container) => (print (hy.repr container)) '(Container HY THERE)' /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1461: input: .. hy:autofunction:: hy.mangle DEBUG:hy-domain:[autodoc] from hy import mangle DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'mangle') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (mangle [s]) :module: hy Stringify the argument and convert it to a valid Python identifier according to :ref:`Hy's mangling rules `. If the argument is already both legal as a Python identifier and normalized according to Unicode normalization form KC (NFKC), it will be returned unchanged. Thus, ``mangle`` is idempotent. .. rubric:: Examples :: => (hy.mangle 'foo-bar) "foo_bar" => (hy.mangle 'foo-bar?) "is_foo_bar" => (hy.mangle '*) "hyx_XasteriskX" => (hy.mangle '_foo/a?) "_hyx_is_fooXsolidusXa" => (hy.mangle '-->) "hyx_XhyphenHminusX_XgreaterHthan_signX" => (hy.mangle '<--) "hyx_XlessHthan_signX__" /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1463: input: .. hy:autofunction:: hy.unmangle DEBUG:hy-domain:[autodoc] from hy import unmangle DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'unmangle') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (unmangle [s]) :module: hy Stringify the argument and try to convert it to a pretty unmangled form. See :ref:`Hy's mangling rules `. Unmangling may not round-trip, because different Hy symbol names can mangle to the same Python identifier. In particular, Python itself already considers distinct strings that have the same normalized form (according to NFKC), such as ``hello`` and ``𝔥𝔢𝔩𝔩𝔬``, to be the same identifier. .. rubric:: Examples :: => (hy.unmangle 'foo_bar) "foo-bar" => (hy.unmangle 'is_foo_bar) "foo-bar?" => (hy.unmangle 'hyx_XasteriskX) "*" => (hy.unmangle '_hyx_is_fooXsolidusXa) "_foo/a?" => (hy.unmangle 'hyx_XhyphenHminusX_XgreaterHthan_signX) "-->" => (hy.unmangle 'hyx_XlessHthan_signX__) "<--" => (hy.unmangle '__dunder_name__) "__dunder-name__" /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1465: input: .. hy:autofunction:: hy.disassemble DEBUG:hy-domain:[autodoc] from hy import disassemble DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'disassemble') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (disassemble [tree [codegen False]]) :module: hy Return the python AST for a quoted Hy `tree` as a string. If the second argument `codegen` is true, generate python code instead. Dump the Python AST for given Hy *tree* to standard output. If *codegen* is ``True``, the function prints Python code instead. .. rubric:: Examples :: => (hy.disassemble '(print "Hello World!")) Module( body=[ Expr(value=Call(func=Name(id='print'), args=[Str(s='Hello World!')], keywords=[], starargs=None, kwargs=None))]) :: => (hy.disassemble '(print "Hello World!") True) print('Hello World!') /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1467: input: .. hy:autofunction:: hy.macroexpand DEBUG:hy-domain:[autodoc] from hy import macroexpand DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'macroexpand') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (macroexpand [form [result-ok False]]) :module: hy Return the full macro expansion of `form`. .. rubric:: Examples :: => (require hyrule [->]) => (hy.macroexpand '(-> (a b) (x y))) '(x (a b) y) => (hy.macroexpand '(-> (a b) (-> (c d) (e f)))) '(e (c (a b) d) f) /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1469: input: .. hy:autofunction:: hy.macroexpand-1 DEBUG:hy-domain:[autodoc] from hy import macroexpand-1 DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'macroexpand-1') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (macroexpand-1 [form]) :module: hy Return the single step macro expansion of `form`. .. rubric:: Examples :: => (require hyrule [->]) => (hy.macroexpand-1 '(-> (a b) (-> (c d) (e f)))) '(-> (a b) (c d) (e f)) /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1471: input: .. hy:autofunction:: hy.gensym DEBUG:hy-domain:[autodoc] from hy import gensym DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'gensym') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (gensym [ [g G]]) :module: hy Generate a symbol with a unique name. The argument will be included in the generated symbol, as an aid to debugging. Typically one calls ``hy.gensym`` without an argument. .. seealso:: Section :ref:`using-gensym` The below example uses the return value of ``f`` twice but calls it only once, and uses ``hy.gensym`` for the temporary variable to avoid collisions with any other variable names. :: (defmacro selfadd [x] (setv g (hy.gensym)) `(do (setv ~g ~x) (+ ~g ~g))) (defn f [] (print "This is only executed once.") 4) (print (selfadd (f))) /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1473: input: .. hy:autofunction:: hy.as-model DEBUG:hy-domain:[autodoc] from hy import as-model DEBUG:hy-domain:[autodoc] import hy => DEBUG:hy-domain:[autodoc] getattr(_, 'as-model') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:function:: (as-model [x]) :module: hy Recursively promote an object ``x`` into its canonical model form. When creating macros its possible to return non-Hy model objects or even create an expression with non-Hy model elements:: => (defmacro hello [] ... "world!") => (defmacro print-inc [a] ... `(print ~(+ a 1))) => (print-inc 1) 2 ; in this case the unquote form (+ 1 1) would splice the literal ; integer ``2`` into the print statement, *not* the model representation ; ``(hy.model.Integer 2)`` This is perfectly fine, because Hy autoboxes these literal values into their respective model forms at compilation time. The one case where this distinction between the spliced composit form and the canonical model tree representation matters, is when comparing some spliced model tree with another known tree:: => (= `(print ~(+ 1 1)) '(print 2)) False ; False because the literal int ``2`` in the spliced form is not ; equal to the ``(hy.model.Integer 2)`` value in the known form. => (= (hy.as-model `(print ~(+ 1 1)) '(print 2))) True ; True because ``as-model`` has walked the expression and promoted ; the literal int ``2`` to its model for ``(hy.model.Integer 2)`` /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1501: input: .. hy:automodule:: hy.pyops :members: DEBUG:hy-domain:[autodoc] import hy.pyops DEBUG:hy-domain:[autodoc] import hy.pyops => WARNING:root:error while formatting arguments for hy.pyops: unsupported callable DEBUG:hy-domain:['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__macros__', '__name__', '__package__', '__reader-macros__', '__spec__', '_foldr', 'and', 'comp-op', 'get', 'hy', '&', '*', '**', '^', '@', '=', '!=', '>', '>=', '>>', '-', '<', '<=', '<<', '%', '+', '/', '//', '~', '|', 'in', 'is', 'not?', 'not', 'not-in', 'operator', 'or', 'reduce'] DEBUG:hy-domain:[autodoc] from hy.pyops import != DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '!=') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import % DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '%') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import & DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '&') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import * DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '*') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import ** DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '**') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import + DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '+') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import - DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '-') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import / DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '/') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import // DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '//') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import < DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '<') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import << DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '<<') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import <= DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '<=') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import = DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '=') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import > DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '>') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import >= DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '>=') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import >> DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '>>') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import @ DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '@') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import ^ DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '^') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import and DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'and') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import comp-op DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'comp-op') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import get DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'get') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import in DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'in') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import is DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'is') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import not-in DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'not-in') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import not? DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'not?') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import or DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'or') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import reduce DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, 'reduce') DEBUG:hy-domain:[autodoc] => WARNING:root:error while formatting arguments for hy.pyops.reduce: unsupported callable /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import | DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '|') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.pyops import ~ DEBUG:hy-domain:[autodoc] import hy.pyops => DEBUG:hy-domain:[autodoc] getattr(_, '~') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:module:: hy.pyops Python provides various :ref:`binary and unary operators `. These are usually invoked in Hy using core macros of the same name: for example, ``(+ 1 2)`` calls the core macro named ``+``, which uses Python's addition operator. An exception to the names being the same is that Python's ``==`` is called ``=`` in Hy. By importing from the module ``hy.pyops`` (typically with a star import, as in ``(import hy.pyops *)``), you can also use these operators as functions. Functions are first-class objects, so you can say things like ``(map - xs)`` to negate all the numbers in the list ``xs``. Since macros shadow functions, forms like ``(- 1 2)`` will still call the macro instead of the function. The functions in ``hy.pyops`` have the same semantics as their macro equivalents, with one exception: functions can't short-circuit, so the functions for the logical operators, such as ``and``, unconditionally evaluate all arguments. .. hy:function:: (!= [a1 a2 #* a-rest]) :module: hy.pyops The inequality operator. Its effect can be defined by the equivalent Python: - ``(!= x y)`` → ``x != y`` - ``(!= a1 a2 … an)`` → ``a1 != a2 != … != an`` .. hy:function:: (% [x y]) :module: hy.pyops The modulus operator. Its effect can be defined by the equivalent Python: - ``(% x y)`` → ``x % y`` .. hy:function:: (& [a1 #* a-rest]) :module: hy.pyops The bitwise AND operator. Its effect can be defined by the equivalent Python: - ``(& x)`` → ``x`` - ``(& x y)`` → ``x & y`` - ``(& a1 a2 … an)`` → ``a1 & a2 & … & an`` .. hy:function:: (* [#* args]) :module: hy.pyops The multiplication operator. Its effect can be defined by the equivalent Python: - ``(*)`` → ``0`` - ``(* x)`` → ``x`` - ``(* x y)`` → ``x * y`` - ``(* a1 a2 … an)`` → ``a1 * a2 * … * an`` .. hy:function:: (** [a1 a2 #* a-rest]) :module: hy.pyops The exponentiation operator. Its effect can be defined by the equivalent Python: - ``(** x y)`` → ``x ** y`` - ``(** a1 a2 … an)`` → ``a1 ** a2 ** … ** an`` .. hy:function:: (+ [#* args]) :module: hy.pyops The addition operator. Its effect can be defined by the equivalent Python: - ``(+)`` → ``0`` - ``(+ x)`` → ``+x`` - ``(+ x y)`` → ``x + y`` - ``(+ a1 a2 … an)`` → ``a1 + a2 + … + an`` .. hy:function:: (- [a1 #* a-rest]) :module: hy.pyops The subtraction operator. Its effect can be defined by the equivalent Python: - ``(- x)`` → ``-x`` - ``(- x y)`` → ``x - y`` - ``(- a1 a2 … an)`` → ``a1 - a2 - … - an`` .. hy:function:: (/ [a1 #* a-rest]) :module: hy.pyops The division operator. Its effect can be defined by the equivalent Python: - ``(/ x)`` → ``1 / x`` - ``(/ x y)`` → ``x / y`` - ``(/ a1 a2 … an)`` → ``a1 / a2 / … / an`` .. hy:function:: (// [a1 a2 #* a-rest]) :module: hy.pyops The floor division operator. Its effect can be defined by the equivalent Python: - ``(// x y)`` → ``x // y`` - ``(// a1 a2 … an)`` → ``a1 // a2 // … // an`` .. hy:function:: (< [a1 #* a-rest]) :module: hy.pyops The less-than operator. Its effect can be defined by the equivalent Python: - ``(< x)`` → ``True`` - ``(< x y)`` → ``x < y`` - ``(< a1 a2 … an)`` → ``a1 < a2 < … < an`` .. hy:function:: (<< [a1 a2 #* a-rest]) :module: hy.pyops The left shift operator. Its effect can be defined by the equivalent Python: - ``(<< x y)`` → ``x << y`` - ``(<< a1 a2 … an)`` → ``a1 << a2 << … << an`` .. hy:function:: (<= [a1 #* a-rest]) :module: hy.pyops The less-than-or-equal-to operator. Its effect can be defined by the equivalent Python: - ``(<= x)`` → ``True`` - ``(<= x y)`` → ``x <= y`` - ``(<= a1 a2 … an)`` → ``a1 <= a2 <= … <= an`` .. hy:function:: (= [a1 #* a-rest]) :module: hy.pyops The equality operator. Its effect can be defined by the equivalent Python: - ``(= x)`` → ``True`` - ``(= x y)`` → ``x == y`` - ``(= a1 a2 … an)`` → ``a1 == a2 == … == an`` .. hy:function:: (> [a1 #* a-rest]) :module: hy.pyops The greater-than operator. Its effect can be defined by the equivalent Python: - ``(> x)`` → ``True`` - ``(> x y)`` → ``x > y`` - ``(> a1 a2 … an)`` → ``a1 > a2 > … > an`` .. hy:function:: (>= [a1 #* a-rest]) :module: hy.pyops The greater-than-or-equal-to operator. Its effect can be defined by the equivalent Python: - ``(>= x)`` → ``True`` - ``(>= x y)`` → ``x >= y`` - ``(>= a1 a2 … an)`` → ``a1 >= a2 >= … >= an`` .. hy:function:: (>> [a1 a2 #* a-rest]) :module: hy.pyops The right shift operator. Its effect can be defined by the equivalent Python: - ``(>> x y)`` → ``x >> y`` - ``(>> a1 a2 … an)`` → ``a1 >> a2 >> … >> an`` .. hy:function:: (@ [a1 #* a-rest]) :module: hy.pyops The matrix multiplication operator. Its effect can be defined by the equivalent Python: - ``(@ x y)`` → ``x @ y`` - ``(@ a1 a2 … an)`` → ``a1 @ a2 @ … @ an`` .. hy:function:: (^ [x y]) :module: hy.pyops The bitwise XOR operator. Its effect can be defined by the equivalent Python: - ``(^ x y)`` → ``x ^ y`` .. hy:function:: (and [#* args]) :module: hy.pyops The logical conjuction operator. Its effect can be defined by the equivalent Python: - ``(and)`` → ``True`` - ``(and x)`` → ``x`` - ``(and x y)`` → ``x and y`` - ``(and a1 a2 … an)`` → ``a1 and a2 and … and an`` .. hy:function:: (comp-op [op a1 a-rest]) :module: hy.pyops Helper for shadow comparison operators .. hy:function:: (get [coll key1 #* keys]) :module: hy.pyops Access item in `coll` indexed by `key1`, with optional `keys` nested-access. ``get`` is used to access single elements in collections. ``get`` takes at least two parameters: the *data structure* and the *index* or *key* of the item. It will then return the corresponding value from the collection. If multiple *index* or *key* values are provided, they are used to access successive elements in a nested structure. .. note:: ``get`` raises a KeyError if a dictionary is queried for a non-existing key. .. note:: ``get`` raises an IndexError if a list or a tuple is queried for an index that is out of bounds. .. rubric:: Examples :: => (do ... (setv animals {"dog" "bark" "cat" "meow"} ... numbers #("zero" "one" "two" "three") ... nested [0 1 ["a" "b" "c"] 3 4]) ... (print (get animals "dog")) ... (print (get numbers 2)) ... (print (get nested 2 1)) bark two b .. hy:function:: (in [a1 a2 #* a-rest]) :module: hy.pyops The membership test operator. Its effect can be defined by the equivalent Python: - ``(in x y)`` → ``x in y`` - ``(in a1 a2 … an)`` → ``a1 in a2 in … in an`` .. hy:function:: (is [a1 #* a-rest]) :module: hy.pyops The identicality test operator. Its effect can be defined by the equivalent Python: - ``(is x)`` → ``True`` - ``(is x y)`` → ``x is y`` - ``(is a1 a2 … an)`` → ``a1 is a2 is … is an`` .. hy:function:: (not-in [a1 a2 #* a-rest]) :module: hy.pyops The negated membership test operator. Its effect can be defined by the equivalent Python: - ``(not-in x y)`` → ``x not in y`` - ``(not-in a1 a2 … an)`` → ``a1 not in a2 not in … not in an`` .. hy:function:: (not? [a1 a2 #* a-rest]) :module: hy.pyops The negated identicality test operator. Its effect can be defined by the equivalent Python: - ``(is-not x y)`` → ``x is not y`` - ``(is-not a1 a2 … an)`` → ``a1 is not a2 is not … is not an`` .. hy:function:: (or [#* args]) :module: hy.pyops The logical disjunction operator. Its effect can be defined by the equivalent Python: - ``(or)`` → ``None`` - ``(or x)`` → ``x`` - ``(or x y)`` → ``x or y`` - ``(or a1 a2 … an)`` → ``a1 or a2 or … or an`` .. hy:function:: reduce :module: hy.pyops reduce(function, iterable[, initial]) -> value Apply a function of two arguments cumulatively to the items of a sequence or iterable, from left to right, so as to reduce the iterable to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the iterable in the calculation, and serves as a default when the iterable is empty. .. hy:function:: (| [#* args]) :module: hy.pyops The bitwise OR operator. Its effect can be defined by the equivalent Python: - ``(|)`` → ``0`` - ``(| x)`` → ``x`` - ``(| x y)`` → ``x | y`` - ``(| a1 a2 … an)`` → ``a1 | a2 | … | an`` .. hy:function:: (~ [x]) :module: hy.pyops The bitwise NOT operator. Its effect can be defined by the equivalent Python: - ``(~ x)`` → ``~x`` /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: DEBUG:hy-domain:[sphinxcontrib-hydomain] /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:1507: input: .. hy:automodule:: hy.reserved :members: DEBUG:hy-domain:[autodoc] import hy.reserved DEBUG:hy-domain:[autodoc] import hy.reserved => WARNING:root:error while formatting arguments for hy.reserved: unsupported callable DEBUG:hy-domain:['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__macros__', '__name__', '__package__', '__reader-macros__', '__spec__', '_cache', 'hy', 'keyword', 'macros', 'names', 'sys'] DEBUG:hy-domain:[autodoc] from hy.reserved import macros DEBUG:hy-domain:[autodoc] import hy.reserved => DEBUG:hy-domain:[autodoc] getattr(_, 'macros') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] from hy.reserved import names DEBUG:hy-domain:[autodoc] import hy.reserved => DEBUG:hy-domain:[autodoc] getattr(_, 'names') DEBUG:hy-domain:[autodoc] => /usr/lib/python3.10/site-packages/sphinx/ext/autodoc/__init__.py:617: RemovedInSphinx60Warning: The implementation of Documenter.get_object_members() will be removed from Sphinx-6.0. warnings.warn('The implementation of Documenter.get_object_members() will be ' DEBUG:hy-domain:[autodoc] output: .. hy:module:: hy.reserved .. hy:function:: (macros []) :module: hy.reserved Return a frozenset of Hy's core macro names. .. hy:function:: (names []) :module: hy.reserved Return a frozenset of reserved symbol names. The result of the first call is cached. The output includes all of Hy's core functions and macros, plus all Python reserved words. All names are in unmangled form (e.g., ``not-in`` rather than ``not_in``). .. rubric:: Examples :: => (import hy.extra.reserved) => (in "defclass" (hy.extra.reserved.names)) True /usr/lib/python3.10/site-packages/sphinxcontrib/hy_documenters.py:492: RemovedInSphinx60Warning: DocumenterBridge.filename_set is deprecated. for fn in params.filename_set: reading sources... [ 14%] cheatsheet reading sources... [ 21%] cli reading sources... [ 28%] env_var reading sources... [ 35%] hacking reading sources... [ 42%] index reading sources... [ 50%] interop reading sources... [ 57%] macros reading sources... [ 64%] model_patterns reading sources... [ 71%] repl reading sources... [ 78%] semantics reading sources... [ 85%] syntax reading sources... [ 92%] tutorial reading sources... [100%] whyhy looking for now-outdated files... none found pickling environment... done checking consistency... done writing... hy.1 { whyhy tutorial syntax semantics macros repl env_var cli interop model_patterns cheatsheet api hacking } /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/api.rst:9: WARNING: undefined label: 'syntax-bracket-strings' /home/buildozer/aports/testing/hy/src/hy-0.25.0/docs/docstring of hy.core.macros.defreader:1: WARNING: undefined label: 'reader macros' done build succeeded, 2 warnings. The manual pages are in _build. >>> hy: Entering fakeroot... running install /usr/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running build running build_py copying hy/version.py -> build/lib/hy running install_lib creating /home/buildozer/aports/testing/hy/pkg creating /home/buildozer/aports/testing/hy/pkg/hy creating /home/buildozer/aports/testing/hy/pkg/hy/usr creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10 creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/model_patterns.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/reserved.hy -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/macros.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/__init__.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/errors.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/cmdline.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/pyops.hy -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/__main__.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/completer.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/models.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/scoping.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/importer.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/version.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/_compat.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy copying build/lib/hy/compiler.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader copying build/lib/hy/reader/mangling.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader copying build/lib/hy/reader/__init__.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader copying build/lib/hy/reader/hy_reader.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader copying build/lib/hy/reader/exceptions.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader copying build/lib/hy/reader/reader.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader creating /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core copying build/lib/hy/core/__init__.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core copying build/lib/hy/core/hy_repr.hy -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core copying build/lib/hy/core/macros.hy -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core copying build/lib/hy/core/util.hy -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core copying build/lib/hy/core/result_macros.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/model_patterns.py to model_patterns.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/macros.py to macros.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/__init__.py to __init__.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/errors.py to errors.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/cmdline.py to cmdline.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/__main__.py to __main__.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/completer.py to completer.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/models.py to models.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/scoping.py to scoping.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/importer.py to importer.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/version.py to version.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/_compat.py to _compat.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/compiler.py to compiler.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader/mangling.py to mangling.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader/__init__.py to __init__.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader/hy_reader.py to hy_reader.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader/exceptions.py to exceptions.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/reader/reader.py to reader.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/__init__.py to __init__.cpython-310.pyc byte-compiling /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/result_macros.py to result_macros.cpython-310.pyc running install_data creating /home/buildozer/aports/testing/hy/pkg/hy/usr/get_version copying get_version.py -> /home/buildozer/aports/testing/hy/pkg/hy/usr/get_version running install_egg_info running egg_info creating hy.egg-info writing hy.egg-info/PKG-INFO writing dependency_links to hy.egg-info/dependency_links.txt writing entry points to hy.egg-info/entry_points.txt writing requirements to hy.egg-info/requires.txt writing top-level names to hy.egg-info/top_level.txt writing manifest file 'hy.egg-info/SOURCES.txt' reading manifest file 'hy.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'hy.egg-info/SOURCES.txt' Copying hy.egg-info to /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy-0.25.0-py3.10.egg-info running install_scripts Installing hy script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin Installing hy2py script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin Installing hy2py3 script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin Installing hy3 script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin Installing hyc script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin Installing hyc3 script to /home/buildozer/aports/testing/hy/pkg/hy/usr/bin /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: cond already refers to: `cond` in module: `builtins`, being replaced by: `.cond` ;;; Hy core macros /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: when already refers to: `when` in module: `builtins`, being replaced by: `.when` ;;; Hy core macros /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: defreader already refers to: `defreader` in module: `builtins`, being replaced by: `.defreader` ;;; Hy core macros /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: doc already refers to: `doc` in module: `builtins`, being replaced by: `.doc` ;;; Hy core macros /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: export already refers to: `export` in module: `builtins`, being replaced by: `.export` ;;; Hy core macros /home/buildozer/aports/testing/hy/pkg/hy/usr/lib/python3.10/site-packages/hy/core/macros.hy:1: RuntimeWarning: delmacro already refers to: `delmacro` in module: `builtins`, being replaced by: `.delmacro` ;;; Hy core macros >>> hy-doc*: Running split function doc... >>> hy-doc*: Preparing subpackage hy-doc... >>> hy-doc*: Running postcheck for hy-doc >>> hy*: Running postcheck for hy >>> hy*: Preparing package hy... >>> hy-doc*: Tracing dependencies... >>> hy-doc*: Package size: 72.0 KB >>> hy-doc*: Compressing data... >>> hy-doc*: Create checksum... >>> hy-doc*: Create hy-doc-0.25.0-r0.apk >>> hy*: Tracing dependencies... >>> hy*: Package size: 680.0 KB >>> hy*: Compressing data... >>> hy*: Create checksum... >>> hy*: Create hy-0.25.0-r0.apk >>> hy: Build complete at Wed, 09 Nov 2022 18:16:16 +0000 elapsed time 0h 0m 45s >>> hy: Cleaning up srcdir >>> hy: Cleaning up pkgdir >>> hy: Uninstalling dependencies... (1/40) Purging .makedepends-hy (20221109.181535) (2/40) Purging py3-funcparserlib (1.0.1-r0) (3/40) Purging py3-rply (0.7.8-r2) (4/40) Purging py3-appdirs (1.4.4-r4) (5/40) Purging py3-colorama (0.4.6-r0) (6/40) Purging py3-setuptools (65.5.1-r0) (7/40) Purging py3-sphinxcontrib-hydomain (0.1.0_git20220623-r0) (8/40) Purging py3-sphinx (5.3.0-r0) (9/40) Purging py3-babel (2.11.0-r0) (10/40) Purging py3-tz (2022.6-r0) (11/40) Purging py3-docutils (0.19-r1) (12/40) Purging py3-imagesize (1.4.1-r0) (13/40) Purging py3-jinja2 (3.1.2-r0) (14/40) Purging py3-markupsafe (2.1.1-r1) (15/40) Purging py3-pygments (2.13.0-r0) (16/40) Purging py3-requests (2.28.1-r1) (17/40) Purging py3-certifi (2022.9.24-r0) (18/40) Purging py3-charset-normalizer (3.0.0-r0) (19/40) Purging py3-idna (3.4-r2) (20/40) Purging py3-urllib3 (1.26.12-r0) (21/40) Purging py3-snowballstemmer (2.2.0-r0) (22/40) Purging py3-alabaster (0.7.12-r5) (23/40) Purging py3-sphinxcontrib-applehelp (1.0.2-r3) (24/40) Purging py3-sphinxcontrib-devhelp (1.0.2-r3) (25/40) Purging py3-sphinxcontrib-htmlhelp (2.0.0-r2) (26/40) Purging py3-sphinxcontrib-jsmath (1.0.1-r3) (27/40) Purging py3-sphinxcontrib-serializinghtml (1.1.5-r2) (28/40) Purging py3-sphinxcontrib-qthelp (1.0.3-r3) (29/40) Purging py3-sphinx_rtd_theme (1.1.0-r0) (30/40) Purging py3-wheel (0.38.3-r0) (31/40) Purging py3-packaging (21.3-r2) (32/40) Purging py3-parsing (3.0.9-r0) (33/40) Purging python3 (3.10.8-r3) (34/40) Purging libbz2 (1.0.8-r3) (35/40) Purging libffi (3.4.4-r0) (36/40) Purging gdbm (1.23-r0) (37/40) Purging xz-libs (5.2.7-r0) (38/40) Purging mpdecimal (2.5.1-r1) (39/40) Purging readline (8.2.0-r0) (40/40) Purging sqlite-libs (3.39.4-r0) Executing busybox-1.35.0-r27.trigger OK: 271 MiB in 96 packages >>> hy: Updating the testing/riscv64 repository index... >>> hy: Signing the index...