Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.7%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: anntzer
  • License: zlib
  • Language: C++
  • Default Branch: main
  • Size: 18.6 KB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 5 years ago · Last pushed over 2 years ago
Metadata Files
Readme Changelog License

README.rst

dlsym -- A cross-platform symbol locator
========================================

|GitHub| |PyPI|

.. |GitHub|
   image:: https://img.shields.io/badge/github-anntzer%2Fdlsym-brightgreen
   :target: https://github.com/anntzer/dlsym
.. |PyPI|
   image:: https://img.shields.io/pypi/v/dlsym.svg?color=brightgreen
   :target: https://pypi.python.org/pypi/dlsym

``dlsym`` allows Python C extension modules to use symbols present in already
loaded C libraries, without having to actually link these libraries.  As a
simple example, using pybind11_:

.. code-block:: cpp

   double (* my_atan2)(double, double);
   my_atan2 = reinterpret_cast(
       py::module::import("dlsym").attr("dlsym")("atan2").cast());

.. _pybind11: https://pybind11.readthedocs.io/

Obviously, linking against ``libm`` to get access to ``atan2`` is not
particularly difficult, but this approach also allows one to use e.g.
``numpy``-provided BLAS/LAPACK functions which are available after importing
``numpy`` (regardless of whether the underlying implementation is OpenBLAS,
MKL, or something else), ``fftw`` functions after importing ``pyfftw``, or
``Tcl/Tk`` functions after importing ``tkinter`` (see tests for examples).

The main goal here is to simplify the compilation of such extension modules on
machines where the C libraries may not be present by default, but where they
can be "requested" by declaring an ``install_requires`` on the corresponding
Python package.

Note that the path to the shared library is not actually passed as an argument
to ``dlsym`` (unlike the POSIX ``dlsym(3)``.  This is because the symbol search
on Windows has to enumerate all loaded modules anyways, as one cannot just
pass a module that transitively loads the symbol.  On POSIX, we thus follow
the same strategy for consistency (but enumerating all extension modules in
``sys.modules`` instead).

The path of the library where the symbol is actually defined is logged at the
INFO level.

I learned this trick from Matthew Brett's original implementation for loading
``tkinter`` into ``matplotlib``.

Owner

  • Name: Antony Lee
  • Login: anntzer
  • Kind: user

GitHub Events

Total
Last Year

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 15
  • Total Committers: 1
  • Avg Commits per committer: 15.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 4
  • Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Antony Lee a****e@g****m 15

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 4 last-month
  • Total docker downloads: 913
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 1
  • Total maintainers: 1
pypi.org: dlsym
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 4 Last month
  • Docker Downloads: 913
Rankings
Docker downloads count: 2.0%
Dependent packages count: 10.0%
Dependent repos count: 21.7%
Average: 23.7%
Forks count: 29.8%
Stargazers count: 38.8%
Downloads: 39.9%
Maintainers (1)
Last synced: 11 months ago

Dependencies

.github/workflows/build.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
pyproject.toml pypi
setup.py pypi