def __init__(self, site, settings, message): super(Publisher, self).__init__() self.logger = getLoggerWithNullHandler('hyde.engine.%s' % self.__class__.__name__) self.site = site self.message = message self.initialize(settings)
def load_publisher(site, publisher, message): logger = getLoggerWithNullHandler('hyde.engine.publisher') try: settings = attrgetter("publisher.%s" % publisher)(site.config) except AttributeError: settings = False if not settings: # Find the first configured publisher try: publisher = site.config.publisher.__dict__.iterkeys().next() logger.warning("No default publisher configured. Using: %s" % publisher) settings = attrgetter("publisher.%s" % publisher)(site.config) except (AttributeError, StopIteration): logger.error("Cannot find the publisher configuration: %s" % publisher) raise if not hasattr(settings, 'type'): logger.error("Publisher type not specified: %s" % publisher) raise Exception("Please specify the publisher type in config.") pub_class = load_python_object(settings.type) return pub_class(site, settings, message)
def load_publisher(site, publisher, message): logger = getLoggerWithNullHandler('hyde.engine.publisher') try: settings = attrgetter("publisher.%s" % publisher)(site.config) except AttributeError: settings = False if not settings: # Find the first configured publisher try: publisher = site.config.publisher.__dict__.iterkeys().next() logger.warning("No default publisher configured. Using: %s" % publisher) settings = attrgetter("publisher.%s" % publisher)(site.config) except (AttributeError, StopIteration): logger.error( "Cannot find the publisher configuration: %s" % publisher) raise if not hasattr(settings, 'type'): logger.error( "Publisher type not specified: %s" % publisher) raise Exception("Please specify the publisher type in config.") pub_class = load_python_object(settings.type) return pub_class(site, settings, message)
def __init__(self, site, settings, message): super(Publisher, self).__init__() self.logger = getLoggerWithNullHandler( 'hyde.engine.%s' % self.__class__.__name__) self.site = site self.message = message self.initialize(settings)
def load_publisher(site, publisher, message): try: settings = attrgetter("publisher.%s" % publisher)(site.config) except AttributeError: logger = getLoggerWithNullHandler('hyde.engine.publisher') logger.error("Cannot find the publisher configuration: %s" % publisher) raise if not hasattr(settings, 'type'): logger.error("Publisher type not specified: %s" % publisher) raise Exception("Please specify the publisher type in config.") pub_class = load_python_object(settings.type) return pub_class(site, settings, message)
def __init__(self, site): super(Plugin, self).__init__() self.site = site self.logger = getLoggerWithNullHandler( 'hyde.engine.%s' % self.__class__.__name__) self.template = None opts = Expando({}) try: opts = getattr(self.site.config, self.plugin_name) except AttributeError: pass self.settings = opts
def load_publisher(site, publisher, message): try: settings = attrgetter("publisher.%s" % publisher)(site.config) except AttributeError: logger = getLoggerWithNullHandler('hyde.engine.publisher') logger.error( "Cannot find the publisher configuration: %s" % publisher) raise if not hasattr(settings, 'type'): logger.error( "Publisher type not specified: %s" % publisher) raise Exception("Please specify the publisher type in config.") pub_class = load_python_object(settings.type) return pub_class(site, settings, message)
""" import os import select import threading import urlparse import urllib from datetime import datetime from SimpleHTTPServer import SimpleHTTPRequestHandler from BaseHTTPServer import HTTPServer from hyde.fs import File, Folder from hyde.site import Site from hyde.generator import Generator from hyde.exceptions import HydeException from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.server') class HydeRequestHandler(SimpleHTTPRequestHandler): """ Serves files by regenerating the resource (or) everything when a request is issued. """ def do_GET(self): """ Identify the requested path. If the query string contains `refresh`, regenerat the entire site. Otherwise, regenerate only the requested resource and serve. """ self.server.request_time = datetime.now()
""" Jinja template utilties """ from hyde.fs import File, Folder from hyde.model import Expando from hyde.template import HtmlWrap, Template from hyde.site import Resource from hyde.util import getLoggerWithNullHandler, getLoggerWithConsoleHandler from jinja2 import contextfunction, Environment, FileSystemLoader from jinja2 import environmentfilter, Markup, Undefined, nodes from jinja2.ext import Extension from jinja2.exceptions import TemplateError logger = getLoggerWithNullHandler('Jinja2') class SilentUndefined(Undefined): """ A redefinition of undefined that eats errors. """ def __getattr__(self, name): return self __getitem__ = __getattr__ def __call__(self, *args, **kwargs): return self @contextfunction def media_url(context, path):
Interpret files `*.html.rst` as reStructuredText sources, `*.html.md`, as Markdown and `*.html.tx` as Textile. Replace content of a file by {% filter <filtername> %} ... {% endfilter %} """ from hyde.plugin import Plugin from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.ext.plugins.syntax') class SyntaxPlugin(Plugin): """The plugin class for rendering sphinx-generated documentation.""" extensions_map = { "rst": "restructuredtext", "md": "markdown", "tx": "textile" } extensions = [".html." + i for i in extensions_map.keys()] def __init__(self, site): self.generators = {} super(SyntaxPlugin, self).__init__(site)
fnamtch, shutil and distutils. This module attempts to make the right choices for common operations to provide a single interface. """ import codecs from datetime import datetime import mimetypes import os import shutil from distutils import dir_util import functools import fnmatch from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('fs') # pylint: disable-msg=E0611 __all__ = ['File', 'Folder'] class FS(object): """ The base file system object """ def __init__(self, path): super(FS, self).__init__() if path == os.sep: self.path = path else:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ import datetime import email import mimetypes import optparse import os import sys import time from hyde.fs import File, Folder from hyde.publisher import Publisher from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.ext.publishers.aws') # Make sure boto is available try: import boto import boto.exception except ImportError: raise ImportError, "The boto Python library is not installed." try: from fs.osfs import OSFS from fs.path import pathjoin from fs.opener import fsopendir except ImportError: logger.error("The AWS publisher requires PyFilesystem v0.4 or later.") logger.error("`pip install -U fs` to get it.")
# We need absolute import so that we can import the main "sphinx" # module even though this module is also called "sphinx". Ugh. from __future__ import absolute_import import os import sys import json import tempfile from hyde.plugin import Plugin from hyde.fs import File, Folder from hyde.model import Expando from hyde.ext.plugins.meta import MetaPlugin as _MetaPlugin from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.ext.plugins.sphinx') try: import sphinx from sphinx.builders.html import JSONHTMLBuilder from sphinx.util.osutil import SEP except ImportError: logger.error("The sphinx plugin requires sphinx.") logger.error("`pip install -U sphinx` to get it.") raise class SphinxPlugin(Plugin): """The plugin class for rendering sphinx-generated documentation.""" def __init__(self, site):
def __init__(self, sitepath): self.sitepath = sitepath self.logger = getLoggerWithNullHandler(self.__class__.__name__)
""" import os import getpass import zipfile import tempfile import httplib import urlparse from base64 import standard_b64encode import ConfigParser from hyde.fs import File, Folder from hyde.publisher import Publisher from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.ext.publishers.pypi') class PyPI(Publisher): def initialize(self, settings): self.settings = settings self.project = settings.project self.url = getattr(settings, "url", "https://pypi.python.org/pypi/") self.username = getattr(settings, "username", None) self.password = getattr(settings, "password", None) self.prompt_for_credentials() def prompt_for_credentials(self): pypirc_file = os.path.expanduser("~/.pypirc") if not os.path.isfile(pypirc_file): pypirc = None
import itertools from urllib import quote, unquote from hyde.fs import File, Folder from hyde.model import Expando from hyde.template import HtmlWrap, Template from hyde.util import getLoggerWithNullHandler from operator import attrgetter from jinja2 import contextfunction, Environment from jinja2 import FileSystemLoader, FileSystemBytecodeCache from jinja2 import contextfilter, environmentfilter, Markup, Undefined, nodes from jinja2.ext import Extension from jinja2.exceptions import TemplateError logger = getLoggerWithNullHandler('hyde.engine.Jinja2') class SilentUndefined(Undefined): """ A redefinition of undefined that eats errors. """ def __getattr__(self, name): return self __getitem__ = __getattr__ def __call__(self, *args, **kwargs): return self
def __init__(self, site): super(Plugin, self).__init__() self.site = site self.logger = getLoggerWithNullHandler(self.__class__.__name__)
# We need absolute import so that we can import the main "sphinx" # module even though this module is also called "sphinx". Ugh. from __future__ import absolute_import import os import json import tempfile from hyde.plugin import Plugin from hyde.fs import File, Folder from hyde.ext.plugins.meta import Metadata from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.ext.plugins.docdirs') try: from sphinx.application import Sphinx from sphinx.builders.html import JSONHTMLBuilder from sphinx.util.osutil import SEP except ImportError: logger.error("The sphinx plugin requires sphinx.") logger.error("`pip install -U sphinx` to get it.") raise class SphinxGenerator(object): def __init__(self, node, settings): self.__node = node self.__config = None
def __init__(self, site): super(Plugin, self).__init__() self.site = site self.logger = getLoggerWithNullHandler( 'hyde.engine.%s' % self.__class__.__name__) self.template = None
generated from hyde. """ import os import select import threading import urlparse import urllib from SimpleHTTPServer import SimpleHTTPRequestHandler from BaseHTTPServer import HTTPServer from hyde.fs import File, Folder from hyde.site import Site from hyde.generator import Generator from hyde.exceptions import HydeException from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.server') from datetime import datetime class HydeRequestHandler(SimpleHTTPRequestHandler): """ Serves files by regenerating the resource (or) everything when a request is issued. """ def do_GET(self): """ Identify the requested path. If the query string contains `refresh`, regenerat the entire site. Otherwise, regenerate only the requested resource and serve.
import itertools from urllib import quote, unquote from hyde.fs import File, Folder from hyde.model import Expando from hyde.template import HtmlWrap, Template from hyde.util import getLoggerWithNullHandler from operator import attrgetter from jinja2 import contextfunction, Environment from jinja2 import FileSystemLoader, FileSystemBytecodeCache from jinja2 import contextfilter, environmentfilter, Markup, Undefined, nodes from jinja2.ext import Extension from jinja2.exceptions import TemplateError logger = getLoggerWithNullHandler('hyde.engine.Jinja2') class SilentUndefined(Undefined): """ A redefinition of undefined that eats errors. """ def __getattr__(self, name): return self __getitem__ = __getattr__ def __call__(self, *args, **kwargs): return self @contextfunction def media_url(context, path, safe=None):
fnamtch, shutil and distutils. This module attempts to make the right choices for common operations to provide a single interface. """ import codecs from datetime import datetime import mimetypes import os import shutil from distutils import dir_util import functools import fnmatch from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('fs') # pylint: disable-msg=E0611 __all__ = ['File', 'Folder'] class FS(object): """ The base file system object """ def __init__(self, path): super(FS, self).__init__() if path == os.sep:
# -*- coding: utf-8 -*- """ Contains data structures and utilities for hyde. """ from hyde.fs import File, Folder import codecs import yaml from datetime import datetime from UserDict import IterableUserDict from hyde.util import getLoggerWithNullHandler logger = getLoggerWithNullHandler('hyde.engine') class Expando(object): """ A generic expando class that creates attributes from the passed in dictionary. """ def __init__(self, d): super(Expando, self).__init__() self.update(d) def __iter__(self): """ Returns an iterator for all the items in the dictionary as key value pairs. """ return self.__dict__.iteritems()
from hyde import loader from hyde.exceptions import HydeException from hyde.fs import File from hyde.util import getLoggerWithNullHandler, first_match from hyde.model import Expando from functools import partial import re import subprocess import traceback logger = getLoggerWithNullHandler("hyde.engine") class PluginProxy(object): """ A proxy class to raise events in registered plugins """ def __init__(self, site): super(PluginProxy, self).__init__() self.site = site def __getattr__(self, method_name): if hasattr(Plugin, method_name): def __call_plugins__(*args):