An open API service indexing awesome lists of open source software.

https://github.com/aboutcode-org/typecode


https://github.com/aboutcode-org/typecode

Last synced: 9 months ago
JSON representation

Awesome Lists containing this project

README

          

========
TypeCode
========

- license: Apache-2.0
- copyright: copyright (c) nexB. Inc. and others
- homepage_url: https://github.com/nexB/typecode
- keywords: filetype, mimetype, libmagic, scancode-toolkit, typecode

TypeCode provides comprehensive filetype and mimetype detection using multiple
detectors including libmagic (included as a dependency for Linux, Windows and
macOS) and Pygments. It started as library in scancode-toolkit.
Visit https://aboutcode.org and https://github.com/nexB/ for support and download.

We run CI tests on:

- Travis https://travis-ci.org/github/nexB/typecode
- Azure pipelines https://dev.azure.com/nexB/typecode/_build

To install this package with its full capability (where the binaries for
libmagic are installed), use the `full` option::

pip install typecode[full]

If you want to use the version of libmagic (possibly) provided by your operating
system, use the `minimal` option::

pip install typecode

In this case, you will need to provide a working libmagic and its database
available in one of these ways:

- **a typecode-libmagic plugin**: See the standard ones at
https://github.com/nexB/scancode-plugins/tree/main/builtins
These can either bundle a libmagic library and its magic database or expose a
system-installed libmagic.
They do so by providing a plugin entry point as a ``scancode_location_provider``
for ``typecode_libmagic`` which points to a callable that must return a mapping
with these two keys:

- 'typecode.libmagic.dll': the absolute path to a libmagic DLL
- 'typecode.libmagic.db': the absolute path to a libmagic 'magic.mgc' database

See for example:

- https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/typecode_libmagic-linux/setup.py#L42
- https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/typecode_libmagic-linux/src/typecode_libmagic/__init__.py#L32

- **environment variables**:

- TYPECODE_LIBMAGIC_PATH: the absolute path to a libmagic DLL
- TYPECODE_LIBMAGIC_DB_PATH: the absolute path to a libmagic 'magic.mgc' database

- **a system-installed libmagic and its database availale in the system PATH**:

The supported libmagic version is 5.39.

To set up the development environment::

source configure --dev

To run unit tests::

pytest -vvs -n 2

To clean up development environment::

./configure --clean

To update Pygment to a newer vendored version use vendy:

- Update the version of pygments in ``pyproject.toml``
- Run ``vendy``
- Update the src/typecpde/pygments_lexers_mapping.py
and src/typecode/pygments_lexers.py scripts accordingly, including their
ABOUT files