Metadata-Version: 2.4
Name: getargv
Version: 0.21
Summary: Python bindings to libgetargv, a library to correctly and quickly get other process's args
Home-page: https://getargv.narzt.cam
Author: Camden Narzt
Author-email: Camden Narzt <getargv@narzt.cam>
Project-URL: Repository, https://github.com/getargv/getargv.py
Project-URL: Issues, https://github.com/getargv/getargv.py/issues
Project-URL: Homepage, https://getargv.narzt.cam
Project-URL: Documentation, https://getargv.github.io/getargv.py
Project-URL: Funding, https://github.com/sponsors/CamJN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python
Classifier: Programming Language :: C
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Dynamic: author
Dynamic: home-page
Dynamic: license-file

<h1><img src="logo.svg" width="200" alt="getargv"></h1>

[![Python package](https://github.com/getargv/getargv.py/actions/workflows/python-package.yml/badge.svg)](https://github.com/getargv/getargv.py/actions/workflows/python-package.yml)

This module uses libgetargv to obtain binary string representations of the arguments of other processes on macOS.

## Motivation

On macOS you must use the KERN_PROCARGS2 sysctl to obtain other proc's args, however the returned representation is badly documented and a naive approach doesn't deal with leading empty args. libgetargv parses the results of the sysctl correctly, and this module provides Python bindings to libgetargv.

## Installation

Install the module with pip by executing:

    $ pip install getargv

## Usage

```python
import os
import getargv
getargv.as_bytes(os.getpid()) #=> b'arg0\x00arg1\x00'
getargv.as_list(os.getpid()) #=> [b'arg0',b'arg1']
```

## Development

After checking out the repo, run `python setup.py build`. Then run `python setup.py install`. Then, run `python test.py` to run the tests. You can also run `python -i load.py` for an interactive prompt that will allow you to experiment. Python code goes in the file `src/getargv/__init__.py`, C code goes in the file `src/getargv/getargvmodule.c`.

To install this module onto your local machine, run `python setup.py build && python setup.py install`. To release a new version, update the version number in `pyproject.toml`, and then run `make upload-production`, which will create a git tag for the version, push git commits and the created tag, and push the `.whl` file to [pypi.org](https://pypi.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/getargv/getargv.py.

## License

The module is available as open source under the terms of the [BSD 3-clause License](https://opensource.org/licenses/BSD-3-Clause).
