Metadata-Version: 2.4
Name: ll-la
Version: 0.64.0
Summary: Python API for LivingApps
Home-page: http://github.com/LivingLogic/LivingApps.Python.LivingAPI
Author: Walter Doerwald
Author-email: walter@livinglogic.de
License: MIT
Keywords: LivingApps
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.14
License-File: LICENSE.txt
Requires-Dist: ll-xist>=5.89
Requires-Dist: requests>=2.21.0
Requires-Dist: geocoder>=1.30.1
Requires-Dist: Pillow>=6.1.0
Requires-Dist: validators>=0.18.2
Provides-Extra: db
Requires-Dist: oracledb>=4.0.1; extra == "db"
Requires-Dist: psycopg[binary]>=3.0.5; extra == "db"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

``ll.la`` provides a Python API for the LivingApps system
(see http://www.living-apps.de/ or http://www.living-apps.com/ for more info).

``ll.la`` allows you to fetch the configured data sources from a template,
create new records, and update and delete existing records all from your Python
prompt (or script).

For more info about LivingApps and this Python SDK, see
https://my.living-apps.de/docs/PythonSDK.html (in german).


0.64.0
------

* ``AppLang.save()`` (i.e. ``app.translations[lang].save()``) now saves the
  noun forms of the type name (``typenames``) too: Each form in the
  dictionary is created or updated in the database, all other forms of the
  translation are deleted (this requires the new procedures
  ``livingapi_pkg.typenameform_merge`` and
  ``livingapi_pkg.templatelang_keeptypenameform``). Forms whose type name is
  ``None`` count as deleted.

* ``AppLang.typenames`` can now be set from UL4 (to a dict or ``None``) and
  is an empty dictionary for a new translation (instead of ``None``).

* ``App`` has a new method ``typename(form)`` that returns the type name in
  the noun form ``form`` (e.g. ``nom_sin`` for nominative singular) for the
  current language: the form from ``translations[globals.lang]`` wins, then
  the form from the translation for the system language ``app.lang``, then
  the (German) form stored in the app itself. If none of them has the form
  ``None`` is returned. The read-only attribute ``App.typenames`` (added in
  0.63.0) has been removed again.

* The eight ``typename_*`` attributes of ``App`` use the same lookup as
  ``typename()``, but are now read-only in UL4: the forms are set via
  ``translations[lang].typenames`` and saved via ``translations[lang].save()``.
  ``app.typename_grammatical_gender`` is read-only in UL4 too and is set via
  ``translations[lang].typename_grammatical_gender``.


