Any contribution will be appreciated. You can participate in documentation, development of modifier, imporovement of UI. providing example pdf or template.
This project use python
Sphinx + RST(reStructuredText) format. See official Sphinx document.
Structure of software#
Basically, this project is a pipe-filter type structure.
See details in Structure document about implementation and examples.
Any suggestion for this project, bug fixing, and reporting are welcomed.
In bug report, setting that generated bugs and example pdf are helpful to analyze errors in code. You can report a bug to Github Issue tracker on source repository.
Some bugs are generated from the other open source libraries that are used in the project. In this case, the developer cannot fix directly, at least the developer will notice you about them.
This project is using a code quality management software, Black. Black is an uncompromising code formatter, developed by PSF (Python Software Foundation) who are developing python.
You can choose two ways for naming objects.
_ or upper letters.
In this project, we will follow next convention.
class name: Upper Letter
class object, variable, function: with hypen _
printing_mark = PrintingMark()
- Internal methods of class(prefix):
__get: Get a specific type data
__check: Check the given variable(s) and return boolean value
__validate: Check the given variable(s) and raise error if the given values are not fit with condition.
__do: None of above things
- property and method:
property: with hypen
method: same way with internal methods but except prefixed double hypens
class SampleClass: def __int__(self, *args, **kwargs): # do something @property def sample_variable(self): return somethings @setter.sample_variable: def sample_variable(self): # set sample_variable # Method def do_things(self, *args, **kwargs): # do something # Internal method def __get_formatted_data(self, *args, **kwargs): # do something return formatted_data sample_class = SampleClass(args, kwargs) var_1 = sample_class.sample_variable sample_class.do_things(args1, kwargs1)
They can even make detailed difference for each type of usages. For example, the owner of project can restrict you to do next things whether permits or prevents with specific conditions.
Directly including whole or partial source codes to other project
Linking to other software
Redistribution including source, compiled static or dynamic library
Modifying api or whole sources … et cetera.
Before you import external libraries or source codes, you must make sure that those licenses are compatible with works that you are trying. If your work is not compatible with them you must not use (including modification) them. You can check a re-licensing term in their license description, find alternative sources, or implement their routines from ground state. If they did not mentioned about usage you are trying, you must not think these are taken as implicitly allowed. All the works of authors
Below documents will be helpful to get basic informations.
GNU essays and articles : It is considered little old in modern opensource community but thses are ground philosophy of inital era of open source world.
These project is distributed with BSD 3-clause license. See License document.