Package: easypypi
easyPyPIeasyPyPI(Pronounced "Easy Pie-Pea-Eye") is a quick, simple, one-size-fits-all solution for sharing your Python creations on thePython Package Index(PyPI) so others can justpip install your_scriptwith no fuss.easyPyPIis mainly intended for Pythonistas who've been put off publishing toPyPIbefore now or tried it but, like the author (pictured below) thought:"Theremustbe an easier way to do this!"Well now there is!  WitheasyPyPIyou don't have to spend hours...Reading tutorials aboutdistutilsonly to realisesetuptoolsis what you need.Reading yet more tutorials just to work out the essential steps (below).Manually creating a folder structure and moving your script(s) there.Manually creating a skeletonREADME.mdManually creating a skeleton__init__.pyManually creating a skeletontest_yourscript.pyManually creating and updating aLICENSEManually creating asetup.pyscript and wondering what on earth to put in itRemembering to update your Version number each time you publishRunningsetup.pyin just the right way to create your distribution filesInstalling and runningtwinein just the right way to publish your package toTest PyPIthenPyPICreating a new Repository on Github and uploading the folders and files you just created.Setting environment variables or creating a.pypircfile fortwineto useGetting yourTest PyPIandPyPIcredentials mixed upEnjoy!1. QUICKSTARTc:\> pip install easypypi

>>> from easypypi import packageThen just follow the prompts to provide the information required to describe your package onPyPI.  No knowledge ofsetuptools,twine, or how to write asetup.pyscript required.Once you've gone through the creation process fully (or even partially), your responses are stored in a JSON config file located in the 'usual' settings folder for your Operating System.  When you start againeasyPyPIwill helpfully remember your previous answers.When you've added all the information you want to include with your package, click theUpversionbutton to update yourPEP440compliant version number as required, then click theGeneratebutton to create a basic folder structure and populate it with all the standard files you'll need such as a README and LICENSE.The next time you runeasyPyPIwith an existing package name and folder location, it will automatically import the contents of the latestsetup.pyfile it finds (in preference toconfig.json), so if you want you can make updates directly tosetup.pybut be careful to keep the same basic format soeasyPyPIhas a chance of finding what it needs!Finally, when you're ready you canPublishyour package folders and files to PyPI and/or Test PyPI, and even automatically create an initial Repository on Github.  There are buttons for quickly Registering for a PyPI, Test PyPI, and/or Github account if you don't already have that sorted, and also for installing Git if it's your first time using that too.2. UPDATING YOUR PACKAGEFor more precise control you can close the GUI after creating yourpackageobject, and manually get and set all of the data encapsulated in it.  Thanks to the magic ofcleverdictyou can do thiseitherusingobject.attributeordictionary['key']notation, whichever you prefer:>>> package.name
'as_easy_as_pie'

>>> package['email'] = "new@name.com"

>>> package['license_dict'].name
'MIT License'

>>> package.version = "2.0.1a1"3. OTHER FEATURESTo find whereeasyPyPIand its default templates were installed:>>> package.easypypi_dirpathTo find the location of your JSON config file to manually inspect,  edit, oros.remove()it:>>> package.config_path
# This should be under the default Settings folder for your Operating System.To locate your package'ssetup.py:>>> package.setup_filepathIf you have extra files which you want to copy into the new folder structure, including the main script file you might have already created before deciding to make it into a package:>>> package.copy_other_files()To see what else you can play with using yourPackageobject:>>> package.keys()
# You can then get/set values using object.attribute or dictionary['key'] notationesyPyPIuseskeyringto store credentials.  To manage these credentials manually:>>> account = "Github"  # or "PyPI" or "Test_PyPI"
>>> package.Github_username = "testuser"

>>> package.get_username(account) == package.Github_username == "testuser"
True

>>> package.set_password(account, "testpw")  # Prompts for pw if none given
True

>>> package.Github_password
'testpw'

>>> package.delete_credentials(account)4. FEEDBACK AND CONTRIBUTINGI'd be delighted to hear any suggestions, bug reports, or comments in the form of a Github ISSUE, and if you've foundeasyPyPIuseful or merely interesting please do click the "Star" button.  It really raises my spirits to see that kind of feedback.If you're in paid employment andeasyPyPIhas saved you even 30 minutes' effort, please consider how much this gift equates to based on your daily/hourly rate, and whether it might feel good to spend a minute of your own time leaving a nice comment on BuyMeaCoffee.com?  Thank you.5. CREDITSMany thanks to the creators of the following awesome packages thateasyPyPImakes use of 'under the bonnet':PySimpleGUI-- used to built a nice interface that makes things even quicker and easier.Click-- used to get the most suitable (platform specific) folder path for storing config.json.MechanicalSoup-- used to automatically login to Github and create/push an initial repository.Keyring-- used to store and retrieve account credentials securely.pep440_version_utils---  used to automatically upversion micro, minor, and major version numbers.Twine- the "Go To" utility for uploading packages securely to PyPI and Test PyPI.6. PAYING IT FORWARDIfeasyPyPIhelps you save time and focus on more important things, please show your appreciation by at least starring this repository on Github or even better:Yummy - thank you!