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 isTrue
;0
if if the directory exists and--merge
option isFalse
.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. Ifforce
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 inmakers.settings
.Note
Functions in
post_jobs
list are run aftersafe_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
ofstr
) –list of functions or callable object that would run after doing
Template.safe_substitute()
.Warning
Each function in the
post_jobs
should take astr
as its argument, which is, in effect, the return value of thestring.Template.safe_substitute()
.
Returns: - target_file, i.e., path of the newly created file
if successful, None otherwise.
Return type: str or None
- template (
-
-
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
classMakerMeta
is a metaclass which subclassesABCMeta
. In addition to the features of its superclassABCMeta
, This metaclass provides all subclasses ofBaseMaker
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 directoryLicenseMaker
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>¶
-
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
fileAs of now, LicenseMaker changes
LICENSE
file in the current directory, i.e., in the directory where skelpy is executed oros.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
¶
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 directoryParameters: - 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
¶
-
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
orpytest
SeeTestMaker
.
-
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
andtest_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)
-
logger
= <skelpy.utils.logger.Logger object>¶