skelpy.makers package

Collection of Maker modules

A Maker is a class that generates a template. This package also provides a package-level attribute(dict) and a function: settings and get_maker().

skelpy.makers.settings

container(dict) for sharing data across Makers

skelpy.makers.get_maker(mod_name)[source]

Given the name of a module, returns the Maker class which is defined in that module.

Parameters:mod_name (str) – name of the module in which a Maker class is defined
Returns:a Maker class–NOT an instance– if successful, otherwise None
Return type:a Maker class or None

Submodules

skelpy.makers.base module

This module defines MakerMeta and BaseMaker classes

class skelpy.makers.base.BaseMaker[source]

Bases: object

Abstract class for Maker classes

create_dir(target_dir, recursive=False)[source]

create a directory

The default mode is 0777 (octal). If the directory to create exists, this method does nothing.

Parameters:
  • target_dir (str) – directory path to create
  • recursive (bool) – create a directory recursively, i.e., makes all intermediate-level directories needed to contain the target_dir.
Returns:

1 if the directory is newly created; -1 if the directory exists and --merge option is True; 0 if if the directory exists and --merge option is False.

Return type:

int

Raises:

OSError(python 2.7) or PermissionError(python 3.x)

generate()[source]

Abstract method that all subclasses must implement.

All Maker classes should do their jobs by overriding this method.

Returns:True if successful, False otherwise
Return type:bool
logger = <skelpy.utils.logger.Logger object>
write_file(template, target_file, post_jobs=[])[source]

create a file based on the given template.

template could be a string(template-file-name) or an instance of string.Template. If the file to create exists already, the behavior of this method depends on the --force option. If force option is True, the new file will overwrite the existing file. Otherwise, it does noting.

Before writing the file, this method performs string.Template.safe_substitute() with values in makers.settings.

Note

Functions in post_jobs list are run after safe_substitute() and before writing the final target_file.

Parameters:
  • template (string.Template or str) – string.Template object or the name of a template file.
  • target_file (str) – file path to create
  • post_jobs (list of str) –

    list of functions or callable object that would run after doing Template.safe_substitute().

    Warning

    Each function in the post_jobs should take a str as its argument, which is, in effect, the return value of the string.Template.safe_substitute().

Returns:

target_file, i.e., path of the newly created file

if successful, None otherwise.

Return type:

str or None

skelpy.makers.base.Maker

alias of skelpy.makers.base.BaseMaker

class skelpy.makers.base.MakerMeta(className, superClasses, attrDict)[source]

Bases: abc.ABCMeta

Metaclass for BaseMaker class

MakerMeta is a metaclass which subclasses ABCMeta. In addition to the features of its superclass ABCMeta, This metaclass provides all subclasses of BaseMaker class with extra works of calling _export() and _get_logger() functions when they are first imported.

Parameters:
  • className (str) – class name
  • superClasses (class) – parent classes
  • attrDict (dict) – dictionary of attributes

skelpy.makers.docs module

This module defines DocMaker class

class skelpy.makers.docs.DocMaker(projectDir, merge, force, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create directories and configuration files for documentation

DocMaker creates a directory named “docs” under the project’s root directory. Below is the structure of the docs directory to be created:

project
└── docs
    ├── _build
    ├── _static
    ├── _templates
    ├── conf.py
    ├── index.rst
    ├── make.bat
    └── Makefile
Parameters:
  • projectDir (str) – path of the project directory
  • merge (bool) – Whether to overlap docs directory if the directory already exists
  • force (bool) – whether to overwrite if the file with the same name already exists
  • kwargs – extra keyword arguments
generate()[source]

Worker method of DocMaker

Returns:True if successful, False otherwise
Return type:bool
logger = <skelpy.utils.logger.Logger object>
skelpy.makers.docs.Maker

alias of skelpy.makers.docs.DocMaker

skelpy.makers.license module

This module defines LicenseMaker class.

class skelpy.makers.license.LicenseMaker(projectDir, force, license, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create LICENSE file in the project directory

LicenseMaker basically choose the license specified in setup.cfg file. But if it can not retrieve a license from the file–for example, when the user did not specify a license in setup.cfg– it creates the default license, which is the MIT license.

Parameters:
  • projectDir (str) – absolute path of project directory to create
  • force (bool) – option for overwriting if the file exists.
  • license (str) – license to create.
default_license

default license(class variable)

Type:str
default_license = 'MIT'
generate()[source]

Worker method of LicenseMaker

Returns:True if successful, False otherwise
Return type:bool
static is_supported_license(license)[source]

check to see if the license given is supported by skelpy or not

license name is case-insensitive.

Note

Currently supported licenses are:

* APACHE: Apace License
* CC0: Creative Commons License for public domain
* GPL2: GNU General Public License v2.0
* GPL3: GNU General Public License v3.0
* LGPL: GNU Lesser General Public License v2.1
* LGPL3: GNU Lesser General Public License v3.0
* MIT: MIT License, **Default**
* MOZILLA: Mozilla Public License v2.0
* NEW-BSD: New BSD(Berkeley Software Distribution) License
* SIMPLE-BSD: Simplified BSD License
* PROPRIETARY: Proprietary License
Parameters:license (str) – license name
Returns:True if the license given is supported, False otherwise
Return type:bool
logger = <skelpy.utils.logger.Logger object>
static print_licenses()[source]

print supported licenses

Returns:None
skelpy.makers.license.Maker

alias of skelpy.makers.license.LicenseMaker

skelpy.makers.license_change module

This module defines LicenseChanger class.

class skelpy.makers.license_change.LicenseChanger(list_option, license='MIT')[source]

Bases: skelpy.makers.license.LicenseMaker

Maker class to change the existing LICENSE file

As of now, LicenseMaker changes LICENSE file in the current directory, i.e., in the directory where skelpy is executed or os.getcwd():

  • LICENSE
  • setup.cfg
  • setup.py
Parameters:
  • list (bool) – if True, print the list of supported licenses without changing (default: False)
  • license (str) – license to change to
generate()[source]

Worker method of LicenseChanger

This method changes not only the LICENSE file under the project directory but also the license attribute in the setup.py and the setup.cfg accordingly if they exist.

Returns:True if successful, otherwise False
Return type:bool
logger = <skelpy.utils.logger.Logger object>
skelpy.makers.license_change.Maker

alias of skelpy.makers.license_change.LicenseChanger

skelpy.makers.package module

This module defines PackageMaker class

skelpy.makers.package.Maker

alias of skelpy.makers.package.PackageMaker

class skelpy.makers.package.PackageMaker(projectDir, projectName, format, merge, force, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create the package directory and main driver file for the package

The name of the package directory is the same as the project name. However, the structure of package directory differs depending on the --format option.

skelpy provides two kinds of package format: “basic” and “src”. The directory trees below show the differences of the two formats

basic format(default)                     src format

my_project/                               my_project/
└── my_project/                           └── src/
    ├── __init__.py                           └── my_project/
    └── main.py                                   ├── __init__.py
                                                  └── main.py
Parameters:
  • projectDir (str) – absolute path of project’s root directory
  • projectName (str) – project name
  • format (str) – type of package directory, i.e., basic or src
  • merge (bool) – whether to overlap package directory if the directory already exits
  • force (bool) – whether to overwrite if the file with the same name already exists
  • kwargs – extra keyword arguments
generate()[source]

Worker method of PackageMaker

logger = <skelpy.utils.logger.Logger object>

skelpy.makers.project module

This module defines ProjectMaker class.

skelpy.makers.project.Maker

alias of skelpy.makers.project.ProjectMaker

class skelpy.makers.project.ProjectMaker(projectDir, projectName, quiet, merge, force, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

The master Maker class responsible for creating the whole project tree

After creating the project directory, ProjectMaker creates several configuration files in the directory using the appropriate Maker. Below are the configuration files to be created:

* setup.py
* setup.cfg
* LICENSE
* README.rst
* .gitignore

Then ProjectMaker creates and runs three sub-makers: PackageMaker, DockMaker, TestMaker.

Parameters:
  • projectName (str) – project name, in effect, the directory to create.
  • projectDir (str) –

    absolute path of project directory to be created.

    Note

    projectDir should include the projectName as its last component. In other words, the following statement must be True.

    os.path.split(projectDir)[-1] == projectName
  • merge (bool) – whether to overlap the project directory if the directory already exists
  • force (bool) – whether to overwrite if the file with the same name already exists
generate()[source]

Worker method of ProjectMaker

Returns:True if successful, False otherwise
Return type:bool
logger = <skelpy.utils.logger.Logger object>

skelpy.makers.readme module

This module defines ReadmeMaker class.

skelpy.makers.readme.Maker

alias of skelpy.makers.readme.ReadmeMaker

class skelpy.makers.readme.ReadmeMaker(projectDir, projectName, force, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create README.rst file in the project directory

Parameters:
  • projectDir (str) – absolute path of the project directory
  • projectName (str) – project name
  • kwargs – extra keyword arguments
generate()[source]

Worker method of ReadmeMaker

Returns:True if successful, False otherwise
Return type:bool
logger = <skelpy.utils.logger.Logger object>

skelpy.makers.setup module

This module defines SetupMaker class

skelpy.makers.setup.Maker

alias of skelpy.makers.setup.SetupMaker

class skelpy.makers.setup.SetupMaker(projectDir, force, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create setup.py file in the project directory.

Parameters:
  • projectDir (str) – absolute path of project directory
  • force (bool) – whether to overwrite if setup.py already exists
generate()[source]

Worker method of SetupMaker

logger = <skelpy.utils.logger.Logger object>

skelpy.makers.setup_cfg module

This module defines SetupCfgMaker class.

skelpy.makers.setup_cfg.Maker

alias of skelpy.makers.setup_cfg.SetupCfgMaker

class skelpy.makers.setup_cfg.SetupCfgMaker(projectDir, projectName, format, quiet, force, test, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to creates setup.cfg in the project directory.

Parameters:
  • projectDir (str) – absolute path of project directory to be created.
  • projectName (str) – project name
  • format (str) – package format. See PackageMaker.
  • force (bool) – whether to overwrite if setup.cfg already exists
  • test (str) – testing tool to use. i.e., unittest or pytest See TestMaker.
generate()[source]

Worker method of SetupCfgMaker

logger = <skelpy.utils.logger.Logger object>

skelpy.makers.tests module

This module defines TestMaker class

skelpy.makers.tests.Maker

alias of skelpy.makers.tests.TestMaker

class skelpy.makers.tests.TestMaker(projectDir, merge, force, test, **kwargs)[source]

Bases: skelpy.makers.base.BaseMaker

Maker class to create directories and configuration files for testing

TestMaker creates a directory named tests and test_main.py file in that directory.

Parameters:
  • projectDir (str) – absolute path of project directory
  • force (bool) – whether to overwrite if test_main.py already exists
  • test (str) – testing tool to use. skelpy supports two testing tools: unittest and pytest(default)
generate()[source]

Worker method of TestMaker

logger = <skelpy.utils.logger.Logger object>