Browse Source

Upgrade dependencies and setup for 0.8.5.

- Upgrade and fix versions for dependencies
- Use the typogrify package on pypi
- Fix tests that break because of the upgrades
- Bump version
main
Lakshmi Vyasarajan 11 years ago
parent
commit
e68eaf3880
16 changed files with 123 additions and 152 deletions
  1. +7
    -1
      CHANGELOG.rst
  2. +1
    -1
      README.rst
  3. +5
    -15
      dev-req.txt
  4. +18
    -43
      hyde/engine.py
  5. +4
    -5
      hyde/ext/templates/jinja.py
  6. +45
    -0
      hyde/tests/README.rst
  7. +0
    -1
      hyde/tests/ext/test_less.py
  8. +2
    -3
      hyde/tests/ext/test_meta.py
  9. +7
    -9
      hyde/tests/ext/test_tagger.py
  10. +4
    -3
      hyde/tests/ext/uglify/expected-jquery-nc.js
  11. +4
    -17
      hyde/tests/ext/uglify/expected-jquery.js
  12. +1
    -1
      hyde/tests/test_initialize.py
  13. +8
    -32
      hyde/tests/test_jinja2template.py
  14. +1
    -1
      hyde/version.py
  15. +7
    -8
      requirements.txt
  16. +9
    -12
      setup.py

+ 7
- 1
CHANGELOG.rst View File

@@ -1,4 +1,10 @@
Version 0.8.5a14
Version 0.8.5a16
============================================================

* Upgrade dependencies and setup for 0.8.5
* Bug fix: Use the released version of typogrify. (Issue #193)

Version 0.8.5a15
============================================================

* Bug Fix: Fixed stylus `indent` issues with empty files. (Issue #161)


+ 1
- 1
README.rst View File

@@ -1,4 +1,4 @@
Version 0.8.5a14
Version 0.8.5a16

A brand new **hyde**
====================


+ 5
- 15
dev-req.txt View File

@@ -1,16 +1,6 @@
commando==0.1.1a
PyYAML==3.09
Markdown==2.0.3
MarkupSafe==0.11
pygments
smartypants==1.6.0.3
-e git://github.com/hyde/typogrify.git#egg=typogrify
Jinja2==2.5.5
pyquery==0.6.1
unittest2==0.5.1
mock==0.7.0b4
nose==1.0.0
pep8==0.6.1
pylint==0.22.0
pysmell==0.7.3
-r requirements.txt
pyquery
docutils
mock
nose
PIL

+ 18
- 43
hyde/engine.py View File

@@ -2,50 +2,26 @@
"""
Implements the hyde entry point commands
"""
from commando import *
from commando import (
Application,
command,
store,
subcommand,
true,
version
)
from hyde.exceptions import HydeException
from hyde.fs import FS, File, Folder
from hyde.fs import FS, Folder
from hyde.layout import Layout, HYDE_DATA
from hyde.model import Config
from hyde.site import Site
from hyde.version import __version__
from hyde.util import getLoggerWithConsoleHandler

import codecs
import os
import sys
import yaml

HYDE_LAYOUTS = "HYDE_LAYOUTS"

logger = getLoggerWithConsoleHandler('hyde')

class Engine(Application):
"""
The Hyde Application
"""
def __init__(self, raise_exceptions=False):
self.raise_exceptions = raise_exceptions
super(Engine, self).__init__()

def run(self, args=None):
"""
The engine entry point.
"""

# Catch any errors thrown and log the message.

try:
super(Engine, self).run(args)
except HydeException, he:
if self.raise_exceptions:
raise
elif self.__parser__:
self.__parser__.error(he.message)
else:
logger.error(he.message)
return -1


@command(description='hyde - a python static website generator',
epilog='Use %(prog)s {command} -h to get help on individual commands')
@@ -60,7 +36,7 @@ class Engine(Application):
"""
if args.verbose:
import logging
logger.setLevel(logging.DEBUG)
self.logger.setLevel(logging.DEBUG)

sitepath = Folder(args.sitepath).fully_expanded_path
return Folder(sitepath)
@@ -83,7 +59,7 @@ class Engine(Application):
"The given site path [%s] already contains a hyde site."
" Use -f to overwrite." % sitepath)
layout = Layout.find_layout(args.layout)
logger.info(
self.logger.info(
"Creating site at [%s] with layout [%s]" % (sitepath, layout))
if not layout or not layout.exists:
raise HydeException(
@@ -92,7 +68,7 @@ class Engine(Application):
" has been setup properly if you are using custom path for"
" layouts" % HYDE_DATA)
layout.copy_contents_to(args.sitepath)
logger.info("Site creation complete")
self.logger.info("Site creation complete")

@subcommand('gen', help='Generate the site')
@store('-c', '--config-path', default='site.yaml', dest='config',
@@ -112,11 +88,11 @@ class Engine(Application):
gen = Generator(site)
incremental = True
if args.regen:
logger.info("Regenerating the site...")
self.logger.info("Regenerating the site...")
incremental = False

gen.generate_all(incremental=incremental)
logger.info("Generation complete.")
self.logger.info("Generation complete.")

@subcommand('serve', help='Serve the website')
@store('-a', '--address', default='localhost', dest='address',
@@ -134,17 +110,16 @@ class Engine(Application):
the entire site or specific files based on ths request.
"""
sitepath = self.main(args)
config_file = sitepath.child(args.config)
site = self.make_site(sitepath, args.config, args.deploy)
from hyde.server import HydeWebServer
server = HydeWebServer(site, args.address, args.port)
logger.info("Starting webserver at [%s]:[%d]", args.address, args.port)
self.logger.info("Starting webserver at [%s]:[%d]", args.address, args.port)
try:
server.serve_forever()
except KeyboardInterrupt, SystemExit:
logger.info("Received shutdown request. Shutting down...")
except (KeyboardInterrupt, SystemExit):
self.logger.info("Received shutdown request. Shutting down...")
server.shutdown()
logger.info("Server successfully stopped")
self.logger.info("Server successfully stopped")
exit()

@subcommand('publish', help='Publish the website')


+ 4
- 5
hyde/ext/templates/jinja.py View File

@@ -9,7 +9,6 @@ import re
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
@@ -693,12 +692,12 @@ class Jinja2Template(Template):
self.env.extend(config=config)

try:
from typogrify.templatetags import jinja2_filters
from typogrify.templatetags import jinja_filters
except ImportError:
jinja2_filters = False
jinja_filters = False

if jinja2_filters:
jinja2_filters.register(self.env)
if jinja_filters:
jinja_filters.register(self.env)

def clear_caches(self):
"""


+ 45
- 0
hyde/tests/README.rst View File

@@ -0,0 +1,45 @@
Requirements
============

All the python requirements are enumerated in dev-req.txt. You can install them
with:

::
pip install -r dev-req.txt


Apart from these requirements the following are required by plugins if you
choose to run the corresponding tests. Some of the comands use the Mac OS X
package manager `homebrew` - please use the package manager corresponding to
your operating system.


::
# stylus
npm install -g stylus

#uglifyjs
npm install -g uglify-js

#asciidoc
brew install asciidoc
cd /usr/local/Cellar/asciidoc/8.6.8/bin
curl -O https://asciidoc.googlecode.com/hg/asciidocapi.py

#optipng
brew install optipng


Ensure that `asciidoc`_ python api is available in the python path.

For example:

::
export PYTHONPATH=/usr/local/Cellar/asciidoc/8.6.8/bin:$PYTHONPATH


Run the tests
=============

::
nosetests hyde/tests

+ 0
- 1
hyde/tests/ext/test_less.py View File

@@ -5,7 +5,6 @@ Use nose
`$ nosetests`
"""
from hyde.fs import File, Folder
from hyde.model import Expando
from hyde.generator import Generator
from hyde.site import Site



+ 2
- 3
hyde/tests/ext/test_meta.py View File

@@ -4,7 +4,6 @@ Use nose
`$ pip install nose`
`$ nosetests`
"""
from hyde.ext.plugins.meta import MetaPlugin
from hyde.fs import File, Folder
from hyde.generator import Generator
from hyde.site import Site
@@ -72,8 +71,8 @@ Heading 2
text = target.read_all()
q = PyQuery(text)
assert q("h1").length == 2
assert q("h1:eq(0)").text().strip() == "Heading 1"
assert q("h1:eq(1)").text().strip() == "Heading 2"
assert q("h1:nth-child(1)").text().strip() == "Heading 1"
assert q("h1:nth-child(2)").text().strip() == "Heading 2"

def test_can_load_front_matter(self):
d = {'title': 'A nice title',


+ 7
- 9
hyde/tests/ext/test_tagger.py View File

@@ -4,13 +4,11 @@ Use nose
`$ pip install nose`
`$ nosetests`
"""
from hyde.fs import File, Folder
from hyde.fs import File
from hyde.generator import Generator
from hyde.model import Expando
from hyde.site import Site

from hyde.tests.util import assert_html_equals
import yaml


TEST_SITE = File(__file__).parent.parent.child_folder('_test')

@@ -86,8 +84,8 @@ class TestTagger(object):
assert q

assert q('li').length == 2
assert q('li a:first-child').attr('href') == '/blog/another-sad-post.html'
assert q('li a:eq(1)').attr('href') == '/blog/sad-post.html'
assert q('li:nth-child(1) a').attr('href') == '/blog/another-sad-post.html'
assert q('li:nth-child(2) a').attr('href') == '/blog/sad-post.html'

q = PyQuery(File(tags_folder.child('happy.html')).read_all())
assert q
@@ -105,9 +103,9 @@ class TestTagger(object):
assert q

assert q('li').length == 3
assert q('li a:eq(0)').attr('href') == '/blog/happy-post.html'
assert q('li a:eq(1)').attr('href') == '/blog/angry-post.html'
assert q('li a:eq(2)').attr('href') == '/blog/sad-post.html'
assert q('li:nth-child(1) a').attr('href') == '/blog/happy-post.html'
assert q('li:nth-child(2) a').attr('href') == '/blog/angry-post.html'
assert q('li:nth-child(3) a').attr('href') == '/blog/sad-post.html'

q = PyQuery(File(tags_folder.child('events.html')).read_all())
assert q


+ 4
- 3
hyde/tests/ext/uglify/expected-jquery-nc.js
File diff suppressed because it is too large
View File


+ 4
- 17
hyde/tests/ext/uglify/expected-jquery.js
File diff suppressed because it is too large
View File


+ 1
- 1
hyde/tests/test_initialize.py View File

@@ -8,7 +8,7 @@ Use nose

from hyde.engine import Engine
from hyde.exceptions import HydeException
from hyde.fs import FS, File, Folder
from hyde.fs import File, Folder
from hyde.layout import Layout
from nose.tools import raises, with_setup, nottest



+ 8
- 32
hyde/tests/test_jinja2template.py View File

@@ -8,19 +8,17 @@ Some code borrowed from rwbench.py from the jinja2 examples
"""
from datetime import datetime
from hyde.ext.templates.jinja import Jinja2Template
from hyde.fs import File, Folder
from hyde.fs import File
from hyde.site import Site
from hyde.generator import Generator
from hyde.model import Config

import jinja2
from jinja2.utils import generate_lorem_ipsum
from random import choice, randrange
from util import assert_html_equals
import yaml

from pyquery import PyQuery
from nose.tools import raises, nottest, with_setup
from nose.tools import nottest

ROOT = File(__file__).parent
JINJA2 = ROOT.child_folder('templates/jinja2')
@@ -138,35 +136,14 @@ def test_asciidoc():
t = Jinja2Template(JINJA2.path)
t.configure(None)
html = t.render(source, {}).strip()
expected_output="""
<hr>
<h2><a name="_heading_2"></a>Heading 2</h2>
<ul>
<li>
<p>
test1
</p>
</li>
<li>
<p>
test2
</p>
</li>
<li>
<p>
test3
</p>
</li>
</ul>
"""

assert html
q = PyQuery(html)
assert q
assert q("li").length == 3
assert q("li:eq(0)").text().strip() == "test1"
assert q("li:eq(1)").text().strip() == "test2"
assert q("li:eq(2)").text().strip() == "test3"
assert q("li:nth-child(1)").text().strip() == "test1"
assert q("li:nth-child(2)").text().strip() == "test2"
assert q("li:nth-child(3)").text().strip() == "test3"

def test_markdown():
source = """
@@ -242,7 +219,7 @@ def test_markdown_with_extensions():
t.configure(s)
t.env.filters['dateformat'] = dateformat
html = t.render(source, {}).strip()
assert html == u'<h3 id="heading_3">Heading 3</h3>'
assert html == u'<h3 id="heading-3">Heading 3</h3>'

def test_markdown_with_sourcecode():
source = """
@@ -292,7 +269,7 @@ def test_line_statements():
t.configure(s)
t.env.filters['dateformat'] = dateformat
html = t.render(source, {}).strip()
assert html == u'<h3 id="heading_3">Heading 3</h3>'
assert html == u'<h3 id="heading-3">Heading 3</h3>'

def test_line_statements_with_config():
source = """
@@ -315,7 +292,7 @@ def test_line_statements_with_config():
t.configure(s)
t.env.filters['dateformat'] = dateformat
html = t.render(source, {}).strip()
assert html == u'<h3 id="heading_3">Heading 3</h3>'
assert html == u'<h3 id="heading-3">Heading 3</h3>'


TEST_SITE = File(__file__).parent.child_folder('_test')
@@ -378,7 +355,6 @@ class TestJinjaTemplate(object):
def test_line_statements_with_blocks(self):
site = Site(TEST_SITE)
JINJA2.copy_contents_to(site.content.source)
inc = File(TEST_SITE.child('content/inc.md'))
text = """
{% extends 'index.html' %}
$$$ block body


+ 1
- 1
hyde/version.py View File

@@ -3,4 +3,4 @@
Handles hyde version
TODO: Use fabric like versioning scheme
"""
__version__ = '0.8.5a15'
__version__ = '0.8.5a16'

+ 7
- 8
requirements.txt View File

@@ -1,8 +1,7 @@
argparse
commando
PyYAML
Markdown
MarkupSafe
smartypants
-e git://github.com/hyde/typogrify.git#egg=typogrify
Jinja2
commando==0.3.2a
PyYAML==3.10
Markdown==2.3.1
MarkupSafe==0.15
Pygments==1.6
typogrify==2.0.0
Jinja2==2.6

+ 9
- 12
setup.py View File

@@ -114,21 +114,18 @@ setup(name=PROJECT,
author_email='lakshmi.vyas@gmail.com',
url='http://hyde.github.com',
packages=find_packages(),
dependency_links=[
"https://github.com/hyde/typogrify/tarball/hyde-setup#egg=typogrify-hyde"
],
requires=['python (>= 2.7)'],
install_requires=(
'argparse',
'commando',
'jinja2',
'pyYAML',
'markdown',
'smartypants',
'pygments',
'typogrify-hyde'
'commando==0.3.2a',
'PyYAML==3.10',
'Markdown==2.3.1',
'MarkupSafe==0.15',
'Pygments==1.6',
'typogrify==2.0.0',
'Jinja2==2.6'
),
tests_require=(
'nose',
'nose', 'mock'
),
test_suite='nose.collector',
include_package_data = True,


Loading…
Cancel
Save