diff options
| author | Michael Merickel <michael@merickel.org> | 2018-10-31 01:46:25 -0500 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2018-10-31 01:46:25 -0500 |
| commit | 4aa2eb5f970b812a96480e2cd7c18c1103b844c8 (patch) | |
| tree | eb1406080661b3cf8b5b3ad2935992863b654f00 /src | |
| parent | 26ff2bf625f426f90abb313e9e028fc16308d105 (diff) | |
| download | pyramid-4aa2eb5f970b812a96480e2cd7c18c1103b844c8.tar.gz pyramid-4aa2eb5f970b812a96480e2cd7c18c1103b844c8.tar.bz2 pyramid-4aa2eb5f970b812a96480e2cd7c18c1103b844c8.zip | |
initial work removing pcreate
Diffstat (limited to 'src')
62 files changed, 0 insertions, 2661 deletions
diff --git a/src/pyramid/scaffolds/__init__.py b/src/pyramid/scaffolds/__init__.py deleted file mode 100644 index eff71d204..000000000 --- a/src/pyramid/scaffolds/__init__.py +++ /dev/null @@ -1,72 +0,0 @@ -import binascii -import os -from textwrap import dedent - -from pyramid.compat import native_ - -from pyramid.scaffolds.template import Template # API - - -class PyramidTemplate(Template): - """ - A class that can be used as a base class for Pyramid scaffolding - templates. - """ - - def pre(self, command, output_dir, vars): - """ Overrides :meth:`pyramid.scaffolds.template.Template.pre`, adding - several variables to the default variables list (including - ``random_string``, and ``package_logger``). It also prevents common - misnamings (such as naming a package "site" or naming a package - logger "root". - """ - vars['random_string'] = native_(binascii.hexlify(os.urandom(20))) - package_logger = vars['package'] - if package_logger == 'root': - # Rename the app logger in the rare case a project is named 'root' - package_logger = 'app' - vars['package_logger'] = package_logger - return Template.pre(self, command, output_dir, vars) - - def post(self, command, output_dir, vars): # pragma: no cover - """ Overrides :meth:`pyramid.scaffolds.template.Template.post`, to - print "Welcome to Pyramid. Sorry for the convenience." after a - successful scaffolding rendering.""" - - separator = "=" * 79 - msg = dedent( - """ - %(separator)s - Tutorials: https://docs.pylonsproject.org/projects/pyramid_tutorials/en/latest/ - Documentation: https://docs.pylonsproject.org/projects/pyramid/en/latest/ - Twitter: https://twitter.com/PylonsProject - Mailing List: https://groups.google.com/forum/#!forum/pylons-discuss - - Welcome to Pyramid. Sorry for the convenience. - %(separator)s - """ # noqa: E501 - % {'separator': separator} - ) - - self.out(msg) - return Template.post(self, command, output_dir, vars) - - def out(self, msg): # pragma: no cover (replaceable testing hook) - print(msg) - - -class StarterProjectTemplate(PyramidTemplate): - _template_dir = 'starter' - summary = 'Pyramid starter project using URL dispatch and Jinja2' - - -class ZODBProjectTemplate(PyramidTemplate): - _template_dir = 'zodb' - summary = 'Pyramid project using ZODB, traversal, and Chameleon' - - -class AlchemyProjectTemplate(PyramidTemplate): - _template_dir = 'alchemy' - summary = ( - 'Pyramid project using SQLAlchemy, SQLite, URL dispatch, and ' 'Jinja2' - ) diff --git a/src/pyramid/scaffolds/alchemy/+dot+coveragerc_tmpl b/src/pyramid/scaffolds/alchemy/+dot+coveragerc_tmpl deleted file mode 100644 index 273a4a580..000000000 --- a/src/pyramid/scaffolds/alchemy/+dot+coveragerc_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[run] -source = {{package}} -omit = {{package}}/test* diff --git a/src/pyramid/scaffolds/alchemy/+package+/__init__.py b/src/pyramid/scaffolds/alchemy/+package+/__init__.py deleted file mode 100644 index 4dab44823..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from pyramid.config import Configurator - - -def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - config = Configurator(settings=settings) - config.include('pyramid_jinja2') - config.include('.models') - config.include('.routes') - config.scan() - return config.make_wsgi_app() diff --git a/src/pyramid/scaffolds/alchemy/+package+/models/__init__.py_tmpl b/src/pyramid/scaffolds/alchemy/+package+/models/__init__.py_tmpl deleted file mode 100644 index 521816ce7..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/models/__init__.py_tmpl +++ /dev/null @@ -1,74 +0,0 @@ -from sqlalchemy import engine_from_config -from sqlalchemy.orm import sessionmaker -from sqlalchemy.orm import configure_mappers -import zope.sqlalchemy - -# import or define all models here to ensure they are attached to the -# Base.metadata prior to any initialization routines -from .mymodel import MyModel # noqa - -# run configure_mappers after defining all of the models to ensure -# all relationships can be setup -configure_mappers() - - -def get_engine(settings, prefix='sqlalchemy.'): - return engine_from_config(settings, prefix) - - -def get_session_factory(engine): - factory = sessionmaker() - factory.configure(bind=engine) - return factory - - -def get_tm_session(session_factory, transaction_manager): - """ - Get a ``sqlalchemy.orm.Session`` instance backed by a transaction. - - This function will hook the session to the transaction manager which - will take care of committing any changes. - - - When using pyramid_tm it will automatically be committed or aborted - depending on whether an exception is raised. - - - When using scripts you should wrap the session in a manager yourself. - For example:: - - import transaction - - engine = get_engine(settings) - session_factory = get_session_factory(engine) - with transaction.manager: - dbsession = get_tm_session(session_factory, transaction.manager) - - """ - dbsession = session_factory() - zope.sqlalchemy.register( - dbsession, transaction_manager=transaction_manager) - return dbsession - - -def includeme(config): - """ - Initialize the model for a Pyramid app. - - Activate this setup using ``config.include('{{project}}.models')``. - - """ - settings = config.get_settings() - settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager' - - # use pyramid_tm to hook the transaction lifecycle to the request - config.include('pyramid_tm') - - session_factory = get_session_factory(get_engine(settings)) - config.registry['dbsession_factory'] = session_factory - - # make request.dbsession available for use in Pyramid - config.add_request_method( - # r.tm is the transaction manager used by pyramid_tm - lambda r: get_tm_session(session_factory, r.tm), - 'dbsession', - reify=True - ) diff --git a/src/pyramid/scaffolds/alchemy/+package+/models/meta.py b/src/pyramid/scaffolds/alchemy/+package+/models/meta.py deleted file mode 100644 index 0682247b5..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/models/meta.py +++ /dev/null @@ -1,16 +0,0 @@ -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.schema import MetaData - -# Recommended naming convention used by Alembic, as various different database -# providers will autogenerate vastly different names making migrations more -# difficult. See: http://alembic.zzzcomputing.com/en/latest/naming.html -NAMING_CONVENTION = { - "ix": 'ix_%(column_0_label)s', - "uq": "uq_%(table_name)s_%(column_0_name)s", - "ck": "ck_%(table_name)s_%(constraint_name)s", - "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", - "pk": "pk_%(table_name)s" -} - -metadata = MetaData(naming_convention=NAMING_CONVENTION) -Base = declarative_base(metadata=metadata) diff --git a/src/pyramid/scaffolds/alchemy/+package+/models/mymodel.py b/src/pyramid/scaffolds/alchemy/+package+/models/mymodel.py deleted file mode 100644 index d65a01a42..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/models/mymodel.py +++ /dev/null @@ -1,18 +0,0 @@ -from sqlalchemy import ( - Column, - Index, - Integer, - Text, -) - -from .meta import Base - - -class MyModel(Base): - __tablename__ = 'models' - id = Column(Integer, primary_key=True) - name = Column(Text) - value = Column(Integer) - - -Index('my_index', MyModel.name, unique=True, mysql_length=255) diff --git a/src/pyramid/scaffolds/alchemy/+package+/routes.py b/src/pyramid/scaffolds/alchemy/+package+/routes.py deleted file mode 100644 index 25504ad4d..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/routes.py +++ /dev/null @@ -1,3 +0,0 @@ -def includeme(config): - config.add_static_view('static', 'static', cache_max_age=3600) - config.add_route('home', '/') diff --git a/src/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py b/src/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py deleted file mode 100644 index 5bb534f79..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# package diff --git a/src/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py b/src/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py deleted file mode 100644 index 7307ecc5c..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py +++ /dev/null @@ -1,45 +0,0 @@ -import os -import sys -import transaction - -from pyramid.paster import ( - get_appsettings, - setup_logging, - ) - -from pyramid.scripts.common import parse_vars - -from ..models.meta import Base -from ..models import ( - get_engine, - get_session_factory, - get_tm_session, - ) -from ..models import MyModel - - -def usage(argv): - cmd = os.path.basename(argv[0]) - print('usage: %s <config_uri> [var=value]\n' - '(example: "%s development.ini")' % (cmd, cmd)) - sys.exit(1) - - -def main(argv=sys.argv): - if len(argv) < 2: - usage(argv) - config_uri = argv[1] - options = parse_vars(argv[2:]) - setup_logging(config_uri) - settings = get_appsettings(config_uri, options=options) - - engine = get_engine(settings) - Base.metadata.create_all(engine) - - session_factory = get_session_factory(engine) - - with transaction.manager: - dbsession = get_tm_session(session_factory, transaction.manager) - - model = MyModel(name='one', value=1) - dbsession.add(model) diff --git a/src/pyramid/scaffolds/alchemy/+package+/static/pyramid-16x16.png b/src/pyramid/scaffolds/alchemy/+package+/static/pyramid-16x16.png Binary files differdeleted file mode 100644 index 979203112..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/static/pyramid-16x16.png +++ /dev/null diff --git a/src/pyramid/scaffolds/alchemy/+package+/static/pyramid.png b/src/pyramid/scaffolds/alchemy/+package+/static/pyramid.png Binary files differdeleted file mode 100644 index 4ab837be9..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/static/pyramid.png +++ /dev/null diff --git a/src/pyramid/scaffolds/alchemy/+package+/static/theme.css b/src/pyramid/scaffolds/alchemy/+package+/static/theme.css deleted file mode 100644 index 0f4b1a4d4..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/static/theme.css +++ /dev/null @@ -1,154 +0,0 @@ -@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); -body { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; - color: #ffffff; - background: #bc2131; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; -} -p { - font-weight: 300; -} -.font-normal { - font-weight: 400; -} -.font-semi-bold { - font-weight: 600; -} -.font-bold { - font-weight: 700; -} -.starter-template { - margin-top: 250px; -} -.starter-template .content { - margin-left: 10px; -} -.starter-template .content h1 { - margin-top: 10px; - font-size: 60px; -} -.starter-template .content h1 .smaller { - font-size: 40px; - color: #f2b7bd; -} -.starter-template .content .lead { - font-size: 25px; - color: #f2b7bd; -} -.starter-template .content .lead .font-normal { - color: #ffffff; -} -.starter-template .links { - float: right; - right: 0; - margin-top: 125px; -} -.starter-template .links ul { - display: block; - padding: 0; - margin: 0; -} -.starter-template .links ul li { - list-style: none; - display: inline; - margin: 0 10px; -} -.starter-template .links ul li:first-child { - margin-left: 0; -} -.starter-template .links ul li:last-child { - margin-right: 0; -} -.starter-template .links ul li.current-version { - color: #f2b7bd; - font-weight: 400; -} -.starter-template .links ul li a, a { - color: #f2b7bd; - text-decoration: underline; -} -.starter-template .links ul li a:hover, a:hover { - color: #ffffff; - text-decoration: underline; -} -.starter-template .links ul li .icon-muted { - color: #eb8b95; - margin-right: 5px; -} -.starter-template .links ul li:hover .icon-muted { - color: #ffffff; -} -.starter-template .copyright { - margin-top: 10px; - font-size: 0.9em; - color: #f2b7bd; - text-transform: lowercase; - float: right; - right: 0; -} -@media (max-width: 1199px) { - .starter-template .content h1 { - font-size: 45px; - } - .starter-template .content h1 .smaller { - font-size: 30px; - } - .starter-template .content .lead { - font-size: 20px; - } -} -@media (max-width: 991px) { - .starter-template { - margin-top: 0; - } - .starter-template .logo { - margin: 40px auto; - } - .starter-template .content { - margin-left: 0; - text-align: center; - } - .starter-template .content h1 { - margin-bottom: 20px; - } - .starter-template .links { - float: none; - text-align: center; - margin-top: 60px; - } - .starter-template .copyright { - float: none; - text-align: center; - } -} -@media (max-width: 767px) { - .starter-template .content h1 .smaller { - font-size: 25px; - display: block; - } - .starter-template .content .lead { - font-size: 16px; - } - .starter-template .links { - margin-top: 40px; - } - .starter-template .links ul li { - display: block; - margin: 0; - } - .starter-template .links ul li .icon-muted { - display: none; - } - .starter-template .copyright { - margin-top: 20px; - } -} diff --git a/src/pyramid/scaffolds/alchemy/+package+/templates/404.jinja2_tmpl b/src/pyramid/scaffolds/alchemy/+package+/templates/404.jinja2_tmpl deleted file mode 100644 index 1917f83c7..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/templates/404.jinja2_tmpl +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout.jinja2" %} - -{% block content %} -<div class="content"> - <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1> - <p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p> -</div> -{% endblock content %} diff --git a/src/pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl b/src/pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl deleted file mode 100644 index d6b3ca9c6..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE html> -<html lang="\{\{request.locale_name\}\}"> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta name="description" content="pyramid web application"> - <meta name="author" content="Pylons Project"> - <link rel="shortcut icon" href="\{\{request.static_url('{{package}}:static/pyramid-16x16.png')\}\}"> - - <title>Alchemy Scaffold for The Pyramid Web Framework</title> - - <!-- Bootstrap core CSS --> - <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> - - <!-- Custom styles for this scaffold --> - <link href="\{\{request.static_url('{{package}}:static/theme.css')\}\}" rel="stylesheet"> - - <!-- HTML5 shiv and Respond.js IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js" integrity="sha384-0s5Pv64cNZJieYFkXYOTId2HMA2Lfb6q2nAcx2n0RTLUnCAoTTsS0nKEO27XyKcY" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js" integrity="sha384-f1r2UzjsxZ9T4V1f2zBO/evUqSEOpeaUUZcMTz1Up63bl4ruYnFYeM+BxI4NhyI0" crossorigin="anonymous"></script> - <![endif]--> - </head> - - <body> - - <div class="starter-template"> - <div class="container"> - <div class="row"> - <div class="col-md-2"> - <img class="logo img-responsive" src="\{\{request.static_url('{{package}}:static/pyramid.png')\}\}" alt="pyramid web framework"> - </div> - <div class="col-md-10"> - {% block content %} - <p>No content</p> - {% endblock content %} - </div> - </div> - <div class="row"> - <div class="links"> - <ul> - <li class="current-version">Generated by v{{pyramid_version}}</li> - <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/">Docs</a></li> - <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> - <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="https://webchat.freenode.net/?channels=pyramid">IRC Channel</a></li> - <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="https://pylonsproject.org">Pylons Project</a></li> - </ul> - </div> - </div> - <div class="row"> - <div class="copyright"> - Copyright © Pylons Project - </div> - </div> - </div> - </div> - - - <!-- Bootstrap core JavaScript - ================================================== --> - <!-- Placed at the end of the document so the pages load faster --> - <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js" integrity="sha384-aBL3Lzi6c9LNDGvpHkZrrm3ZVsIwohDD7CDozL0pk8FwCrfmV7H9w8j3L7ikEv6h" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js" integrity="sha384-s1ITto93iSMDxlp/79qhWHi+LsIi9Gx6yL+cOKDuymvihkfol83TYbLbOw+W/wv4" crossorigin="anonymous"></script> - </body> -</html> diff --git a/src/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl b/src/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl deleted file mode 100644 index 01fe5b8e3..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout.jinja2" %} - -{% block content %} -<div class="content"> - <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1> - <p class="lead">Welcome to <span class="font-normal">\{\{project\}\}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework {{pyramid_version}}</span>.</p> -</div> -{% endblock content %} diff --git a/src/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl b/src/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl deleted file mode 100644 index 072eab5b2..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl +++ /dev/null @@ -1,65 +0,0 @@ -import unittest -import transaction - -from pyramid import testing - - -def dummy_request(dbsession): - return testing.DummyRequest(dbsession=dbsession) - - -class BaseTest(unittest.TestCase): - def setUp(self): - self.config = testing.setUp(settings={ - 'sqlalchemy.url': 'sqlite:///:memory:' - }) - self.config.include('.models') - settings = self.config.get_settings() - - from .models import ( - get_engine, - get_session_factory, - get_tm_session, - ) - - self.engine = get_engine(settings) - session_factory = get_session_factory(self.engine) - - self.session = get_tm_session(session_factory, transaction.manager) - - def init_database(self): - from .models.meta import Base - Base.metadata.create_all(self.engine) - - def tearDown(self): - from .models.meta import Base - - testing.tearDown() - transaction.abort() - Base.metadata.drop_all(self.engine) - - -class TestMyViewSuccessCondition(BaseTest): - - def setUp(self): - super(TestMyViewSuccessCondition, self).setUp() - self.init_database() - - from .models import MyModel - - model = MyModel(name='one', value=55) - self.session.add(model) - - def test_passing_view(self): - from .views.default import my_view - info = my_view(dummy_request(self.session)) - self.assertEqual(info['one'].name, 'one') - self.assertEqual(info['project'], '{{project}}') - - -class TestMyViewFailureCondition(BaseTest): - - def test_failing_view(self): - from .views.default import my_view - info = my_view(dummy_request(self.session)) - self.assertEqual(info.status_int, 500) diff --git a/src/pyramid/scaffolds/alchemy/+package+/views/__init__.py b/src/pyramid/scaffolds/alchemy/+package+/views/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/views/__init__.py +++ /dev/null diff --git a/src/pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl b/src/pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl deleted file mode 100644 index 7bf0026e5..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl +++ /dev/null @@ -1,33 +0,0 @@ -from pyramid.response import Response -from pyramid.view import view_config - -from sqlalchemy.exc import DBAPIError - -from ..models import MyModel - - -@view_config(route_name='home', renderer='../templates/mytemplate.jinja2') -def my_view(request): - try: - query = request.dbsession.query(MyModel) - one = query.filter(MyModel.name == 'one').first() - except DBAPIError: - return Response(db_err_msg, content_type='text/plain', status=500) - return {'one': one, 'project': '{{project}}'} - - -db_err_msg = """\ -Pyramid is having a problem using your SQL database. The problem -might be caused by one of the following things: - -1. You may need to run the "initialize_{{project}}_db" script - to initialize your database tables. Check your virtual - environment's "bin" directory for this script and try to run it. - -2. Your database server may not be running. Check that the - database server referred to by the "sqlalchemy.url" setting in - your "development.ini" file is running. - -After you fix the problem, please restart the Pyramid application to -try it again. -""" diff --git a/src/pyramid/scaffolds/alchemy/+package+/views/notfound.py_tmpl b/src/pyramid/scaffolds/alchemy/+package+/views/notfound.py_tmpl deleted file mode 100644 index 69d6e2804..000000000 --- a/src/pyramid/scaffolds/alchemy/+package+/views/notfound.py_tmpl +++ /dev/null @@ -1,7 +0,0 @@ -from pyramid.view import notfound_view_config - - -@notfound_view_config(renderer='../templates/404.jinja2') -def notfound_view(request): - request.response.status = 404 - return {} diff --git a/src/pyramid/scaffolds/alchemy/CHANGES.txt_tmpl b/src/pyramid/scaffolds/alchemy/CHANGES.txt_tmpl deleted file mode 100644 index 35a34f332..000000000 --- a/src/pyramid/scaffolds/alchemy/CHANGES.txt_tmpl +++ /dev/null @@ -1,4 +0,0 @@ -0.0 ---- - -- Initial version diff --git a/src/pyramid/scaffolds/alchemy/MANIFEST.in_tmpl b/src/pyramid/scaffolds/alchemy/MANIFEST.in_tmpl deleted file mode 100644 index f93f45544..000000000 --- a/src/pyramid/scaffolds/alchemy/MANIFEST.in_tmpl +++ /dev/null @@ -1,2 +0,0 @@ -include *.txt *.ini *.cfg *.rst -recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.jinja2 *.pt *.txt *.mak *.mako *.js *.html *.xml diff --git a/src/pyramid/scaffolds/alchemy/README.txt_tmpl b/src/pyramid/scaffolds/alchemy/README.txt_tmpl deleted file mode 100644 index 83c37edea..000000000 --- a/src/pyramid/scaffolds/alchemy/README.txt_tmpl +++ /dev/null @@ -1,14 +0,0 @@ -{{project}} README -================== - -Getting Started ---------------- - -- cd <directory containing this file> - -- $VENV/bin/pip install -e . - -- $VENV/bin/initialize_{{project}}_db development.ini - -- $VENV/bin/pserve development.ini - diff --git a/src/pyramid/scaffolds/alchemy/development.ini_tmpl b/src/pyramid/scaffolds/alchemy/development.ini_tmpl deleted file mode 100644 index 3cfb3996d..000000000 --- a/src/pyramid/scaffolds/alchemy/development.ini_tmpl +++ /dev/null @@ -1,69 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = true -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en -pyramid.includes = - pyramid_debugtoolbar - -sqlalchemy.url = sqlite:///%(here)s/{{project}}.sqlite - -# By default, the toolbar only appears for clients from IP addresses -# '127.0.0.1' and '::1'. -# debugtoolbar.hosts = 127.0.0.1 ::1 - -### -# wsgi server configuration -### - -[server:main] -use = egg:waitress#main -listen = localhost:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}}, sqlalchemy - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_{{package_logger}}] -level = DEBUG -handlers = -qualname = {{package}} - -[logger_sqlalchemy] -level = INFO -handlers = -qualname = sqlalchemy.engine -# "level = INFO" logs SQL queries. -# "level = DEBUG" logs SQL queries and results. -# "level = WARN" logs neither. (Recommended for production systems.) - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/alchemy/production.ini_tmpl b/src/pyramid/scaffolds/alchemy/production.ini_tmpl deleted file mode 100644 index 043229a71..000000000 --- a/src/pyramid/scaffolds/alchemy/production.ini_tmpl +++ /dev/null @@ -1,59 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = false -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en - -sqlalchemy.url = sqlite:///%(here)s/{{project}}.sqlite - -[server:main] -use = egg:waitress#main -listen = *:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}}, sqlalchemy - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console - -[logger_{{package_logger}}] -level = WARN -handlers = -qualname = {{package}} - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine -# "level = INFO" logs SQL queries. -# "level = DEBUG" logs SQL queries and results. -# "level = WARN" logs neither. (Recommended for production systems.) - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/alchemy/pytest.ini_tmpl b/src/pyramid/scaffolds/alchemy/pytest.ini_tmpl deleted file mode 100644 index a30c8bcad..000000000 --- a/src/pyramid/scaffolds/alchemy/pytest.ini_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[pytest] -testpaths = {{package}} -python_files = *.py diff --git a/src/pyramid/scaffolds/alchemy/setup.py_tmpl b/src/pyramid/scaffolds/alchemy/setup.py_tmpl deleted file mode 100644 index 9318817dc..000000000 --- a/src/pyramid/scaffolds/alchemy/setup.py_tmpl +++ /dev/null @@ -1,55 +0,0 @@ -import os - -from setuptools import setup, find_packages - -here = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(here, 'README.txt')) as f: - README = f.read() -with open(os.path.join(here, 'CHANGES.txt')) as f: - CHANGES = f.read() - -requires = [ - 'pyramid', - 'pyramid_jinja2', - 'pyramid_debugtoolbar', - 'pyramid_tm', - 'SQLAlchemy', - 'transaction', - 'zope.sqlalchemy', - 'waitress', - ] - -tests_require = [ - 'WebTest >= 1.3.1', # py3 compat - 'pytest', # includes virtualenv - 'pytest-cov', - ] - -setup(name='{{project}}', - version='0.0', - description='{{project}}', - long_description=README + '\n\n' + CHANGES, - classifiers=[ - "Programming Language :: Python", - "Framework :: Pyramid", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", - ], - author='', - author_email='', - url='', - keywords='web wsgi bfg pylons pyramid', - packages=find_packages(), - include_package_data=True, - zip_safe=False, - extras_require={ - 'testing': tests_require, - }, - install_requires=requires, - entry_points="""\ - [paste.app_factory] - main = {{package}}:main - [console_scripts] - initialize_{{project}}_db = {{package}}.scripts.initializedb:main - """, - ) diff --git a/src/pyramid/scaffolds/copydir.py b/src/pyramid/scaffolds/copydir.py deleted file mode 100644 index 31e8dfb9e..000000000 --- a/src/pyramid/scaffolds/copydir.py +++ /dev/null @@ -1,372 +0,0 @@ -# (c) 2005 Ian Bicking and contributors; written for Paste -# (http://pythonpaste.org) Licensed under the MIT license: -# http://www.opensource.org/licenses/mit-license.php - -import os -import sys -import pkg_resources - -from pyramid.compat import ( - input_, - native_, - url_quote as compat_url_quote, - escape, -) - -fsenc = sys.getfilesystemencoding() - - -class SkipTemplate(Exception): - """ - Raised to indicate that the template should not be copied over. - Raise this exception during the substitution of your template - """ - - -def copy_dir( - source, - dest, - vars, - verbosity, - simulate, - indent=0, - sub_vars=True, - interactive=False, - overwrite=True, - template_renderer=None, - out_=sys.stdout, -): - """ - Copies the ``source`` directory to the ``dest`` directory. - - ``vars``: A dictionary of variables to use in any substitutions. - - ``verbosity``: Higher numbers will show more about what is happening. - - ``simulate``: If true, then don't actually *do* anything. - - ``indent``: Indent any messages by this amount. - - ``sub_vars``: If true, variables in ``_tmpl`` files and ``+var+`` - in filenames will be substituted. - - ``overwrite``: If false, then don't every overwrite anything. - - ``interactive``: If you are overwriting a file and interactive is - true, then ask before overwriting. - - ``template_renderer``: This is a function for rendering templates (if you - don't want to use string.Template). It should have the signature - ``template_renderer(content_as_string, vars_as_dict, - filename=filename)``. - """ - - def out(msg): - out_.write(msg) - out_.write('\n') - out_.flush() - - # This allows you to use a leading +dot+ in filenames which would - # otherwise be skipped because leading dots make the file hidden: - vars.setdefault('dot', '.') - vars.setdefault('plus', '+') - use_pkg_resources = isinstance(source, tuple) - if use_pkg_resources: - names = sorted(pkg_resources.resource_listdir(source[0], source[1])) - else: - names = sorted(os.listdir(source)) - pad = ' ' * (indent * 2) - if not os.path.exists(dest): - if verbosity >= 1: - out('%sCreating %s/' % (pad, dest)) - if not simulate: - makedirs(dest, verbosity=verbosity, pad=pad) - elif verbosity >= 2: - out('%sDirectory %s exists' % (pad, dest)) - for name in names: - if use_pkg_resources: - full = '/'.join([source[1], name]) - else: - full = os.path.join(source, name) - reason = should_skip_file(name) - if reason: - if verbosity >= 2: - reason = pad + reason % {'filename': full} - out(reason) - continue # pragma: no cover - if sub_vars: - dest_full = os.path.join(dest, substitute_filename(name, vars)) - sub_file = False - if dest_full.endswith('_tmpl'): - dest_full = dest_full[:-5] - sub_file = sub_vars - if use_pkg_resources and pkg_resources.resource_isdir(source[0], full): - if verbosity: - out('%sRecursing into %s' % (pad, os.path.basename(full))) - copy_dir( - (source[0], full), - dest_full, - vars, - verbosity, - simulate, - indent=indent + 1, - sub_vars=sub_vars, - interactive=interactive, - overwrite=overwrite, - template_renderer=template_renderer, - out_=out_, - ) - continue - elif not use_pkg_resources and os.path.isdir(full): - if verbosity: - out('%sRecursing into %s' % (pad, os.path.basename(full))) - copy_dir( - full, - dest_full, - vars, - verbosity, - simulate, - indent=indent + 1, - sub_vars=sub_vars, - interactive=interactive, - overwrite=overwrite, - template_renderer=template_renderer, - out_=out_, - ) - continue - elif use_pkg_resources: - content = pkg_resources.resource_string(source[0], full) - else: - with open(full, 'rb') as f: - content = f.read() - if sub_file: - try: - content = substitute_content( - content, - vars, - filename=full, - template_renderer=template_renderer, - ) - except SkipTemplate: - continue # pragma: no cover - if content is None: - continue # pragma: no cover - already_exists = os.path.exists(dest_full) - if already_exists: - with open(dest_full, 'rb') as f: - old_content = f.read() - if old_content == content: - if verbosity: - out( - '%s%s already exists (same content)' % (pad, dest_full) - ) - continue # pragma: no cover - if interactive: - if not query_interactive( - native_(full, fsenc), - native_(dest_full, fsenc), - native_(content, fsenc), - native_(old_content, fsenc), - simulate=simulate, - out_=out_, - ): - continue - elif not overwrite: - continue # pragma: no cover - if verbosity and use_pkg_resources: - out('%sCopying %s to %s' % (pad, full, dest_full)) - elif verbosity: - out( - '%sCopying %s to %s' % (pad, os.path.basename(full), dest_full) - ) - if not simulate: - with open(dest_full, 'wb') as f: - f.write(content) - - -def should_skip_file(name): - """ - Checks if a file should be skipped based on its name. - - If it should be skipped, returns the reason, otherwise returns - None. - """ - if name.startswith('.'): - return 'Skipping hidden file %(filename)s' - if name.endswith(('~', '.bak')): - return 'Skipping backup file %(filename)s' - if name.endswith(('.pyc', '.pyo')): - return 'Skipping %s file ' % os.path.splitext(name)[1] + '%(filename)s' - if name.endswith('$py.class'): - return 'Skipping $py.class file %(filename)s' - if name in ('CVS', '_darcs'): - return 'Skipping version control directory %(filename)s' - return None - - -# Overridden on user's request: -all_answer = None - - -def query_interactive( - src_fn, dest_fn, src_content, dest_content, simulate, out_=sys.stdout -): - def out(msg): - out_.write(msg) - out_.write('\n') - out_.flush() - - global all_answer - from difflib import unified_diff, context_diff - - u_diff = list( - unified_diff( - dest_content.splitlines(), - src_content.splitlines(), - dest_fn, - src_fn, - ) - ) - c_diff = list( - context_diff( - dest_content.splitlines(), - src_content.splitlines(), - dest_fn, - src_fn, - ) - ) - added = len( - [l for l in u_diff if l.startswith('+') and not l.startswith('+++')] - ) - removed = len( - [l for l in u_diff if l.startswith('-') and not l.startswith('---')] - ) - if added > removed: - msg = '; %i lines added' % (added - removed) - elif removed > added: - msg = '; %i lines removed' % (removed - added) - else: - msg = '' - out( - 'Replace %i bytes with %i bytes (%i/%i lines changed%s)' - % ( - len(dest_content), - len(src_content), - removed, - len(dest_content.splitlines()), - msg, - ) - ) - prompt = 'Overwrite %s [y/n/d/B/?] ' % dest_fn - while 1: - if all_answer is None: - response = input_(prompt).strip().lower() - else: - response = all_answer - if not response or response[0] == 'b': - import shutil - - new_dest_fn = dest_fn + '.bak' - n = 0 - while os.path.exists(new_dest_fn): - n += 1 - new_dest_fn = dest_fn + '.bak' + str(n) - out('Backing up %s to %s' % (dest_fn, new_dest_fn)) - if not simulate: - shutil.copyfile(dest_fn, new_dest_fn) - return True - elif response.startswith('all '): - rest = response[4:].strip() - if not rest or rest[0] not in ('y', 'n', 'b'): - out(query_usage) - continue - response = all_answer = rest[0] - if response[0] == 'y': - return True - elif response[0] == 'n': - return False - elif response == 'dc': - out('\n'.join(c_diff)) - elif response[0] == 'd': - out('\n'.join(u_diff)) - else: - out(query_usage) - - -query_usage = """\ -Responses: - Y(es): Overwrite the file with the new content. - N(o): Do not overwrite the file. - D(iff): Show a unified diff of the proposed changes (dc=context diff) - B(ackup): Save the current file contents to a .bak file - (and overwrite) - Type "all Y/N/B" to use Y/N/B for answer to all future questions -""" - - -def makedirs(dir, verbosity, pad): - parent = os.path.dirname(os.path.abspath(dir)) - if not os.path.exists(parent): - makedirs(parent, verbosity, pad) # pragma: no cover - os.mkdir(dir) - - -def substitute_filename(fn, vars): - for var, value in vars.items(): - fn = fn.replace('+%s+' % var, str(value)) - return fn - - -def substitute_content( - content, vars, filename='<string>', template_renderer=None -): - v = standard_vars.copy() - v.update(vars) - return template_renderer(content, v, filename=filename) - - -def html_quote(s): - if s is None: - return '' - return escape(str(s), 1) - - -def url_quote(s): - if s is None: - return '' - return compat_url_quote(str(s)) - - -def test(conf, true_cond, false_cond=None): - if conf: - return true_cond - else: - return false_cond - - -def skip_template(condition=True, *args): - """ - Raise SkipTemplate, which causes copydir to skip the template - being processed. If you pass in a condition, only raise if that - condition is true (allows you to use this with string.Template) - - If you pass any additional arguments, they will be used to - instantiate SkipTemplate (generally use like - ``skip_template(license=='GPL', 'Skipping file; not using GPL')``) - """ - if condition: - raise SkipTemplate(*args) - - -standard_vars = { - 'nothing': None, - 'html_quote': html_quote, - 'url_quote': url_quote, - 'empty': '""', - 'test': test, - 'repr': repr, - 'str': str, - 'bool': bool, - 'SkipTemplate': SkipTemplate, - 'skip_template': skip_template, -} diff --git a/src/pyramid/scaffolds/starter/+dot+coveragerc_tmpl b/src/pyramid/scaffolds/starter/+dot+coveragerc_tmpl deleted file mode 100644 index 273a4a580..000000000 --- a/src/pyramid/scaffolds/starter/+dot+coveragerc_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[run] -source = {{package}} -omit = {{package}}/test* diff --git a/src/pyramid/scaffolds/starter/+package+/__init__.py b/src/pyramid/scaffolds/starter/+package+/__init__.py deleted file mode 100644 index 49dde36d4..000000000 --- a/src/pyramid/scaffolds/starter/+package+/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from pyramid.config import Configurator - - -def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - config = Configurator(settings=settings) - config.include('pyramid_jinja2') - config.add_static_view('static', 'static', cache_max_age=3600) - config.add_route('home', '/') - config.scan() - return config.make_wsgi_app() diff --git a/src/pyramid/scaffolds/starter/+package+/static/pyramid-16x16.png b/src/pyramid/scaffolds/starter/+package+/static/pyramid-16x16.png Binary files differdeleted file mode 100644 index 979203112..000000000 --- a/src/pyramid/scaffolds/starter/+package+/static/pyramid-16x16.png +++ /dev/null diff --git a/src/pyramid/scaffolds/starter/+package+/static/pyramid.png b/src/pyramid/scaffolds/starter/+package+/static/pyramid.png Binary files differdeleted file mode 100644 index 4ab837be9..000000000 --- a/src/pyramid/scaffolds/starter/+package+/static/pyramid.png +++ /dev/null diff --git a/src/pyramid/scaffolds/starter/+package+/static/theme.css b/src/pyramid/scaffolds/starter/+package+/static/theme.css deleted file mode 100644 index be50ad420..000000000 --- a/src/pyramid/scaffolds/starter/+package+/static/theme.css +++ /dev/null @@ -1,152 +0,0 @@ -@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); -body { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; - color: #ffffff; - background: #bc2131; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; -} -p { - font-weight: 300; -} -.font-normal { - font-weight: 400; -} -.font-semi-bold { - font-weight: 600; -} -.font-bold { - font-weight: 700; -} -.starter-template { - margin-top: 250px; -} -.starter-template .content { - margin-left: 10px; -} -.starter-template .content h1 { - margin-top: 10px; - font-size: 60px; -} -.starter-template .content h1 .smaller { - font-size: 40px; - color: #f2b7bd; -} -.starter-template .content .lead { - font-size: 25px; - color: #f2b7bd; -} -.starter-template .content .lead .font-normal { - color: #ffffff; -} -.starter-template .links { - float: right; - right: 0; - margin-top: 125px; -} -.starter-template .links ul { - display: block; - padding: 0; - margin: 0; -} -.starter-template .links ul li { - list-style: none; - display: inline; - margin: 0 10px; -} -.starter-template .links ul li:first-child { - margin-left: 0; -} -.starter-template .links ul li:last-child { - margin-right: 0; -} -.starter-template .links ul li.current-version { - color: #f2b7bd; - font-weight: 400; -} -.starter-template .links ul li a { - color: #ffffff; -} -.starter-template .links ul li a:hover { - text-decoration: underline; -} -.starter-template .links ul li .icon-muted { - color: #eb8b95; - margin-right: 5px; -} -.starter-template .links ul li:hover .icon-muted { - color: #ffffff; -} -.starter-template .copyright { - margin-top: 10px; - font-size: 0.9em; - color: #f2b7bd; - text-transform: lowercase; - float: right; - right: 0; -} -@media (max-width: 1199px) { - .starter-template .content h1 { - font-size: 45px; - } - .starter-template .content h1 .smaller { - font-size: 30px; - } - .starter-template .content .lead { - font-size: 20px; - } -} -@media (max-width: 991px) { - .starter-template { - margin-top: 0; - } - .starter-template .logo { - margin: 40px auto; - } - .starter-template .content { - margin-left: 0; - text-align: center; - } - .starter-template .content h1 { - margin-bottom: 20px; - } - .starter-template .links { - float: none; - text-align: center; - margin-top: 60px; - } - .starter-template .copyright { - float: none; - text-align: center; - } -} -@media (max-width: 767px) { - .starter-template .content h1 .smaller { - font-size: 25px; - display: block; - } - .starter-template .content .lead { - font-size: 16px; - } - .starter-template .links { - margin-top: 40px; - } - .starter-template .links ul li { - display: block; - margin: 0; - } - .starter-template .links ul li .icon-muted { - display: none; - } - .starter-template .copyright { - margin-top: 20px; - } -} diff --git a/src/pyramid/scaffolds/starter/+package+/templates/layout.jinja2_tmpl b/src/pyramid/scaffolds/starter/+package+/templates/layout.jinja2_tmpl deleted file mode 100644 index 54baf7a2a..000000000 --- a/src/pyramid/scaffolds/starter/+package+/templates/layout.jinja2_tmpl +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE html> -<html lang="\{\{request.locale_name\}\}"> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta name="description" content="pyramid web application"> - <meta name="author" content="Pylons Project"> - <link rel="shortcut icon" href="\{\{request.static_url('{{package}}:static/pyramid-16x16.png')\}\}"> - - <title>Starter Scaffold for The Pyramid Web Framework</title> - - <!-- Bootstrap core CSS --> - <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> - - <!-- Custom styles for this scaffold --> - <link href="\{\{request.static_url('{{package}}:static/theme.css')\}\}" rel="stylesheet"> - - <!-- HTML5 shiv and Respond.js IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js" integrity="sha384-0s5Pv64cNZJieYFkXYOTId2HMA2Lfb6q2nAcx2n0RTLUnCAoTTsS0nKEO27XyKcY" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js" integrity="sha384-f1r2UzjsxZ9T4V1f2zBO/evUqSEOpeaUUZcMTz1Up63bl4ruYnFYeM+BxI4NhyI0" crossorigin="anonymous"></script> - <![endif]--> - </head> - - <body> - - <div class="starter-template"> - <div class="container"> - <div class="row"> - <div class="col-md-2"> - <img class="logo img-responsive" src="\{\{request.static_url('{{package}}:static/pyramid.png')\}\}" alt="pyramid web framework"> - </div> - <div class="col-md-10"> - {% block content %} - <p>No content</p> - {% endblock content %} - </div> - </div> - <div class="row"> - <div class="links"> - <ul> - <li class="current-version">Generated by v{{pyramid_version}}</li> - <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/">Docs</a></li> - <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> - <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="https://webchat.freenode.net/?channels=pyramid">IRC Channel</a></li> - <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="https://pylonsproject.org">Pylons Project</a></li> - </ul> - </div> - </div> - <div class="row"> - <div class="copyright"> - Copyright © Pylons Project - </div> - </div> - </div> - </div> - - - <!-- Bootstrap core JavaScript - ================================================== --> - <!-- Placed at the end of the document so the pages load faster --> - <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js" integrity="sha384-aBL3Lzi6c9LNDGvpHkZrrm3ZVsIwohDD7CDozL0pk8FwCrfmV7H9w8j3L7ikEv6h" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js" integrity="sha384-s1ITto93iSMDxlp/79qhWHi+LsIi9Gx6yL+cOKDuymvihkfol83TYbLbOw+W/wv4" crossorigin="anonymous"></script> - </body> -</html> diff --git a/src/pyramid/scaffolds/starter/+package+/templates/mytemplate.jinja2_tmpl b/src/pyramid/scaffolds/starter/+package+/templates/mytemplate.jinja2_tmpl deleted file mode 100644 index f826ff9e7..000000000 --- a/src/pyramid/scaffolds/starter/+package+/templates/mytemplate.jinja2_tmpl +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout.jinja2" %} - -{% block content%} -<div class="content"> - <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter scaffold</span></h1> - <p class="lead">Welcome to <span class="font-normal">\{\{project\}\}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework {{pyramid_version}}</span>.</p> -</div> -{% endblock content %} diff --git a/src/pyramid/scaffolds/starter/+package+/tests.py_tmpl b/src/pyramid/scaffolds/starter/+package+/tests.py_tmpl deleted file mode 100644 index 30f3f0430..000000000 --- a/src/pyramid/scaffolds/starter/+package+/tests.py_tmpl +++ /dev/null @@ -1,29 +0,0 @@ -import unittest - -from pyramid import testing - - -class ViewTests(unittest.TestCase): - def setUp(self): - self.config = testing.setUp() - - def tearDown(self): - testing.tearDown() - - def test_my_view(self): - from .views import my_view - request = testing.DummyRequest() - info = my_view(request) - self.assertEqual(info['project'], '{{project}}') - - -class FunctionalTests(unittest.TestCase): - def setUp(self): - from {{package}} import main - app = main({}) - from webtest import TestApp - self.testapp = TestApp(app) - - def test_root(self): - res = self.testapp.get('/', status=200) - self.assertTrue(b'Pyramid' in res.body) diff --git a/src/pyramid/scaffolds/starter/+package+/views.py_tmpl b/src/pyramid/scaffolds/starter/+package+/views.py_tmpl deleted file mode 100644 index 01b9d0130..000000000 --- a/src/pyramid/scaffolds/starter/+package+/views.py_tmpl +++ /dev/null @@ -1,6 +0,0 @@ -from pyramid.view import view_config - - -@view_config(route_name='home', renderer='templates/mytemplate.jinja2') -def my_view(request): - return {'project': '{{project}}'} diff --git a/src/pyramid/scaffolds/starter/CHANGES.txt_tmpl b/src/pyramid/scaffolds/starter/CHANGES.txt_tmpl deleted file mode 100644 index 35a34f332..000000000 --- a/src/pyramid/scaffolds/starter/CHANGES.txt_tmpl +++ /dev/null @@ -1,4 +0,0 @@ -0.0 ---- - -- Initial version diff --git a/src/pyramid/scaffolds/starter/MANIFEST.in_tmpl b/src/pyramid/scaffolds/starter/MANIFEST.in_tmpl deleted file mode 100644 index 4d1c86b44..000000000 --- a/src/pyramid/scaffolds/starter/MANIFEST.in_tmpl +++ /dev/null @@ -1,2 +0,0 @@ -include *.txt *.ini *.cfg *.rst -recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 diff --git a/src/pyramid/scaffolds/starter/README.txt_tmpl b/src/pyramid/scaffolds/starter/README.txt_tmpl deleted file mode 100644 index 127ad7595..000000000 --- a/src/pyramid/scaffolds/starter/README.txt_tmpl +++ /dev/null @@ -1,12 +0,0 @@ -{{project}} README -================== - -Getting Started ---------------- - -- cd <directory containing this file> - -- $VENV/bin/pip install -e . - -- $VENV/bin/pserve development.ini - diff --git a/src/pyramid/scaffolds/starter/development.ini_tmpl b/src/pyramid/scaffolds/starter/development.ini_tmpl deleted file mode 100644 index c6e42d97c..000000000 --- a/src/pyramid/scaffolds/starter/development.ini_tmpl +++ /dev/null @@ -1,59 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = true -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en -pyramid.includes = - pyramid_debugtoolbar - -# By default, the toolbar only appears for clients from IP addresses -# '127.0.0.1' and '::1'. -# debugtoolbar.hosts = 127.0.0.1 ::1 - -### -# wsgi server configuration -### - -[server:main] -use = egg:waitress#main -listen = localhost:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}} - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_{{package_logger}}] -level = DEBUG -handlers = -qualname = {{package}} - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/starter/production.ini_tmpl b/src/pyramid/scaffolds/starter/production.ini_tmpl deleted file mode 100644 index 1107a6b2f..000000000 --- a/src/pyramid/scaffolds/starter/production.ini_tmpl +++ /dev/null @@ -1,53 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = false -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en - -### -# wsgi server configuration -### - -[server:main] -use = egg:waitress#main -listen = *:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}} - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console - -[logger_{{package_logger}}] -level = WARN -handlers = -qualname = {{package}} - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/starter/pytest.ini_tmpl b/src/pyramid/scaffolds/starter/pytest.ini_tmpl deleted file mode 100644 index a30c8bcad..000000000 --- a/src/pyramid/scaffolds/starter/pytest.ini_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[pytest] -testpaths = {{package}} -python_files = *.py diff --git a/src/pyramid/scaffolds/starter/setup.py_tmpl b/src/pyramid/scaffolds/starter/setup.py_tmpl deleted file mode 100644 index 7f50bbbc2..000000000 --- a/src/pyramid/scaffolds/starter/setup.py_tmpl +++ /dev/null @@ -1,49 +0,0 @@ -import os - -from setuptools import setup, find_packages - -here = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(here, 'README.txt')) as f: - README = f.read() -with open(os.path.join(here, 'CHANGES.txt')) as f: - CHANGES = f.read() - -requires = [ - 'pyramid', - 'pyramid_jinja2', - 'pyramid_debugtoolbar', - 'waitress', - ] - -tests_require = [ - 'WebTest >= 1.3.1', # py3 compat - 'pytest', # includes virtualenv - 'pytest-cov', - ] - -setup(name='{{project}}', - version='0.0', - description='{{project}}', - long_description=README + '\n\n' + CHANGES, - classifiers=[ - "Programming Language :: Python", - "Framework :: Pyramid", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", - ], - author='', - author_email='', - url='', - keywords='web pyramid pylons', - packages=find_packages(), - include_package_data=True, - zip_safe=False, - extras_require={ - 'testing': tests_require, - }, - install_requires=requires, - entry_points="""\ - [paste.app_factory] - main = {{package}}:main - """, - ) diff --git a/src/pyramid/scaffolds/template.py b/src/pyramid/scaffolds/template.py deleted file mode 100644 index 60b543842..000000000 --- a/src/pyramid/scaffolds/template.py +++ /dev/null @@ -1,185 +0,0 @@ -# (c) 2005 Ian Bicking and contributors; written for Paste -# (http://pythonpaste.org) Licensed under the MIT license: -# http://www.opensource.org/licenses/mit-license.php - -import re -import sys -import os - -from pyramid.compat import native_, bytes_ - -from pyramid.scaffolds import copydir - -fsenc = sys.getfilesystemencoding() - - -class Template(object): - """ Inherit from this base class and override methods to use the Pyramid - scaffolding system.""" - - copydir = copydir # for testing - _template_dir = None - - def __init__(self, name): - self.name = name - - def render_template(self, content, vars, filename=None): - """ Return a bytestring representing a templated file based on the - input (content) and the variable names defined (vars). ``filename`` - is used for exception reporting.""" - # this method must not be named "template_renderer" fbo of extension - # scaffolds that need to work under pyramid 1.2 and 1.3, and which - # need to do "template_renderer = - # staticmethod(paste_script_template_renderer)" - content = native_(content, fsenc) - try: - return bytes_( - substitute_escaped_double_braces( - substitute_double_braces(content, TypeMapper(vars)) - ), - fsenc, - ) - except Exception as e: - _add_except(e, ' in file %s' % filename) - raise - - def module_dir(self): - mod = sys.modules[self.__class__.__module__] - return os.path.dirname(mod.__file__) - - def template_dir(self): - """ Return the template directory of the scaffold. By default, it - returns the value of ``os.path.join(self.module_dir(), - self._template_dir)`` (``self.module_dir()`` returns the module in - which your subclass has been defined). If ``self._template_dir`` is - a tuple this method just returns the value instead of trying to - construct a path. If _template_dir is a tuple, it should be a - 2-element tuple: ``(package_name, package_relative_path)``.""" - assert self._template_dir is not None, ( - "Template %r didn't set _template_dir" % self - ) - if isinstance(self._template_dir, tuple): - return self._template_dir - else: - return os.path.join(self.module_dir(), self._template_dir) - - def run(self, command, output_dir, vars): - self.pre(command, output_dir, vars) - self.write_files(command, output_dir, vars) - self.post(command, output_dir, vars) - - def pre(self, command, output_dir, vars): # pragma: no cover - """ - Called before template is applied. - """ - pass - - def post(self, command, output_dir, vars): # pragma: no cover - """ - Called after template is applied. - """ - pass - - def write_files(self, command, output_dir, vars): - template_dir = self.template_dir() - if not self.exists(output_dir): - self.out("Creating directory %s" % output_dir) - if not command.args.simulate: - # Don't let copydir create this top-level directory, - # since copydir will svn add it sometimes: - self.makedirs(output_dir) - self.copydir.copy_dir( - template_dir, - output_dir, - vars, - verbosity=command.verbosity, - simulate=command.args.simulate, - interactive=command.args.interactive, - overwrite=command.args.overwrite, - indent=1, - template_renderer=self.render_template, - ) - - def makedirs(self, dir): # pragma: no cover - return os.makedirs(dir) - - def exists(self, path): # pragma: no cover - return os.path.exists(path) - - def out(self, msg): # pragma: no cover - print(msg) - - # hair for exit with usage when paster create is used under 1.3 instead - # of pcreate for extension scaffolds which need to support multiple - # versions of pyramid; the check_vars method is called by pastescript - # only as the result of "paster create"; pyramid doesn't use it. the - # required_templates tuple is required to allow it to get as far as - # calling check_vars. - required_templates = () - - def check_vars(self, vars, other): - raise RuntimeError( - 'Under Pyramid 1.3, you should use the "pcreate" command rather ' - 'than "paster create"' - ) - - -class TypeMapper(dict): - def __getitem__(self, item): - options = item.split('|') - for op in options[:-1]: - try: - value = eval_with_catch(op, dict(self.items())) - break - except (NameError, KeyError): - pass - else: - value = eval(options[-1], dict(self.items())) - if value is None: - return '' - else: - return str(value) - - -def eval_with_catch(expr, vars): - try: - return eval(expr, vars) - except Exception as e: - _add_except(e, 'in expression %r' % expr) - raise - - -double_brace_pattern = re.compile(r'{{(?P<braced>.*?)}}') - - -def substitute_double_braces(content, values): - def double_bracerepl(match): - value = match.group('braced').strip() - return values[value] - - return double_brace_pattern.sub(double_bracerepl, content) - - -escaped_double_brace_pattern = re.compile( - r'\\{\\{(?P<escape_braced>[^\\]*?)\\}\\}' -) - - -def substitute_escaped_double_braces(content): - def escaped_double_bracerepl(match): - value = match.group('escape_braced').strip() - return "{{%(value)s}}" % locals() - - return escaped_double_brace_pattern.sub(escaped_double_bracerepl, content) - - -def _add_except(exc, info): # pragma: no cover - if not hasattr(exc, 'args') or exc.args is None: - return - args = list(exc.args) - if args: - args[0] += ' ' + info - else: - args = [info] - exc.args = tuple(args) - return diff --git a/src/pyramid/scaffolds/tests.py b/src/pyramid/scaffolds/tests.py deleted file mode 100644 index 8ed2f2348..000000000 --- a/src/pyramid/scaffolds/tests.py +++ /dev/null @@ -1,79 +0,0 @@ -import sys -import os -import shutil -import subprocess -import tempfile -import time - -try: - import http.client as httplib -except ImportError: - import httplib - - -class TemplateTest(object): - def make_venv(self, directory): # pragma: no cover - import virtualenv - from virtualenv import Logger - - logger = Logger([(Logger.level_for_integer(2), sys.stdout)]) - virtualenv.logger = logger - virtualenv.create_environment( - directory, site_packages=False, clear=False - ) - - def install(self, tmpl_name): # pragma: no cover - try: - self.old_cwd = os.getcwd() - self.directory = tempfile.mkdtemp() - self.make_venv(self.directory) - here = os.path.abspath(os.path.dirname(__file__)) - os.chdir(os.path.dirname(os.path.dirname(os.path.dirname(here)))) - pip = os.path.join(self.directory, 'bin', 'pip') - subprocess.check_call([pip, 'install', '-e', '.']) - os.chdir(self.directory) - subprocess.check_call(['bin/pcreate', '-s', tmpl_name, 'Dingle']) - os.chdir('Dingle') - subprocess.check_call([pip, 'install', '.[testing]']) - if tmpl_name == 'alchemy': - populate = os.path.join( - self.directory, 'bin', 'initialize_Dingle_db' - ) - subprocess.check_call([populate, 'development.ini']) - subprocess.check_call( - [os.path.join(self.directory, 'bin', 'py.test')] - ) - pserve = os.path.join(self.directory, 'bin', 'pserve') - for ininame, hastoolbar in ( - ('development.ini', True), - ('production.ini', False), - ): - proc = subprocess.Popen([pserve, ininame]) - try: - time.sleep(5) - proc.poll() - if proc.returncode is not None: - raise RuntimeError('%s didnt start' % ininame) - conn = httplib.HTTPConnection('localhost:6543') - conn.request('GET', '/') - resp = conn.getresponse() - assert resp.status == 200, ininame - data = resp.read() - toolbarchunk = b'<div id="pDebug"' - if hastoolbar: - assert toolbarchunk in data, ininame - else: - assert toolbarchunk not in data, ininame - finally: - proc.terminate() - finally: - shutil.rmtree(self.directory) - os.chdir(self.old_cwd) - - -if __name__ == '__main__': # pragma: no cover - templates = ['starter', 'alchemy', 'zodb'] - - for name in templates: - test = TemplateTest() - test.install(name) diff --git a/src/pyramid/scaffolds/zodb/+dot+coveragerc_tmpl b/src/pyramid/scaffolds/zodb/+dot+coveragerc_tmpl deleted file mode 100644 index 273a4a580..000000000 --- a/src/pyramid/scaffolds/zodb/+dot+coveragerc_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[run] -source = {{package}} -omit = {{package}}/test* diff --git a/src/pyramid/scaffolds/zodb/+package+/__init__.py b/src/pyramid/scaffolds/zodb/+package+/__init__.py deleted file mode 100644 index a956d0faf..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -from pyramid.config import Configurator -from pyramid_zodbconn import get_connection -from .models import appmaker - - -def root_factory(request): - conn = get_connection(request) - return appmaker(conn.root()) - - -def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - config = Configurator(root_factory=root_factory, settings=settings) - settings = config.get_settings() - settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager' - config.include('pyramid_chameleon') - config.add_static_view('static', 'static', cache_max_age=3600) - config.scan() - return config.make_wsgi_app() diff --git a/src/pyramid/scaffolds/zodb/+package+/models.py b/src/pyramid/scaffolds/zodb/+package+/models.py deleted file mode 100644 index e5aa3e9f7..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/models.py +++ /dev/null @@ -1,14 +0,0 @@ -from persistent.mapping import PersistentMapping - - -class MyModel(PersistentMapping): - __parent__ = __name__ = None - - -def appmaker(zodb_root): - if 'app_root' not in zodb_root: - app_root = MyModel() - zodb_root['app_root'] = app_root - import transaction - transaction.commit() - return zodb_root['app_root'] diff --git a/src/pyramid/scaffolds/zodb/+package+/static/pyramid-16x16.png b/src/pyramid/scaffolds/zodb/+package+/static/pyramid-16x16.png Binary files differdeleted file mode 100644 index 979203112..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/static/pyramid-16x16.png +++ /dev/null diff --git a/src/pyramid/scaffolds/zodb/+package+/static/pyramid.png b/src/pyramid/scaffolds/zodb/+package+/static/pyramid.png Binary files differdeleted file mode 100644 index 4ab837be9..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/static/pyramid.png +++ /dev/null diff --git a/src/pyramid/scaffolds/zodb/+package+/static/theme.css b/src/pyramid/scaffolds/zodb/+package+/static/theme.css deleted file mode 100644 index 0f4b1a4d4..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/static/theme.css +++ /dev/null @@ -1,154 +0,0 @@ -@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); -body { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; - color: #ffffff; - background: #bc2131; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; -} -p { - font-weight: 300; -} -.font-normal { - font-weight: 400; -} -.font-semi-bold { - font-weight: 600; -} -.font-bold { - font-weight: 700; -} -.starter-template { - margin-top: 250px; -} -.starter-template .content { - margin-left: 10px; -} -.starter-template .content h1 { - margin-top: 10px; - font-size: 60px; -} -.starter-template .content h1 .smaller { - font-size: 40px; - color: #f2b7bd; -} -.starter-template .content .lead { - font-size: 25px; - color: #f2b7bd; -} -.starter-template .content .lead .font-normal { - color: #ffffff; -} -.starter-template .links { - float: right; - right: 0; - margin-top: 125px; -} -.starter-template .links ul { - display: block; - padding: 0; - margin: 0; -} -.starter-template .links ul li { - list-style: none; - display: inline; - margin: 0 10px; -} -.starter-template .links ul li:first-child { - margin-left: 0; -} -.starter-template .links ul li:last-child { - margin-right: 0; -} -.starter-template .links ul li.current-version { - color: #f2b7bd; - font-weight: 400; -} -.starter-template .links ul li a, a { - color: #f2b7bd; - text-decoration: underline; -} -.starter-template .links ul li a:hover, a:hover { - color: #ffffff; - text-decoration: underline; -} -.starter-template .links ul li .icon-muted { - color: #eb8b95; - margin-right: 5px; -} -.starter-template .links ul li:hover .icon-muted { - color: #ffffff; -} -.starter-template .copyright { - margin-top: 10px; - font-size: 0.9em; - color: #f2b7bd; - text-transform: lowercase; - float: right; - right: 0; -} -@media (max-width: 1199px) { - .starter-template .content h1 { - font-size: 45px; - } - .starter-template .content h1 .smaller { - font-size: 30px; - } - .starter-template .content .lead { - font-size: 20px; - } -} -@media (max-width: 991px) { - .starter-template { - margin-top: 0; - } - .starter-template .logo { - margin: 40px auto; - } - .starter-template .content { - margin-left: 0; - text-align: center; - } - .starter-template .content h1 { - margin-bottom: 20px; - } - .starter-template .links { - float: none; - text-align: center; - margin-top: 60px; - } - .starter-template .copyright { - float: none; - text-align: center; - } -} -@media (max-width: 767px) { - .starter-template .content h1 .smaller { - font-size: 25px; - display: block; - } - .starter-template .content .lead { - font-size: 16px; - } - .starter-template .links { - margin-top: 40px; - } - .starter-template .links ul li { - display: block; - margin: 0; - } - .starter-template .links ul li .icon-muted { - display: none; - } - .starter-template .copyright { - margin-top: 20px; - } -} diff --git a/src/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl b/src/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl deleted file mode 100644 index f66effa41..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl +++ /dev/null @@ -1,67 +0,0 @@ -<!DOCTYPE html> -<html lang="${request.locale_name}"> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta name="description" content="pyramid web application"> - <meta name="author" content="Pylons Project"> - <link rel="shortcut icon" href="${request.static_url('{{package}}:static/pyramid-16x16.png')}"> - - <title>ZODB Scaffold for The Pyramid Web Framework</title> - - <!-- Bootstrap core CSS --> - <link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> - - <!-- Custom styles for this scaffold --> - <link href="${request.static_url('{{package}}:static/theme.css')}" rel="stylesheet"> - - <!-- HTML5 shiv and Respond.js IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js" integrity="sha384-0s5Pv64cNZJieYFkXYOTId2HMA2Lfb6q2nAcx2n0RTLUnCAoTTsS0nKEO27XyKcY" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js" integrity="sha384-f1r2UzjsxZ9T4V1f2zBO/evUqSEOpeaUUZcMTz1Up63bl4ruYnFYeM+BxI4NhyI0" crossorigin="anonymous"></script> - <![endif]--> - </head> - - <body> - - <div class="starter-template"> - <div class="container"> - <div class="row"> - <div class="col-md-2"> - <img class="logo img-responsive" src="${request.static_url('{{package}}:static/pyramid.png')}" alt="pyramid web framework"> - </div> - <div class="col-md-10"> - <div class="content"> - <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">ZODB scaffold</span></h1> - <p class="lead">Welcome to <span class="font-normal">${project}</span>, an application generated by<br>the <span class="font-normal">Pyramid Web Framework {{pyramid_version}}</span>.</p> - </div> - </div> - </div> - <div class="row"> - <div class="links"> - <ul> - <li class="current-version">Generated by v{{pyramid_version}}</li> - <li><i class="glyphicon glyphicon-bookmark icon-muted"></i><a href="https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/">Docs</a></li> - <li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> - <li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="https://webchat.freenode.net/?channels=pyramid">IRC Channel</a></li> - <li><i class="glyphicon glyphicon-home icon-muted"></i><a href="https://pylonsproject.org">Pylons Project</a></li> - </ul> - </div> - </div> - <div class="row"> - <div class="copyright"> - Copyright © Pylons Project - </div> - </div> - </div> - </div> - - - <!-- Bootstrap core JavaScript - ================================================== --> - <!-- Placed at the end of the document so the pages load faster --> - <script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js" integrity="sha384-aBL3Lzi6c9LNDGvpHkZrrm3ZVsIwohDD7CDozL0pk8FwCrfmV7H9w8j3L7ikEv6h" crossorigin="anonymous"></script> - <script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js" integrity="sha384-s1ITto93iSMDxlp/79qhWHi+LsIi9Gx6yL+cOKDuymvihkfol83TYbLbOw+W/wv4" crossorigin="anonymous"></script> - </body> -</html> diff --git a/src/pyramid/scaffolds/zodb/+package+/tests.py_tmpl b/src/pyramid/scaffolds/zodb/+package+/tests.py_tmpl deleted file mode 100644 index 94912a850..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/tests.py_tmpl +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from pyramid import testing - - -class ViewTests(unittest.TestCase): - def setUp(self): - self.config = testing.setUp() - - def tearDown(self): - testing.tearDown() - - def test_my_view(self): - from .views import my_view - request = testing.DummyRequest() - info = my_view(request) - self.assertEqual(info['project'], '{{project}}') diff --git a/src/pyramid/scaffolds/zodb/+package+/views.py_tmpl b/src/pyramid/scaffolds/zodb/+package+/views.py_tmpl deleted file mode 100644 index 1e8a9b65a..000000000 --- a/src/pyramid/scaffolds/zodb/+package+/views.py_tmpl +++ /dev/null @@ -1,7 +0,0 @@ -from pyramid.view import view_config -from .models import MyModel - - -@view_config(context=MyModel, renderer='templates/mytemplate.pt') -def my_view(request): - return {'project': '{{project}}'} diff --git a/src/pyramid/scaffolds/zodb/CHANGES.txt_tmpl b/src/pyramid/scaffolds/zodb/CHANGES.txt_tmpl deleted file mode 100644 index 35a34f332..000000000 --- a/src/pyramid/scaffolds/zodb/CHANGES.txt_tmpl +++ /dev/null @@ -1,4 +0,0 @@ -0.0 ---- - -- Initial version diff --git a/src/pyramid/scaffolds/zodb/MANIFEST.in_tmpl b/src/pyramid/scaffolds/zodb/MANIFEST.in_tmpl deleted file mode 100644 index 0ff6eb7a0..000000000 --- a/src/pyramid/scaffolds/zodb/MANIFEST.in_tmpl +++ /dev/null @@ -1,2 +0,0 @@ -include *.txt *.ini *.cfg *.rst -recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml diff --git a/src/pyramid/scaffolds/zodb/README.txt_tmpl b/src/pyramid/scaffolds/zodb/README.txt_tmpl deleted file mode 100644 index 127ad7595..000000000 --- a/src/pyramid/scaffolds/zodb/README.txt_tmpl +++ /dev/null @@ -1,12 +0,0 @@ -{{project}} README -================== - -Getting Started ---------------- - -- cd <directory containing this file> - -- $VENV/bin/pip install -e . - -- $VENV/bin/pserve development.ini - diff --git a/src/pyramid/scaffolds/zodb/development.ini_tmpl b/src/pyramid/scaffolds/zodb/development.ini_tmpl deleted file mode 100644 index 7d898bcd4..000000000 --- a/src/pyramid/scaffolds/zodb/development.ini_tmpl +++ /dev/null @@ -1,64 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = true -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en -pyramid.includes = - pyramid_debugtoolbar - pyramid_zodbconn - pyramid_tm - -tm.attempts = 3 -zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000 - -# By default, the toolbar only appears for clients from IP addresses -# '127.0.0.1' and '::1'. -# debugtoolbar.hosts = 127.0.0.1 ::1 - -### -# wsgi server configuration -### - -[server:main] -use = egg:waitress#main -listen = localhost:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}} - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = INFO -handlers = console - -[logger_{{package_logger}}] -level = DEBUG -handlers = -qualname = {{package}} - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/zodb/production.ini_tmpl b/src/pyramid/scaffolds/zodb/production.ini_tmpl deleted file mode 100644 index 7c2e90c2e..000000000 --- a/src/pyramid/scaffolds/zodb/production.ini_tmpl +++ /dev/null @@ -1,59 +0,0 @@ -### -# app configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/environment.html -### - -[app:main] -use = egg:{{project}} - -pyramid.reload_templates = false -pyramid.debug_authorization = false -pyramid.debug_notfound = false -pyramid.debug_routematch = false -pyramid.default_locale_name = en -pyramid.includes = - pyramid_tm - pyramid_zodbconn - -tm.attempts = 3 -zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000 - -### -# wsgi server configuration -### - -[server:main] -use = egg:waitress#main -listen = *:6543 - -### -# logging configuration -# https://docs.pylonsproject.org/projects/pyramid/en/{{pyramid_docs_branch}}/narr/logging.html -### - -[loggers] -keys = root, {{package_logger}} - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console - -[logger_{{package_logger}}] -level = WARN -handlers = -qualname = {{package}} - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s diff --git a/src/pyramid/scaffolds/zodb/pytest.ini_tmpl b/src/pyramid/scaffolds/zodb/pytest.ini_tmpl deleted file mode 100644 index a30c8bcad..000000000 --- a/src/pyramid/scaffolds/zodb/pytest.ini_tmpl +++ /dev/null @@ -1,3 +0,0 @@ -[pytest] -testpaths = {{package}} -python_files = *.py diff --git a/src/pyramid/scaffolds/zodb/setup.py_tmpl b/src/pyramid/scaffolds/zodb/setup.py_tmpl deleted file mode 100644 index 19771d756..000000000 --- a/src/pyramid/scaffolds/zodb/setup.py_tmpl +++ /dev/null @@ -1,53 +0,0 @@ -import os - -from setuptools import setup, find_packages - -here = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(here, 'README.txt')) as f: - README = f.read() -with open(os.path.join(here, 'CHANGES.txt')) as f: - CHANGES = f.read() - -requires = [ - 'pyramid', - 'pyramid_chameleon', - 'pyramid_debugtoolbar', - 'pyramid_tm', - 'pyramid_zodbconn', - 'transaction', - 'ZODB3', - 'waitress', - ] - -tests_require = [ - 'WebTest >= 1.3.1', # py3 compat - 'pytest', # includes virtualenv - 'pytest-cov', - ] - -setup(name='{{project}}', - version='0.0', - description='{{project}}', - long_description=README + '\n\n' + CHANGES, - classifiers=[ - "Programming Language :: Python", - "Framework :: Pyramid", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", - ], - author='', - author_email='', - url='', - keywords='web pylons pyramid', - packages=find_packages(), - include_package_data=True, - zip_safe=False, - extras_require={ - 'testing': tests_require, - }, - install_requires=requires, - entry_points="""\ - [paste.app_factory] - main = {{package}}:main - """, - ) diff --git a/src/pyramid/scripts/pcreate.py b/src/pyramid/scripts/pcreate.py deleted file mode 100644 index ee3c60ee2..000000000 --- a/src/pyramid/scripts/pcreate.py +++ /dev/null @@ -1,297 +0,0 @@ -# (c) 2005 Ian Bicking and contributors; written for Paste -# (http://pythonpaste.org) Licensed under the MIT license: -# http://www.opensource.org/licenses/mit-license.php - -import argparse -import os -import os.path -import pkg_resources -import re -import sys -from pyramid.compat import input_ - -_bad_chars_re = re.compile('[^a-zA-Z0-9_]') - - -def main(argv=sys.argv, quiet=False): - command = PCreateCommand(argv, quiet) - try: - return command.run() - except KeyboardInterrupt: # pragma: no cover - return 1 - - -class PCreateCommand(object): - verbosity = 1 # required - parser = argparse.ArgumentParser( - description="""\ -Render Pyramid scaffolding to an output directory. - -Note: As of Pyramid 1.8, this command is deprecated. Use -pyramid-cookiecutter-starter instead: -https://github.com/Pylons/pyramid-cookiecutter-starter -""", - formatter_class=argparse.RawDescriptionHelpFormatter, - ) - parser.add_argument( - '-s', - '--scaffold', - dest='scaffold_name', - action='append', - help=( - "Add a scaffold to the create process " - "(multiple -s args accepted)" - ), - ) - parser.add_argument( - '-t', - '--template', - dest='scaffold_name', - action='append', - help=( - 'A backwards compatibility alias for ' - '-s/--scaffold. Add a scaffold to the ' - 'create process (multiple -t args accepted)' - ), - ) - parser.add_argument( - '-l', - '--list', - dest='list', - action='store_true', - help="List all available scaffold names", - ) - parser.add_argument( - '--list-templates', - dest='list', - action='store_true', - help=( - "A backwards compatibility alias for -l/--list. " - "List all available scaffold names." - ), - ) - parser.add_argument( - '--package-name', - dest='package_name', - action='store', - help='Package name to use. The name provided is ' - 'assumed to be a valid Python package name, and ' - 'will not be validated. By default the package ' - 'name is derived from the value of ' - 'output_directory.', - ) - parser.add_argument( - '--simulate', - dest='simulate', - action='store_true', - help='Simulate but do no work', - ) - parser.add_argument( - '--overwrite', - dest='overwrite', - action='store_true', - help='Always overwrite', - ) - parser.add_argument( - '--interactive', - dest='interactive', - action='store_true', - help='When a file would be overwritten, interrogate ' - '(this is the default, but you may specify it to ' - 'override --overwrite)', - ) - parser.add_argument( - '--ignore-conflicting-name', - dest='force_bad_name', - action='store_true', - default=False, - help='Do create a project even if the chosen name ' - 'is the name of an already existing / importable ' - 'package.', - ) - parser.add_argument( - 'output_directory', - nargs='?', - default=None, - help='The directory where the project will be ' 'created.', - ) - - pyramid_dist = pkg_resources.get_distribution("pyramid") - - def __init__(self, argv, quiet=False): - self.quiet = quiet - self.args = self.parser.parse_args(argv[1:]) - if not self.args.interactive and not self.args.overwrite: - self.args.interactive = True - self.scaffolds = self.all_scaffolds() - - def run(self): - if self.args.list: - return self.show_scaffolds() - if not self.args.scaffold_name and not self.args.output_directory: - if not self.quiet: # pragma: no cover - self.parser.print_help() - self.out('') - self.show_scaffolds() - return 2 - - if not self.validate_input(): - return 2 - self._warn_pcreate_deprecated() - - return self.render_scaffolds() - - @property - def output_path(self): - return os.path.abspath(os.path.normpath(self.args.output_directory)) - - @property - def project_vars(self): - output_dir = self.output_path - project_name = os.path.basename(os.path.split(output_dir)[1]) - if self.args.package_name is None: - pkg_name = _bad_chars_re.sub( - '', project_name.lower().replace('-', '_') - ) - safe_name = pkg_resources.safe_name(project_name) - else: - pkg_name = self.args.package_name - safe_name = pkg_name - egg_name = pkg_resources.to_filename(safe_name) - - # get pyramid package version - pyramid_version = self.pyramid_dist.version - - # map pyramid package version of the documentation branch ## - # if version ends with 'dev' then docs version is 'master' - if self.pyramid_dist.version[-3:] == 'dev': - pyramid_docs_branch = 'master' - else: - # if not version is not 'dev' find the version.major_version string - # and combine it with '-branch' - version_match = re.match(r'(\d+\.\d+)', self.pyramid_dist.version) - if version_match is not None: - pyramid_docs_branch = "%s-branch" % version_match.group() - # if can not parse the version then default to 'latest' - else: - pyramid_docs_branch = 'latest' - - return { - 'project': project_name, - 'package': pkg_name, - 'egg': egg_name, - 'pyramid_version': pyramid_version, - 'pyramid_docs_branch': pyramid_docs_branch, - } - - def render_scaffolds(self): - props = self.project_vars - output_dir = self.output_path - for scaffold_name in self.args.scaffold_name: - for scaffold in self.scaffolds: - if scaffold.name == scaffold_name: - scaffold.run(self, output_dir, props) - return 0 - - def show_scaffolds(self): - scaffolds = sorted(self.scaffolds, key=lambda x: x.name) - if scaffolds: - max_name = max([len(t.name) for t in scaffolds]) - self.out('Available scaffolds:') - for scaffold in scaffolds: - self.out( - ' %s:%s %s' - % ( - scaffold.name, - ' ' * (max_name - len(scaffold.name)), - scaffold.summary, - ) - ) - else: - self.out('No scaffolds available') - return 0 - - def all_scaffolds(self): - scaffolds = [] - eps = list(pkg_resources.iter_entry_points('pyramid.scaffold')) - for entry in eps: - try: - scaffold_class = entry.load() - scaffold = scaffold_class(entry.name) - scaffolds.append(scaffold) - except Exception as e: # pragma: no cover - self.out( - 'Warning: could not load entry point %s (%s: %s)' - % (entry.name, e.__class__.__name__, e) - ) - return scaffolds - - def out(self, msg): # pragma: no cover - if not self.quiet: - print(msg) - - def validate_input(self): - if not self.args.scaffold_name: - self.out( - 'You must provide at least one scaffold name: ' - '-s <scaffold name>' - ) - self.out('') - self.show_scaffolds() - return False - if not self.args.output_directory: - self.out('You must provide a project name') - return False - available = [x.name for x in self.scaffolds] - diff = set(self.args.scaffold_name).difference(available) - if diff: - self.out('Unavailable scaffolds: %s' % ", ".join(sorted(diff))) - return False - - pkg_name = self.project_vars['package'] - - if pkg_name == 'site' and not self.args.force_bad_name: - self.out( - 'The package name "site" has a special meaning in ' - 'Python. Are you sure you want to use it as your ' - 'project\'s name?' - ) - return self.confirm_bad_name( - 'Really use "{0}"?: '.format(pkg_name) - ) - - # check if pkg_name can be imported (i.e. already exists in current - # $PYTHON_PATH, if so - let the user confirm - pkg_exists = True - try: - # use absolute imports - __import__(pkg_name, globals(), locals(), [], 0) - except ImportError: - pkg_exists = False - if not pkg_exists: - return True - - if self.args.force_bad_name: - return True - self.out( - 'A package named "{0}" already exists, are you sure you want ' - 'to use it as your project\'s name?'.format(pkg_name) - ) - return self.confirm_bad_name('Really use "{0}"?: '.format(pkg_name)) - - def confirm_bad_name(self, prompt): # pragma: no cover - answer = input_('{0} [y|N]: '.format(prompt)) - return answer.strip().lower() == 'y' - - def _warn_pcreate_deprecated(self): - self.out( - '''\ -Note: As of Pyramid 1.8, this command is deprecated. Use a specific -cookiecutter instead: -https://github.com/pylons/?query=cookiecutter -''' - ) - - -if __name__ == '__main__': # pragma: no cover - sys.exit(main() or 0) |
