1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,7 @@
 | 
				
			|||||||
*.pyc
 | 
					*.pyc
 | 
				
			||||||
.ropeproject
 | 
					.ropeproject
 | 
				
			||||||
__pycache__
 | 
					__pycache__
 | 
				
			||||||
 | 
					docs/_build
 | 
				
			||||||
build
 | 
					build
 | 
				
			||||||
daemonize.egg-info
 | 
					daemonize.egg-info
 | 
				
			||||||
dist
 | 
					dist
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,6 @@
 | 
				
			|||||||
include MANIFEST.in
 | 
					include MANIFEST.in
 | 
				
			||||||
include README.md
 | 
					include README.rst
 | 
				
			||||||
include LICENSE
 | 
					include LICENSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					graft docs
 | 
				
			||||||
 | 
					recursive-exclude docs *.pyc *.pyo
 | 
				
			||||||
							
								
								
									
										56
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								README.md
									
									
									
									
									
								
							@@ -1,56 +0,0 @@
 | 
				
			|||||||
# daemonize [](http://travis-ci.org/thesharp/daemonize)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Description
 | 
					 | 
				
			||||||
**daemonize** is a library for writing system daemons in Python. It has some bits from [daemonize.sourceforge.net](http://daemonize.sourceforge.net). It is distributed under MIT license.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Dependencies
 | 
					 | 
				
			||||||
It is tested under following Python versions:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- 2.6
 | 
					 | 
				
			||||||
- 2.7
 | 
					 | 
				
			||||||
- 3.3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Installation
 | 
					 | 
				
			||||||
You can install it from Python Package Index (PyPI):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	$ pip install daemonize
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Usage
 | 
					 | 
				
			||||||
```python
 | 
					 | 
				
			||||||
from time import sleep
 | 
					 | 
				
			||||||
from daemonize import Daemonize
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pid = "/tmp/test.pid"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def main():
 | 
					 | 
				
			||||||
    while True:
 | 
					 | 
				
			||||||
        sleep(5)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
daemon = Daemonize(app="test_app", pid=pid, action=main)
 | 
					 | 
				
			||||||
daemon.start()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## File descriptors
 | 
					 | 
				
			||||||
Daemonize object's constructor understands the optional argument **keep_fds** which contains a list of FDs which should not be closed. For example:
 | 
					 | 
				
			||||||
```python
 | 
					 | 
				
			||||||
import logging
 | 
					 | 
				
			||||||
from daemonize import Daemonize
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pid = "/tmp/test.pid"
 | 
					 | 
				
			||||||
logger = logging.getLogger(__name__)
 | 
					 | 
				
			||||||
logger.setLevel(logging.DEBUG)
 | 
					 | 
				
			||||||
logger.propagate = False
 | 
					 | 
				
			||||||
fh = logging.FileHandler("/tmp/test.log", "w")
 | 
					 | 
				
			||||||
fh.setLevel(logging.DEBUG)
 | 
					 | 
				
			||||||
logger.addHandler(fh)
 | 
					 | 
				
			||||||
keep_fds = [fh.stream.fileno()]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def main():
 | 
					 | 
				
			||||||
    logger.debug("Test")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
daemon = Daemonize(app="test_app", pid=pid, action=main, keep_fds=keep_fds)
 | 
					 | 
				
			||||||
daemon.start()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
							
								
								
									
										80
									
								
								README.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								README.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					daemonize |Build Status|
 | 
				
			||||||
 | 
					========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**daemonize** is a library for writing system daemons in Python. It has
 | 
				
			||||||
 | 
					some bits from
 | 
				
			||||||
 | 
					`daemonize.sourceforge.net <http://daemonize.sourceforge.net>`__. It is
 | 
				
			||||||
 | 
					distributed under MIT license.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dependencies
 | 
				
			||||||
 | 
					------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is tested under following Python versions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-  2.6
 | 
				
			||||||
 | 
					-  2.7
 | 
				
			||||||
 | 
					-  3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Installation
 | 
				
			||||||
 | 
					------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can install it from Python Package Index (PyPI):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ pip install daemonize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Usage
 | 
				
			||||||
 | 
					-----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    from time import sleep
 | 
				
			||||||
 | 
					    from daemonize import Daemonize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pid = "/tmp/test.pid"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def main():
 | 
				
			||||||
 | 
					        while True:
 | 
				
			||||||
 | 
					            sleep(5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    daemon = Daemonize(app="test_app", pid=pid, action=main)
 | 
				
			||||||
 | 
					    daemon.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					File descriptors
 | 
				
			||||||
 | 
					----------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Daemonize object's constructor understands the optional argument
 | 
				
			||||||
 | 
					**keep\_fds** which contains a list of FDs which should not be closed.
 | 
				
			||||||
 | 
					For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    import logging
 | 
				
			||||||
 | 
					    from daemonize import Daemonize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pid = "/tmp/test.pid"
 | 
				
			||||||
 | 
					    logger = logging.getLogger(__name__)
 | 
				
			||||||
 | 
					    logger.setLevel(logging.DEBUG)
 | 
				
			||||||
 | 
					    logger.propagate = False
 | 
				
			||||||
 | 
					    fh = logging.FileHandler("/tmp/test.log", "w")
 | 
				
			||||||
 | 
					    fh.setLevel(logging.DEBUG)
 | 
				
			||||||
 | 
					    logger.addHandler(fh)
 | 
				
			||||||
 | 
					    keep_fds = [fh.stream.fileno()]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def main():
 | 
				
			||||||
 | 
					        logger.debug("Test")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    daemon = Daemonize(app="test_app", pid=pid, action=main, keep_fds=keep_fds)
 | 
				
			||||||
 | 
					    daemon.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					API
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. automodule:: daemonize
 | 
				
			||||||
 | 
					    :members:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. |Build Status| image:: https://secure.travis-ci.org/thesharp/daemonize.png
 | 
				
			||||||
 | 
					   :target: http://travis-ci.org/thesharp/daemonize
 | 
				
			||||||
							
								
								
									
										48
									
								
								daemonize.py
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								daemonize.py
									
									
									
									
									
								
							@@ -12,24 +12,30 @@ import atexit
 | 
				
			|||||||
from logging import handlers
 | 
					from logging import handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__version__ = "2.3.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Daemonize(object):
 | 
					class Daemonize(object):
 | 
				
			||||||
    """ Daemonize object
 | 
					    """
 | 
				
			||||||
    Object constructor expects three arguments:
 | 
					    Daemonize object.
 | 
				
			||||||
    - app: contains the application name which will be sent to syslog.
 | 
					
 | 
				
			||||||
    - pid: path to the pidfile.
 | 
					    Object constructor expects three arguments.
 | 
				
			||||||
    - action: your custom function which will be executed after daemonization.
 | 
					
 | 
				
			||||||
    - keep_fds: optional list of fds which should not be closed.
 | 
					    :param app: contains the application name which will be sent to syslog.
 | 
				
			||||||
    - auto_close_fds: optional parameter to not close opened fds.
 | 
					    :param pid: path to the pidfile.
 | 
				
			||||||
    - privileged_action: action that will be executed before drop privileges if user or
 | 
					    :param action: your custom function which will be executed after daemonization.
 | 
				
			||||||
                         group parameter is provided.
 | 
					    :param keep_fds: optional list of fds which should not be closed.
 | 
				
			||||||
                         If you want to transfer anything from privileged_action to action, such as
 | 
					    :param auto_close_fds: optional parameter to not close opened fds.
 | 
				
			||||||
                         opened privileged file descriptor, you should return it from
 | 
					    :param privileged_action: action that will be executed before drop privileges if user or
 | 
				
			||||||
                         privileged_action function and catch it inside action function.
 | 
					                              group parameter is provided.
 | 
				
			||||||
    - user: drop privileges to this user if provided.
 | 
					                              If you want to transfer anything from privileged_action to action, such as
 | 
				
			||||||
    - group: drop privileges to this group if provided.
 | 
					                              opened privileged file descriptor, you should return it from
 | 
				
			||||||
    - verbose: send debug messages to logger if provided.
 | 
					                              privileged_action function and catch it inside action function.
 | 
				
			||||||
    - logger: use this logger object instead of creating new one, if provided.
 | 
					    :param user: drop privileges to this user if provided.
 | 
				
			||||||
    - foreground: stay in foreground; do not fork (for debugging)
 | 
					    :param group: drop privileges to this group if provided.
 | 
				
			||||||
 | 
					    :param verbose: send debug messages to logger if provided.
 | 
				
			||||||
 | 
					    :param logger: use this logger object instead of creating new one, if provided.
 | 
				
			||||||
 | 
					    :param foreground: stay in foreground; do not fork (for debugging)
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    def __init__(self, app, pid, action, keep_fds=None, auto_close_fds=True, privileged_action=None, user=None, group=None, verbose=False, logger=None, foreground=False):
 | 
					    def __init__(self, app, pid, action, keep_fds=None, auto_close_fds=True, privileged_action=None, user=None, group=None, verbose=False, logger=None, foreground=False):
 | 
				
			||||||
        self.app = app
 | 
					        self.app = app
 | 
				
			||||||
@@ -45,7 +51,7 @@ class Daemonize(object):
 | 
				
			|||||||
        self.foreground = foreground
 | 
					        self.foreground = foreground
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def sigterm(self, signum, frame):
 | 
					    def sigterm(self, signum, frame):
 | 
				
			||||||
        """ sigterm method
 | 
					        """
 | 
				
			||||||
        These actions will be done after SIGTERM.
 | 
					        These actions will be done after SIGTERM.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self.logger.warn("Caught signal %s. Stopping daemon." % signum)
 | 
					        self.logger.warn("Caught signal %s. Stopping daemon." % signum)
 | 
				
			||||||
@@ -53,7 +59,7 @@ class Daemonize(object):
 | 
				
			|||||||
        sys.exit(0)
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def exit(self):
 | 
					    def exit(self):
 | 
				
			||||||
        """ exit method
 | 
					        """
 | 
				
			||||||
        Cleanup pid file at exit.
 | 
					        Cleanup pid file at exit.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self.logger.warn("Stopping daemon.")
 | 
					        self.logger.warn("Stopping daemon.")
 | 
				
			||||||
@@ -61,8 +67,8 @@ class Daemonize(object):
 | 
				
			|||||||
        sys.exit(0)
 | 
					        sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def start(self):
 | 
					    def start(self):
 | 
				
			||||||
        """ start method
 | 
					        """
 | 
				
			||||||
        Main daemonization process.
 | 
					        Start daemonization process.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        # If pidfile already exists, we should read pid from there; to overwrite it, if locking
 | 
					        # If pidfile already exists, we should read pid from there; to overwrite it, if locking
 | 
				
			||||||
        # will fail, because locking attempt somehow purges the file contents.
 | 
					        # will fail, because locking attempt somehow purges the file contents.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										266
									
								
								docs/conf.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								docs/conf.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,266 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# daemonize documentation build configuration file, created by
 | 
				
			||||||
 | 
					# sphinx-quickstart on Mon Nov  2 17:36:41 2015.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is execfile()d with the current directory set to its
 | 
				
			||||||
 | 
					# containing dir.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Note that not all possible configuration values are present in this
 | 
				
			||||||
 | 
					# autogenerated file.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# All configuration values have a default; values that are commented out
 | 
				
			||||||
 | 
					# serve to show the default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If extensions (or modules to document with autodoc) are in another directory,
 | 
				
			||||||
 | 
					# add these directories to sys.path here. If the directory is relative to the
 | 
				
			||||||
 | 
					# documentation root, use os.path.abspath to make it absolute, like shown here.
 | 
				
			||||||
 | 
					#sys.path.insert(0, os.path.abspath('.'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- General configuration ------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If your documentation needs a minimal Sphinx version, state it here.
 | 
				
			||||||
 | 
					#needs_sphinx = '1.0'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any Sphinx extension module names here, as strings. They can be
 | 
				
			||||||
 | 
					# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 | 
				
			||||||
 | 
					# ones.
 | 
				
			||||||
 | 
					extensions = [
 | 
				
			||||||
 | 
					    'sphinx.ext.autodoc',
 | 
				
			||||||
 | 
					    'sphinx.ext.viewcode',
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any paths that contain templates here, relative to this directory.
 | 
				
			||||||
 | 
					templates_path = ['_templates']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The suffix of source filenames.
 | 
				
			||||||
 | 
					source_suffix = '.rst'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The encoding of source files.
 | 
				
			||||||
 | 
					#source_encoding = 'utf-8-sig'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The master toctree document.
 | 
				
			||||||
 | 
					master_doc = 'index'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# General information about the project.
 | 
				
			||||||
 | 
					project = u'daemonize'
 | 
				
			||||||
 | 
					copyright = u'2015, Ilya Otyutskiy'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The version info for the project you're documenting, acts as replacement for
 | 
				
			||||||
 | 
					# |version| and |release|, also used in various other places throughout the
 | 
				
			||||||
 | 
					# built documents.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from daemonize import __version__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version = __version__
 | 
				
			||||||
 | 
					release = __version__
 | 
				
			||||||
 | 
					# The full version, including alpha/beta/rc tags.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The language for content autogenerated by Sphinx. Refer to documentation
 | 
				
			||||||
 | 
					# for a list of supported languages.
 | 
				
			||||||
 | 
					#language = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# There are two options for replacing |today|: either, you set today to some
 | 
				
			||||||
 | 
					# non-false value, then it is used:
 | 
				
			||||||
 | 
					#today = ''
 | 
				
			||||||
 | 
					# Else, today_fmt is used as the format for a strftime call.
 | 
				
			||||||
 | 
					#today_fmt = '%B %d, %Y'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# List of patterns, relative to source directory, that match files and
 | 
				
			||||||
 | 
					# directories to ignore when looking for source files.
 | 
				
			||||||
 | 
					exclude_patterns = ['_build']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The reST default role (used for this markup: `text`) to use for all
 | 
				
			||||||
 | 
					# documents.
 | 
				
			||||||
 | 
					#default_role = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, '()' will be appended to :func: etc. cross-reference text.
 | 
				
			||||||
 | 
					#add_function_parentheses = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, the current module name will be prepended to all description
 | 
				
			||||||
 | 
					# unit titles (such as .. function::).
 | 
				
			||||||
 | 
					#add_module_names = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, sectionauthor and moduleauthor directives will be shown in the
 | 
				
			||||||
 | 
					# output. They are ignored by default.
 | 
				
			||||||
 | 
					#show_authors = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The name of the Pygments (syntax highlighting) style to use.
 | 
				
			||||||
 | 
					pygments_style = 'sphinx'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# A list of ignored prefixes for module index sorting.
 | 
				
			||||||
 | 
					#modindex_common_prefix = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, keep warnings as "system message" paragraphs in the built documents.
 | 
				
			||||||
 | 
					#keep_warnings = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Options for HTML output ----------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The theme to use for HTML and HTML Help pages.  See the documentation for
 | 
				
			||||||
 | 
					# a list of builtin themes.
 | 
				
			||||||
 | 
					import sphinx_rtd_theme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					html_theme = "sphinx_rtd_theme"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Theme options are theme-specific and customize the look and feel of a theme
 | 
				
			||||||
 | 
					# further.  For a list of options available for each theme, see the
 | 
				
			||||||
 | 
					# documentation.
 | 
				
			||||||
 | 
					#html_theme_options = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any paths that contain custom themes here, relative to this directory.
 | 
				
			||||||
 | 
					#html_theme_path = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The name for this set of Sphinx documents.  If None, it defaults to
 | 
				
			||||||
 | 
					# "<project> v<release> documentation".
 | 
				
			||||||
 | 
					#html_title = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# A shorter title for the navigation bar.  Default is the same as html_title.
 | 
				
			||||||
 | 
					#html_short_title = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The name of an image file (relative to this directory) to place at the top
 | 
				
			||||||
 | 
					# of the sidebar.
 | 
				
			||||||
 | 
					#html_logo = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The name of an image file (within the static path) to use as favicon of the
 | 
				
			||||||
 | 
					# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 | 
				
			||||||
 | 
					# pixels large.
 | 
				
			||||||
 | 
					#html_favicon = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any paths that contain custom static files (such as style sheets) here,
 | 
				
			||||||
 | 
					# relative to this directory. They are copied after the builtin static files,
 | 
				
			||||||
 | 
					# so a file named "default.css" will overwrite the builtin "default.css".
 | 
				
			||||||
 | 
					html_static_path = ['_static']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add any extra paths that contain custom files (such as robots.txt or
 | 
				
			||||||
 | 
					# .htaccess) here, relative to this directory. These files are copied
 | 
				
			||||||
 | 
					# directly to the root of the documentation.
 | 
				
			||||||
 | 
					#html_extra_path = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 | 
				
			||||||
 | 
					# using the given strftime format.
 | 
				
			||||||
 | 
					#html_last_updated_fmt = '%b %d, %Y'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, SmartyPants will be used to convert quotes and dashes to
 | 
				
			||||||
 | 
					# typographically correct entities.
 | 
				
			||||||
 | 
					#html_use_smartypants = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Custom sidebar templates, maps document names to template names.
 | 
				
			||||||
 | 
					#html_sidebars = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Additional templates that should be rendered to pages, maps page names to
 | 
				
			||||||
 | 
					# template names.
 | 
				
			||||||
 | 
					#html_additional_pages = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If false, no module index is generated.
 | 
				
			||||||
 | 
					#html_domain_indices = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If false, no index is generated.
 | 
				
			||||||
 | 
					#html_use_index = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, the index is split into individual pages for each letter.
 | 
				
			||||||
 | 
					#html_split_index = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, links to the reST sources are added to the pages.
 | 
				
			||||||
 | 
					#html_show_sourcelink = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
 | 
				
			||||||
 | 
					#html_show_sphinx = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
 | 
				
			||||||
 | 
					#html_show_copyright = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, an OpenSearch description file will be output, and all pages will
 | 
				
			||||||
 | 
					# contain a <link> tag referring to it.  The value of this option must be the
 | 
				
			||||||
 | 
					# base URL from which the finished HTML is served.
 | 
				
			||||||
 | 
					#html_use_opensearch = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This is the file name suffix for HTML files (e.g. ".xhtml").
 | 
				
			||||||
 | 
					#html_file_suffix = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Output file base name for HTML help builder.
 | 
				
			||||||
 | 
					htmlhelp_basename = 'daemonizedoc'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Options for LaTeX output ---------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					latex_elements = {
 | 
				
			||||||
 | 
					# The paper size ('letterpaper' or 'a4paper').
 | 
				
			||||||
 | 
					#'papersize': 'letterpaper',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The font size ('10pt', '11pt' or '12pt').
 | 
				
			||||||
 | 
					#'pointsize': '10pt',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Additional stuff for the LaTeX preamble.
 | 
				
			||||||
 | 
					#'preamble': '',
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Grouping the document tree into LaTeX files. List of tuples
 | 
				
			||||||
 | 
					# (source start file, target name, title,
 | 
				
			||||||
 | 
					#  author, documentclass [howto, manual, or own class]).
 | 
				
			||||||
 | 
					latex_documents = [
 | 
				
			||||||
 | 
					  ('index', 'daemonize.tex', u'daemonize Documentation',
 | 
				
			||||||
 | 
					   u'Ilya Otyutskiy', 'manual'),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The name of an image file (relative to this directory) to place at the top of
 | 
				
			||||||
 | 
					# the title page.
 | 
				
			||||||
 | 
					#latex_logo = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For "manual" documents, if this is true, then toplevel headings are parts,
 | 
				
			||||||
 | 
					# not chapters.
 | 
				
			||||||
 | 
					#latex_use_parts = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, show page references after internal links.
 | 
				
			||||||
 | 
					#latex_show_pagerefs = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, show URL addresses after external links.
 | 
				
			||||||
 | 
					#latex_show_urls = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Documents to append as an appendix to all manuals.
 | 
				
			||||||
 | 
					#latex_appendices = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If false, no module index is generated.
 | 
				
			||||||
 | 
					#latex_domain_indices = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Options for manual page output ---------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# One entry per manual page. List of tuples
 | 
				
			||||||
 | 
					# (source start file, name, description, authors, manual section).
 | 
				
			||||||
 | 
					man_pages = [
 | 
				
			||||||
 | 
					    ('index', 'daemonize', u'daemonize Documentation',
 | 
				
			||||||
 | 
					     [u'Ilya Otyutskiy'], 1)
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, show URL addresses after external links.
 | 
				
			||||||
 | 
					#man_show_urls = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -- Options for Texinfo output -------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Grouping the document tree into Texinfo files. List of tuples
 | 
				
			||||||
 | 
					# (source start file, target name, title, author,
 | 
				
			||||||
 | 
					#  dir menu entry, description, category)
 | 
				
			||||||
 | 
					texinfo_documents = [
 | 
				
			||||||
 | 
					  ('index', 'daemonize', u'daemonize Documentation',
 | 
				
			||||||
 | 
					   u'Ilya Otyutskiy', 'daemonize', 'One line description of project.',
 | 
				
			||||||
 | 
					   'Miscellaneous'),
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Documents to append as an appendix to all manuals.
 | 
				
			||||||
 | 
					#texinfo_appendices = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If false, no module index is generated.
 | 
				
			||||||
 | 
					#texinfo_domain_indices = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# How to display URL addresses: 'footnote', 'no', or 'inline'.
 | 
				
			||||||
 | 
					#texinfo_show_urls = 'footnote'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If true, do not generate a @detailmenu in the "Top" node's menu.
 | 
				
			||||||
 | 
					#texinfo_no_detailmenu = False
 | 
				
			||||||
							
								
								
									
										14
									
								
								docs/index.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								docs/index.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					.. daemonize documentation master file, created by
 | 
				
			||||||
 | 
					   sphinx-quickstart on Mon Nov  2 17:36:41 2015.
 | 
				
			||||||
 | 
					   You can adapt this file completely to your liking, but it should at least
 | 
				
			||||||
 | 
					   contain the root `toctree` directive.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. include:: ../README.rst
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Indices and tables
 | 
				
			||||||
 | 
					==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* :ref:`genindex`
 | 
				
			||||||
 | 
					* :ref:`modindex`
 | 
				
			||||||
 | 
					* :ref:`search`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								setup.py
									
									
									
									
									
								
							@@ -1,10 +1,19 @@
 | 
				
			|||||||
#!/usr/bin/python
 | 
					#!/usr/bin/python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import re
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from setuptools import setup, find_packages
 | 
					from setuptools import setup, find_packages
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_version_re = re.compile(r'__version__\s+=\s+(.*)')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with open('daemonize.py', 'rb') as f:
 | 
				
			||||||
 | 
					    version = str(ast.literal_eval(_version_re.search(
 | 
				
			||||||
 | 
					        f.read().decode('utf-8')).group(1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
setup(
 | 
					setup(
 | 
				
			||||||
    name="daemonize",
 | 
					    name="daemonize",
 | 
				
			||||||
    version="2.3.1",
 | 
					    version=version,
 | 
				
			||||||
    py_modules=["daemonize"],
 | 
					    py_modules=["daemonize"],
 | 
				
			||||||
    author="Ilya Otyutskiy",
 | 
					    author="Ilya Otyutskiy",
 | 
				
			||||||
    author_email="ilya.otyutskiy@icloud.com",
 | 
					    author_email="ilya.otyutskiy@icloud.com",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user