anki.utils
==========

.. py:module:: anki.utils


Attributes
----------

.. autoapisummary::

   anki.utils.to_json_bytes
   anki.utils.is_mac
   anki.utils.is_win
   anki.utils.is_lin
   anki.utils.is_gnome
   anki.utils.dev_mode
   anki.utils.hmr_mode
   anki.utils.INVALID_FILENAME_CHARS
   anki.utils.point_version
   anki.utils.pointVersion


Functions
---------

.. autoapisummary::

   anki.utils.int_time
   anki.utils.strip_html
   anki.utils.strip_html_media
   anki.utils.html_to_text_line
   anki.utils.ids2str
   anki.utils.timestamp_id
   anki.utils.max_id
   anki.utils.base62
   anki.utils.base91
   anki.utils.guid64
   anki.utils.join_fields
   anki.utils.split_fields
   anki.utils.checksum
   anki.utils.field_checksum
   anki.utils.tmpdir
   anki.utils.tmpfile
   anki.utils.namedtmp
   anki.utils.no_bundled_libs
   anki.utils.call
   anki.utils.invalid_filename
   anki.utils.plat_desc
   anki.utils.version_with_build
   anki.utils.int_version
   anki.utils.int_version_to_str


Module Contents
---------------

.. py:data:: to_json_bytes
   :type:  collections.abc.Callable[[Any], bytes]

.. py:function:: int_time(scale: int = 1) -> int

   The time in integer seconds. Pass scale=1000 to get milliseconds.


.. py:function:: strip_html(txt: str) -> str

.. py:function:: strip_html_media(txt: str) -> str

   Strip HTML but keep media filenames


.. py:function:: html_to_text_line(txt: str) -> str

.. py:function:: ids2str(ids: collections.abc.Iterable[int | str]) -> str

   Given a list of integers, return a string '(int1,int2,...)'.


.. py:function:: timestamp_id(db: anki.dbproxy.DBProxy, table: str) -> int

   Return a non-conflicting timestamp for table.


.. py:function:: max_id(db: anki.dbproxy.DBProxy) -> int

   Return the first safe ID to use.


.. py:function:: base62(num: int, extra: str = '') -> str

.. py:function:: base91(num: int) -> str

.. py:function:: guid64() -> str

   Return a base91-encoded 64bit random number.


.. py:function:: join_fields(list: join_fields.list[str]) -> str

.. py:function:: split_fields(string: str) -> list[str]

.. py:function:: checksum(data: bytes | str) -> str

.. py:function:: field_checksum(data: str) -> int

.. py:function:: tmpdir() -> str

   A reusable temp folder which we clean out on each program invocation.


.. py:function:: tmpfile(prefix: str = '', suffix: str = '') -> str

.. py:function:: namedtmp(name: str, remove: bool = True) -> str

   Return tmpdir+name. Deletes any existing file.


.. py:function:: no_bundled_libs() -> collections.abc.Iterator[None]

.. py:function:: call(argv: list[str], wait: bool = True, **kwargs: Any) -> int

   Execute a command. If WAIT, return exit code.


.. py:data:: is_mac
   :value: False


.. py:data:: is_win
   :value: False


.. py:data:: is_lin
   :value: True


.. py:data:: is_gnome

.. py:data:: dev_mode

.. py:data:: hmr_mode

.. py:data:: INVALID_FILENAME_CHARS
   :value: ':*?"<>|'


.. py:function:: invalid_filename(str: invalid_filename.str, dirsep: bool = True) -> invalid_filename.str | None

.. py:function:: plat_desc() -> str

.. py:function:: version_with_build() -> str

.. py:function:: int_version() -> int

   Anki's version as an integer in the form YYMMPP, e.g. 230900.
   (year, month, patch).
   In 2.1.x releases, this was just the last number.


.. py:function:: int_version_to_str(ver: int) -> str

.. py:data:: point_version

.. py:data:: pointVersion

