semvec/pypi-packages huggingface dataset:
packagedeployment2 0.0.2
A small example package
Requires Python: >=3.6


# Make sure you have upgraded version of pip
Windows
```
py -m pip install --upgrade pip
```

Linux/MAC OS
```
python3 -m pip install --upgrade pip
```

## Create a project with the following structure
```
packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── setup.cfg
├── src/
│   └── example_package/
│       ├── __init__.py
│       └── example.py
└── tests/
touch LICENSE
touch pyproject.toml
touch setup.cfg
mkdir src/mypackage
touch src/mypackage/__init__.py
touch src/mypackage/main.py
mkdir tests
```

## pyproject.toml 

This file tells tools like pip and build how to create your project

```
[build-system]
requires = [
    "setuptools>=42",
    "wheel"
]
build-backend = "setuptools.build_meta"
```
build-system.requires gives a list of packages that are needed to build your package. Listing something here will only make it available during the build, not after it is installed.

build-system.build-backend is the name of Python object that will be used to perform the build. If you were to use a different build system, such as flit or poetry, those would go here, and the configuration details would be completely different than the setuptools configuration described below.


# Setup.cfg setup
Using setup.cfg is a best practice, but you could have a dynamic setup file using setup.py

```
[metadata]
name = example-pkg-YOUR-USERNAME-HERE
version = 0.0.1
author = Example Author
author_email = author@example.com
description = A small example package
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/pypa/sampleproject
project_urls =
    Bug Tracker = https://github.com/pypa/sampleproject/issues
classifiers =
    Programming Language :: Python :: 3
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent

[options]
package_dir =
    = src
packages = find:
python_requires = >=3.6

[options.packages.find]
where = src

```
# Running the build
### Make sure your build tool is up to date
Windows
```
py -m pip install --upgrade build
```
Linux/MAC OS
```
python3 -m pip install --upgrade build
```


### Create the build
```
py -m build
```













### References
https://packaging.python.org/tutorials/packaging-projects/
stega-saurus-py 0.0.1a5
A steganography CLI
Requires Python: >=3.7.2

# stega-saurus
A CLI to perform steganography


## Installation

```
pip install stega-saurus-py
```

## Usage

### Command help

View help and available commands for the `stega` CLI

```
python -m stega --help
```

View command help, in this case `textimg` and it's sub commands

```
python -m stega textimg --help
```

giving output

```
Usage: stega textimg [OPTIONS] COMMAND [ARGS]...

  Stega-saurus text image steganography

Options:
  --version
  --help     Show this message and exit.

Commands:
  decode  Decode a message from an image
  encode  Encode a message using an image output as a PNG
```

that lists the `textimg` command's sub commands `encode` and `decode`.

View a sub command's help e.g. the `encode` sub command of `textimg`

```
python -m stega textimg encode --help
``` 

producing the output with full sub command usage

```
Usage: stega textimg encode [OPTIONS] IN_IMAGE_PATH OUT_IMAGE_PATH MSG

  Encode a message using an image output as a PNG

Arguments:
  IN_IMAGE_PATH   Original image path to use in encoding  [required]
  OUT_IMAGE_PATH  Output image path to encode the message into (file
                  extension ignored, image will be a png)  [required]
  MSG             Message to encode in to the image  [required]

Options:
  --help  Show this message and exit.
```


### Text image steganography

Encode a message in an image, outputting the result as a png 

```
python -m stega textimg encode ~/Desktop/inimg.jpg ~/Desktop/outimg.png "Your secret message goes here"
```

This command will produce output that contains a key that will need to be used to decode the message from the png image

```
stega-saurus text image steganography encode
Encoding...
Done encoding
Decode key: cj
``` 

To decode the message from the image above run the `textimg`  `decode` command and decode key

```
python -m stega textimg decode ~/Desktop/outimg.png cj
```

outputting the encoded message 

```
stega-saurus text image steganography decode
Decoding...
Done decoding
Encoded message:
Your secret message goes here
```