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.1.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.1-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: memtab-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 66a020b08d756e7164dfadde1f1bf55de7c0435d1f2ffa9ec74cc1f2a7195e29
MD5 d267ac74f22f1f09af459a27bce9434c
BLAKE2b-256 8433f6c9972b1b520ccb5b88c8b26cef10e5f373dc6294c1a17ba0be9e38f418

See more details on using hashes here.

Provenance

The following attestation bundles were made for memtab-1.0.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: memtab-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 37.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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 18b237a1505b76364e4f6ab31deb791ca75b8e56828a202e5758e010b12d195e
MD5 4daeced0360e84bdb8c222bc91f890b6
BLAKE2b-256 861770e57fe8da16aa51bdbbe52c758974d7c7500fa5fa4426ccf353909816df

See more details on using hashes here.

Provenance

The following attestation bundles were made for memtab-1.0.1-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