Skip to content

Instantly share code, notes, and snippets.

@djetelina
Last active October 11, 2016 06:07
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djetelina/b090a073145589398a31da32b58f8218 to your computer and use it in GitHub Desktop.
Save djetelina/b090a073145589398a31da32b58f8218 to your computer and use it in GitHub Desktop.
Feedback wanted

pyProjectManage

https://github.com/iScrE4m/Dispenser

https://github.com/iScrE4m/Dispenser

https://github.com/iScrE4m/Dispenser

Goal

Graphical interface for python project management. NOT AN IDE. Just a tool to easily - with few clicks generate project structure and few relatively static files and keep those up to date, more below.

Needs to be fully integrated with OS and take care of it's dependencies (git, virtualenv, pip). This means it's going to be much harder for windows - possibly impossible - and can't be a webapp (or can webapps call subprocesses? maybe run local flask app as GUI? webapp is much easier to maintain as GUI than pyqt/tkinter etc. but running on localhost is a bit unprofessional and custom browser is definition of bloating or allow ssh and have it online? Whatever the choice, DO INCLUDE REMOTE ENVIRONMENTS VIA SSH!)

Should be able to open an existing project and find compatible stuff, offer the rest

Plugins plugins plugins! Don't want bloated core. And letting others do what I'd do is cool. No but seriously, stay lightweight, few kB, everything should be EASY. Plugins however should be INTEGRATED IN THE APP, ONE CLICK INSTALL (and uninstall)! Provide templating for the files - one default, people can choose custom and have setup.py look different

Brief overview

  • Easily start and setup python project - keep it up to date across all the files
    • setup.py
    • tests/
    • docs/
    • virtualenv(s) and environmental variables manager
    • git (with ignore) - not a git gui, just generate and ability to manage .gitignore file, maybe connect tag to version management
    • metadata (not only pypi metadata, but also version, author, copyright, license, changelogs)
    • readme
    • sphinx
    • dependencies management - checker for new versions, compatibility warnings based on their dependencies
      • keep dependencies separate for: consumer, testing, development
    • sdist, bdist, twine
    • Coverage, Test checker
    • Button to start a shell in the project (with virtualenv active)
  • Support for plugins to implement various CI, testing methods, layouts, etc.
    • .travis.yml
    • .codeclimate.yml
    • autoenv (actually maybe have this in core, linux plebs should know how awesome it is)
  • Possible support for 'export' plugins - check compatibility based on dependencies? Is it possible? No experience.
    • Heroku
    • Windows
    • Apt, Yum and other unix package managers
    • OS X
    • Android
    • iOS
    • bat, make, bash? Who knows. That's why plugins

GUI

The least fun part. Can I get a gui designer and just care about the logic and design? Are others as reliable when it's my project?

Can't use Kivy - need multiple windows and popups, one window with widget is not ideal. Multimonitor setup etc. Kivy would be easier tho.

TODO

EVERYTHING. Get some feedback first. Possibly share as a github project's readme, start creating issues, start slow, thought through. With people to guide/help. Also possibly think of a better name. Cause having everything be called pySomeStuff is gonna get boring. At the same time think of SEO and memorability.

DEVELOPMENT

Open to everybody, license gonna be MIT, feedback and issues contribution/discussion is just as valuable as programming itself.

NOTES

Possibly Test Driven Development. Should be fun, easy and possible to create functional tests - I want to do that! Just call function with some params and parse the resulting file. FUN.

@djetelina
Copy link
Author

Glyph suggested using Toga for GUI - explore if it offers enough

He also suggested twisted - I'll have to think through what would it be needed for. If possible, stay with asyncio - easier to write

@djetelina
Copy link
Author

After checking out Toga a bit more - it's pretty sure I'm going to go with it. I should also check out more of PyBeeWare's projects, so I don't work on stuff that already exist - for stuff like exporting etc.

@russellballestrini
Copy link

russellballestrini commented Oct 9, 2016

I'm not sure it covers everything you want this project to do, but I briefly used paste templates to build a python skeleton project which could be used as a starting point for other projects. The Pylons community (although they do not directly mantain paste) wrote some lovely docs here:

http://docs.pylonsproject.org/projects/pylons-webframework/en/latest/advanced_pylons/creating_paste_templates.html

Additionally for plugins they also wrote this doc:

http://docs.pylonsproject.org/projects/pylons-webframework/en/latest/advanced_pylons/entry_points_and_plugins.html

I've used this plugin pattern for http://botoform.com and https://github.com/russellballestrini/happymon

@djetelina
Copy link
Author

djetelina commented Oct 11, 2016

Thanks everyone, there's now a github repo-> https://github.com/iScrE4m/Dispenser

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment