Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

A command line tool to provide a default scaffolding for a pythonpackage.

Project Description

yehua - Let you focus on code, instead of setup scaffolding

.. image::

.. image::

.. image::

.. image::
:alt: Join the chat at


* Are you tired of writing up files by hand? Have you ever wondered why
pypi displays raw rst file for your README?
* When you add a new library to the collection of your organization, how would
you make sure the static information are the same as others?
* How would you update static information across all packages of your
organisation? For example, one line change in your company's profile.
Copy and paste? If yes, you still live in 20th century.

**yehua** is a command line tool to provide a default scaffolding for a python package. It create a blank python package that is
usable and ready to push to github.

Future updates on your organisation's specific static information can be instantly applies the update accurately using `moban`_ . What's more, the python package is github and travis-ci friendly.

What's more, you can provide your own python package templates and your own
yehua file to customize **yehua** to meet your own needs.


You can install yehua via pip:

.. code-block:: bash

$ pip install yehua

or clone it and install it:

.. code-block:: bash

$ git clone
$ cd yehua
$ python install


.. image::
:width: 600px

Please note, since version 0.0.2, the command line is shortened. Due to
time constaints, the demo video uses `yehua` still.

Simply type in and you are taken care of::

$ yh

It will do these for you:

#. Consult you on your project static information which can update as
many as you want to.
#. Create the Python package folder structure
#. Initialize the package as git project

You will simply need to commit it after you will have reviewed the
generated files.


Let's make a python command line utility using `yehua`. The command
will be `hello` and it prints `world`. You will need to issue::

$ pip install yehua

before proceeding.

Step 1 Let's launch yehua

Step 2 Fill-in the meta data for your project

At the end, yehua generates a folder named 'hello', which contains all necessary
files for

#. installing it as a package
#. testing via nose
#. sharing it on github
#. configuring travis via github

Step 3 Inflates the meta data
Let's change to 'hello' directory


All meta data is inflated via **`moban`_ automatically**
The templates come from `setupmobans`_
Run moban. It inflates the all meta data.


Why is moban involved here? It helps reduce duplicated meta data when
your project grows. For example, yehua had this tutorial in README and in sphinx
documentation. I wrote it in one file and moban copies it to both
places. What's more, it helps further when the number of your
project grows. For example, `pyexcel`_ project has dozens of
sub projects. I wrote most of the generic documentation in
`pyexcel commons`_ and moban copies them across all sub projects.

Step 4 Start coding
Let's write up the actual code in hello/


Put in just a main() function and save it.


Why is it enough? yehua generates a command utility python and
it has pre-wired to invoke hello.main.main() function. You
can find it out in

Step 5 Install it
Now all is done. Let's install it


Step 6 Run it

Let's run it


All done.

Step 7 push to github

Suppose you are happy with everything. Please do the following to
push it to your github::

$ git init
$ git add *
$ git add .gitignore .moban.d/ .moban.yml .travis.yml
$ git commit -am ":sparkle: initial commit"

Then create your project repository in github and do these to push it out::

$ git remote add origin
$ git push origin master

You can find the `hello project`_ on github.

Step 8 enable travis

The generated project already has `.travis.yml` file. What you
will need to do is to register with if you have not
done so. And then go to travis and activate your project.

.. |slide1| image:: docs/source/_static/yehua-0.png
:scale: 100%
.. |slide2| image:: docs/source/_static/yehua-1.png
:scale: 100%
.. |slide3| image:: docs/source/_static/yehua-2.png
:scale: 100%
.. |slide4| image:: docs/source/_static/yehua-3.png
:scale: 100%
.. |slide5| image:: docs/source/_static/yehua-4.png
:scale: 100%
.. |slide6| image:: docs/source/_static/yehua-5.png
:scale: 100%
.. |slide7| image:: docs/source/_static/yehua-6.png
:scale: 100%
.. |slide8| image:: docs/source/_static/yehua-7.png
:scale: 100%
.. |slide9| image:: docs/source/_static/github.png
:scale: 60%
.. |slide10| image:: docs/source/_static/push2github.png
:scale: 60%

.. _hello project:
.. _pyexcel commons:
.. _pyexcel:
.. _moban:
.. _setupmobans:


NEW BSD License

Change log

0.0.3 - 24/02/2018


#. To add all files to a git repo is being made optional. The action is
specified in `git-repo-files` under `post-moban` section. This particular
need arises when it is used to scaffold other type of projects such as npm.

0.0.2 - 15/10/2017


#. Automatically inflate project meta data. One yehua command and typing a few
questions are required before a complete project scaffolding
#. Automatically obtain setupmobans repo for previous task.
#. Automatically initialize package as git project and add all project files for
the user to commit


#. Built-in template files are off-loaded to setupmobans, which are more
frequently updated.

0.0.1 - 02/07/2017

Release History

This version
History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(15.7 kB) Copy SHA256 Hash SHA256
Wheel 2.7 Feb 24, 2018
(12.5 kB) Copy SHA256 Hash SHA256
Source None Feb 24, 2018

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers DreamHost DreamHost Log Hosting