Skip to main content

ELF File Memory Tabulator

Project description

memtab is a Python-based project that provides both a command line interface (CLI) and a Python library. It is designed to produce both machine and human-readable reports from binary files in the ELF (Executable and Linkable Format) format.

For more information on the ELF file format, please refer to the Wikipedia article on ELF.

Features

  • Command Line Interface (CLI)

  • Python library

  • Generates machine-readable reports

  • Generates human-readable reports

Installation

To install memtab, you can use pip:

pip install memtab

You can also install it directly from git if desired:

pip install git+https://github.com/etn-corp/memtab.git

Usage

Command Line Interface

To use the CLI, run:

memtab --elf <path-to-elf-file> --config <path-to-yml-file>

Python Library

To use the Python library:

import memtab

tabulator = Memtab(elf_file, [config])
report = tabulator.tabulate()

print(report)  # this is a pandas dataframe at this point

GitHub Action

To use this as a GitHub Action:

- name: Memtab
  uses: etn-corp/memtab@main
  with:
      sdk_path: [YOUR_SDK_HERE]
      elf: ${{ github.workspace }}\source\build\zephyr\zephyr.elf

The action will generate the markdown output (using the –md argument) and upload that markdown as a step summary.

Developing

This project is managed using uv. For more information, refer to Astral’s page on uv.

Common Commands

  • uv sync: Sync your development environment with the project dependencies.

  • uv run <command>: Run a command within the project’s virtual environment.

  • uv build: generate a pip installable wheel or sdist file in the dist/ directory.

Running Tests

To run tests, use uv with coverage:

uv run coverage run -m pytest

Pre-commit Hooks

We use pre-commit to ensure code quality and consistency. After cloning the project, install the pre-commit hooks by running:

pre-commit install

For more information on pre-commit, visit the pre-commit website.

We also have a GitHub Action that runs pre-commit checks on every push and pull request, so you can rely on that if you prefer not to install pre-commit locally.

Contribution Guidelines

We welcome contributions! Please follow these guidelines:

  1. Fork the repository.

  2. Create a new branch (git checkout -b feature-branch).

  3. Make your changes.

  4. Commit your changes (git commit -am 'Add new feature').

  5. Push to the branch (git push origin feature-branch).

  6. Create a new Pull Request.

Reporting Issues

If you encounter any issues, please report them on the GitHub Issues page.

Generating Documentation

To generate documentation, use Sphinx:

sphinx-build docs docs/_build/html

Or, if you have poe installed, you can run:

poe docs

License

This project is licensed under the MIT License. See the LICENSE file for more information.

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

memtab-1.0.7.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

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

memtab-1.0.7-py3-none-any.whl (38.7 kB view details)

Uploaded Python 3

File details

Details for the file memtab-1.0.7.tar.gz.

File metadata

  • Download URL: memtab-1.0.7.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for memtab-1.0.7.tar.gz
Algorithm Hash digest
SHA256 070abeb1dcfa175aeb293cd5ed3869df6e9b357ab5ec342dd666add7e98a7733
MD5 38f56ec4973a19056ed388540197b0f6
BLAKE2b-256 b71604ff0b51cd0d7919b8a3152327eba5fd89723e86e2c2f56abf2c29b85f08

See more details on using hashes here.

Provenance

The following attestation bundles were made for memtab-1.0.7.tar.gz:

Publisher: publish.yml on etn-corp/memtab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file memtab-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: memtab-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 38.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for memtab-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ff7f78e0f269ddc587c71b7ebdbb2a501f3a30d522551cbcd86e8351a7a7b5cd
MD5 d4f973d434a6b4931b4ed590ead3c25c
BLAKE2b-256 7c5e2f18d158519f4ea5e13e352cfc0dd612df502b9d1a82d34cad28a984f811

See more details on using hashes here.

Provenance

The following attestation bundles were made for memtab-1.0.7-py3-none-any.whl:

Publisher: publish.yml on etn-corp/memtab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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