Merci @dancergraham,
Il y a manifestement d’autres soucis:
(fabien_lib) ~/fabien_lib jt'écoute :python3 -m twine upload --repository testpypi dist/* --verbose
Using configuration from /home/fab/.pypirc
Uploading distributions to https://test.pypi.org/legacy/
dist/fabien_lib-0.0.1-py3-none-any.whl (2.5 KB)
dist/fabien_lib-0.0.1-py3.8.egg (3.2 KB)
dist/fabien_lib-0.0.1.tar.gz (3.2 KB)
Enter your username: pseudofab
Enter your password:
username: pseudofab
password: <hidden>
Uploading fabien_lib-0.0.1-py3-none-any.whl
100%|██████████████████████████████| 6.55k/6.55k [00:00<00:00, 6.75kB/s]
Content received from server:
<html>
<head>
<title>400 File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.</title>
</head>
<body>
<h1>400 File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.</h1>
The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/>
File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.
</body>
</html>
HTTPError: 400 Bad Request from https://test.pypi.org/legacy/
File already exists. See https://test.pypi.org/help/#file-name-reuse for more information.
(fabien_lib) ~/fabien_lib jt'écoute :
voici le contenu actuel de setup.py:
(fabien_lib) ~/fabien_lib jt'écoute :cat setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
# notez qu'on import la lib
# donc assurez-vous que l'importe n'a pas d'effet de bord
import fabien_lib
# Ceci n'est qu'un appel de fonction. Mais il est trèèèèèèèèèèès long
# et il comporte beaucoup de paramètres
setup(
# le nom de votre bibliothèque, tel qu'il apparaitre sur pypi
name='fabien_lib',
# la version du code
version=fabien_lib.__version__,
# Liste les packages à insérer dans la distribution
# plutôt que de le faire à la main, on utilise la foncton
# find_packages() de setuptools qui va cherche tous les packages
# python recursivement dans le dossier courant.
# C'est pour cette raison que l'on a tout mis dans un seul dossier:
# on peut ainsi utiliser cette fonction facilement
packages=find_packages(),
# votre pti nom
author="fabien /Sam et Max",
# Votre email, sachant qu'il sera publique visible, avec tous les risques
# que ça implique.
author_email="moi@e-nautia.com",
# Une description courte
description="Proclame la bonne parole de sieurs Sam et Max",
# Une description longue, sera affichée pour présenter la lib
# Généralement on dump le README ici
long_description= open('README.md').read(),
long_description_content_type='text/markdown',
# Vous pouvez rajouter une liste de dépendances pour votre lib
# et même préciser une version. A l'installation, Python essayera de
# les télécharger et les installer.
#
# Ex: ["gunicorn", "docutils >= 0.3", "lxml==0.5a7"]
#
# Dans notre cas on en a pas besoin, donc je le commente, mais je le
# laisse pour que vous sachiez que ça existe car c'est très utile.
# install_requires= ,
# Active la prise en compte du fichier MANIFEST.in
#Definition list ends without a blank line; unexpected unindent.
include_package_data=True,
# Une url qui pointe vers la page officielle de votre lib
url='http://github.com/pseudofab/fabien_lib', #non crée
# Il est d'usage de mettre quelques metadata à propos de sa lib
# Pour que les robots puissent facilement la classer.
# La liste des marqueurs autorisées est longue:
# https://pypi.python.org/pypi?%3Aaction=list_classifiers.
#
# Il n'y a pas vraiment de règle pour le contenu. Chacun fait un peu
# comme il le sent. Il y en a qui ne mettent rien.
classifiers=[
"Programming Language :: Python",
"Development Status :: 1 - Planning",
"License :: OSI Approved",
"Natural Language :: French",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.8",
"Topic :: Communications",
],
# C'est un système de plugin, mais on s'en sert presque exclusivement
# Pour créer des commandes, comme "django-admin".
# Par exemple, si on veut créer la fabuleuse commande "proclame-sm", on
# va faire pointer ce nom vers la fonction proclamer(). La commande ser
# créé automatiquement.
# La syntaxe est "nom-de-commande-a-creer = package.module:fonction".
entry_points = {
'console_scripts': [
'proclame-sm = fabien_lib.core:proclamer',
],
},
# A fournir uniquement si votre licence n'est pas listée dans "classifiers"
# ce qui est notre cas
license="WTFPL",
# Il y a encore une chiée de paramètres possibles, mais avec ça vous
# couvrez 90% des besoins
)
(fabien_lib) ~/fabien_lib jt'écoute :
Il doit y avoir une façon de faire périmée, je vais étudier le tutoriel pour essayer de voir où se situe le problème …