Skip to main content

Type annotations for LibreOffice API

Project description

This project allow typings for the full LibreOffice API

WHY

Working with LibreOffice API in a modern code editor such as Visual Studio Code there is not type support for LibreOffice API This project solves that Issue.

VERSION

This package is for Version 7.4 + of LibreOffice API.

From one version of LibreOffice to the next, geneally speaking, the API does not changed much. Because this is the case it is very likely this current version of LibreOffice API Typings will work fine with other versions of LibreOffice. This a typing package so not much can go wrong in other versions.

Installation

PIP

types-unopy on PyPI

$ pip install types-unopy

For version 7.3 (or less) of LibreOffice.

$ pip install "types-unopy<1.0"

CONDA

types-unopy on Anaconda

$ conda install -c conda-forge types-unopy

For version 7.3 (or less) of LibreOffice.

$ conda install -c conda-forge "types-unopy<1.0"

USAGE

Not all object in LibreOffice API can be directly imported.

Any UNO object that is a service cannot be imported at runtime.

For instance if you need to import SheetCellRange so it can be used as type the following will fail at runtime.

>>> from com.sun.star.sheet import SheetCellRange
ImportError: No module named 'com' (or 'com.sun.star.sheet.SheetCellRange' is unknown)

The solution is to use TYPE_CHECKING.

>>> from __future__ import annotations
>>> from typing import TYPE_CHECKING
>>> if TYPE_CHECKING:
...     from com.sun.star.sheet import SheetCellRange
...

Anything imported in the TYPE_CHECKING block will not be available at runtime. For this reason types inside the TYPE_CHECKING must be wrapped in quotes OR from __future__ import annotations must be the first line of the module.

Example of wrapping type in quotes.

def do_work(range: 'SheetCellRange') -> None: ...

Known Issues

Enums

There is no enum classes in API only enum members.

To acces the enum members they must be imported directly.

For example to import com.sun.star.beans.PropertyState.DIRECT_VALUE

If you need the behaviour of regular Enum Classes consider using ooouno

>>> from com.sun.star.beans import PropertyState
ImportError: No module named 'com' (or 'com.sun.star.beans.PropertyState' is unknown
>>>
>>> from com.sun.star.beans.PropertyState import DIRECT_VALUE
>>> DIRECT_VALUE.value
'DIRECT_VALUE'
>>>
>>> type(DIRECT_VALUE)
<class 'uno.Enum'>

Demo

Example image.

Special Cases

By default an ImportError is raised when importing form com.sun.star at runtime. This is by design as the import error triggers uno to search LibreOffice API for actual import; Othwewise, com.sun.star is seen a namesapce import and uno is ignored.

In some cases the ImportError may need to be suppressed.

Suppressing ImportError is acomplished by adding "ooouno_ignore_import_error" to environment and setting it to "True"

>>> import os
>>> os.environ["ooouno_ignore_import_error"] = "True" # must be string

When building with Sphinx and autodoc it may be necessary to exclude uno related imports. This can be accomplished using the autodoc_mock_imports option.

# docs conf.py
autodoc_mock_imports = ['uno', 'unohelper', 'com']

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

types_unopy-1.0.3.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

types_unopy-1.0.3-py3-none-any.whl (5.8 MB view details)

Uploaded Python 3

File details

Details for the file types_unopy-1.0.3.tar.gz.

File metadata

  • Download URL: types_unopy-1.0.3.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.10.5 Linux/5.19.0-35-generic

File hashes

Hashes for types_unopy-1.0.3.tar.gz
Algorithm Hash digest
SHA256 6561f9d25d7601d9494eed376c4dfeee0e3f6f40c4d0ecd7d11950cb0405979e
MD5 66e2ba07865144129ac5fd92fc4b31c2
BLAKE2b-256 4fc1cbe114061ea37dce5aafc21bd300b1f9eebbdd579c7a6161e3a35535265a

See more details on using hashes here.

File details

Details for the file types_unopy-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: types_unopy-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.10.5 Linux/5.19.0-35-generic

File hashes

Hashes for types_unopy-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ad7d7f45b9cd5237131ff88e29f41e7b4704af4c9e46d8c28001a69c4ede635a
MD5 239f9fe08503e3c9528593be47cb1ad6
BLAKE2b-256 526e1c5f05ecef6acab2e573742d4e1df175e8a696249fd5512d11becce0f2ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page