Metadata-Version: 2.4
Name: mypackage
Version: 0.2.1
Summary: 
Author: Alexandre MOREAU
Author-email: alexandre@mountyfox.com
Requires-Python: >=3.11
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Description-Content-Type: text/markdown

# My Package

A demonstration of how build and deploy a Python package using poetry.

## Package initilization

```
poetry new mypackage
```

- Code can now be updated
- Package vesion will be taken from the `pyproject.toml` file version field.

## Package build

```
poetry build
```

This will generate a dist folder with a whl file and a tar.gz file. The first one is the package, the second is an archive of the source files.

```
.
├── dist
│   ├── mypackage-0.1.0-py3-none-any.whl
│   └── mypackage-0.1.0.tar.gz
├── pyproject.toml
├── README.md
├── src
│   └── mypackage
│       ├── __init__.py
│       └── libmountyfox.py
└── tests
    └── __init__.py

```

## Poetry configuration to publish on local PyPi equivalent.

1. Configure the repository that Poetry can contact

```
poetry config repositories.self-forgejo https://forgejo.mountyfox.ch/api/packages/<ORG_OR_USER>/pypi
```

2. Configure authentication for that repository

```
poetry config http-basic.self-forgejo <USER> <TOKEN>
```

3. Ignore SSL certificate verification if need (if self-signed certificate on server)

```
poetry config certificates.self-forgejo.cert false
```

Note: The configuration files for poetry can be found in `~/.config/pypoetry` directory.

## Package publishing

```
poetry publish -r self-forgejo
```

```
Publishing mypackage (0.1.0) to self-forgejo
 - Uploading mypackage-0.1.0.tar.gz 0%/usr/local/lib/python3.11/dist-packages/urllib3/connectionpool.py:1110: InsecureRequestWarning: Unverified HTTPS request is being made to host 'forgejo.mountyfox.ch'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
  warnings.warn(
 - Uploading mypackage-0.1.0.tar.gz 100%
 - Uploading mypackage-0.1.0-py3-none-any.whl 0%/usr/local/lib/python3.11/dist-packages/urllib3/connectionpool.py:1110: InsecureRequestWarning: Unverified HTTPS request is being made to host 'forgejo.mountyfox.ch'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
  warnings.warn(
 - Uploading mypackage-0.1.0-py3-none-any.whl 100%
```

Then the package is uploaded to the repository server.

![mypackage](doc/assets/image01.png)

Note: independantly from the package in-build version, it is a good practice to tag the source code with the version. It helps keeping relation between deployment package distributed to users and the code repository

```
git tag 0.1.0
git push origin main --tags
```

