Ordinary twine can be easily used:

$ twine upload
    --repository-url http://gocheese.host:8080/simple/ \
    --username spam --password foo dist/tarball.tar.gz

Also you can permanently configure it:

repository: https://gocheese.host/simple/
username: spam
password: foo

All metadata information sent by twine is stored on the disk. Package creation time will be server’s current time. If twine send package checksums, then they are checked against. GPG signature file is also saved.