Changeset 5646
- Timestamp:
- 11/01/08 02:00:15 (2 months ago)
- Files:
-
- docs/2.0/docs/main/Contributing.rst (modified) (8 diffs)
- docs/2.0/docs/main/DownloadInstall.rst (modified) (1 diff)
- docs/2.0/docs/main/Wiki20/wiki20.rst (modified) (3 diffs)
- docs/2.0/docs/project_code/wiki_root/snapshots/5/wiki20/controllers/root.py (modified) (1 diff)
- docs/2.0/docs/project_code/wiki_root/snapshots/6/wiki20/controllers/root.py (modified) (1 diff)
- docs/2.0/docs/project_code/wiki_root/snapshots/7/wiki20/controllers/root.py (modified) (1 diff)
- docs/2.0/docs/project_code/wiki_root/snapshots/8/wiki20/controllers/root.py (modified) (1 diff)
- docs/2.0/docs/project_code/wiki_root/snapshots/9/wiki20/controllers/root.py (modified) (1 diff)
- docs/2.0/docs/project_code/wiki_root/trunk/wiki20/controllers/root.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
docs/2.0/docs/main/Contributing.rst
r4863 r5646 1 Contributing to TurboGears 2 ========================== 1 Contributing to TurboGears 2 2 ============================ 3 3 4 4 :status: Official … … 7 7 :depth: 2 8 8 9 If you want to help out, we want to help you help out! The goal of this10 document is to help you get started and answer any questions you might 11 have. The `Project Philosophy`_ document has a more high-level view, 12 whereas this document is nuts-and-bolts. The `TurboGears team <TurboGearsTeam>`_9 If you want to help out, we want to help you help out! The goal of 10 this document is to help you get started and answer any questions you 11 might have. The `Project Philosophy`_ document has a more high-level 12 view, whereas this document is nuts-and-bolts. The `TurboGears team`_ 13 13 page lists who is responsible for what. 14 14 15 16 Subversion 17 ---------- 18 19 The TurboGears subversion repository is at http://svn.turbogears.org/. 20 21 You can also browse the repository via the `TurboGears Trac`_. 22 23 .. _TurboGears Trac: http://trac.turbogears.org/browser 24 25 TurboGears 2 development is currently occurring in the trunk. 26 27 Note that the trunk may break at any time so don't run it unless you know what 28 you are doing. 29 30 To check out the tg2 code, you would typically use the command:: 31 32 svn co http://svn.turbogears.org/trunk turbogears 33 34 This will give you a "turbogears" directory with the trunk in it. 35 36 37 You can get the basic Subversion clients from `the official Subversion 38 site`_, and graphical clients are available for just about any platform. 39 The `Version Control with Subversion`_ book is available for reading 40 online. 41 42 .. _the official Subversion site: http://subversion.tigris.org/ 43 .. _Version Control with Subversion: http://svnbook.red-bean.com/ 44 45 46 Before you finish setting up the TurboGears 2 development environment with `setup.py develop` you will need to download and install a current version of Pylons from their mercurial repository. 47 48 Installing Pylons from Source via Mercurial: 49 ------------------------------------------------ 50 51 Pylons uses the Mercurial Version control system, so you probably need to install Mercurial before you can pull down the latest development source for Pylons. Mercurial `packages are available <http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages>`_ for Windows, Mac OSX, and other OS's. 52 53 First you need to install: 54 55 1. Python (see http://www.python.org) 56 57 2. setuptools (run http://peak.telecommunity.com/dist/ez_setup.py from any directory) 58 59 Now you can check out the latest code:: 60 61 $ hg clone http://pylonshq.com/hg/pylons-dev Pylons 62 63 To tell setuptools to use the version you are editing in the Pylons directory:: 64 65 $ cd Pylons 66 $ python setup.py develop 67 68 69 Now you can make changes to the files in the Pylons directory and the code will run exactly as if you had installed a version of the egg with the changes you have made. 70 71 Developing with eggs 72 -------------------- 73 74 Now that the Pylons dependency is filled you should be able to finish 75 installing the rest of the dependecies you need by telling setuptools 76 to automatically fetch the eggs for you. 77 78 TurboGears (and even projects that TurboGears creates via quickstart) 79 uses setuptools_ to make packaging and distribution much easier. 15 .. _Project Philosophy: http://docs.turbogears.org/1.0/Philosophy 16 .. _TurboGears team: http://docs.turbogears.org/TurboGearsTeam 17 18 19 Installing the Development Version of Turbogears 2 (from source) 20 ---------------------------------------------------------------- 21 22 Pre-requisites 23 ~~~~~~~~~~~~~~ 24 25 #. Python 2.4 or 2.5 (http://python.org/download) 26 27 * Make sure that your Python installation includes the `sqlite` 28 extension (some \*BSDs keep it in a separate package). If 29 you're running Python 2.5 you can test for `sqlite` with:: 30 31 $ python -c "import sqlite3" 32 33 or try:: 34 35 $ python -c "import pysqlite2" 36 37 with Python 2.4. 38 39 * For RPM-based systems you will also need ``python-devel`` and 40 ``python-xml`` packages. 41 42 * On `ubuntu` you will need ``python-dev`` and ``python-setuptools``. 43 #. setuptools_ (run http://peak.telecommunity.com/dist/ez_setup.py from 44 any directory) 45 46 #. Subversion_ 47 48 #. Mercurial_ 80 49 81 50 .. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools 82 83 To start developing on TurboGears itself, you'll want to go into your 84 checked-out copy and run:: 85 86 python setup.py develop 87 88 That command tells setuptools that you're going to be using that code 89 for TurboGears, rather than any installed TurboGears egg you might have. 90 91 92 Dealing with Dependencies 93 ------------------------- 94 95 It is not uncommon between releases of TurboGears that projects used by 96 TurboGears will be upgraded. For the core projects used by TurboGears, 97 there are ``svn:externals`` defined to check out the appropriate version 98 of the projects in the thirdparty directory. When projects are upgraded, 99 the setup.py file is also changed to reflect the new version that is 100 required to use TurboGears. 101 102 If you get an error about a requirement not being met when running a 103 development copy of TurboGears, you will generally be able to satisfy the 104 requirement by going into the thirdparty directory and running:: 105 106 python -c "import setuptools; execfile('externals.py')" develop 107 108 Alternatively, you can run:: 109 110 easy_install . 111 112 which will give you a snapshot installation that doesn't track each svn 113 update. 114 115 If you plan to make changes to one of the projects that TurboGears uses, 116 make sure that you've got Subversion pointing to an appropriate version 117 of that project for making changes (often the trunk). With the correct 118 version in place, you can run "``python setup.py develop``" in that 119 project to start using the development version of that tool. 120 121 122 .. note:: On the Linux/Mac OS X platform you have to copy the 123 'tg-admin' (in ``python/bin/``) command to ``/usr/local/bin`` 124 manually to replace the old one. You can execute 125 ``tg-admin info`` to check whether the version is correct or not. 51 .. _Subversion: http://subversion.tigris.org/getting.html 52 .. _Mercurial: http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages 53 54 We recommend working in a `virtual environment`_ so that any existing 55 packages will not interfere with your installation, and so that you 56 don't upgrade any Python libraries that your system needs. 57 58 .. _virtual environment: DownloadInstall.html#setting-up-a-virtual-environment 59 60 61 Installing Pylons from Source 62 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 63 64 Assuming that you're going to work in a virtualenv called `tg2dev`, 65 activate the virtualenv: 66 67 .. code-block:: bash 68 69 $ cd tg2dev 70 $ source bin/activate 71 72 `(tg2dev)` will be prefixed to your prompt to indicate that the 73 `tg2dev` virtualenv is activated. 74 75 Clone the latest Pylons code: 76 77 .. code-block:: bash 78 79 (tg2dev)$ hg clone http://pylonshq.com/hg/pylons-dev Pylons 80 81 Tell setuptools to use this version: 82 83 .. code-block:: bash 84 85 (tg2dev)$ cd Pylons 86 (tg2dev)$ python setup.py develop 87 88 Installing TurboGears 2 from Source 89 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 91 TurboGears 2 is composed of 3 packages. 92 93 Check out the latest code from the subversion respositories: 94 95 .. code-block:: bash 96 97 (tg2dev)$ cd .. 98 (tg2dev)$ svn co http://svn.turbogears.org/projects/tg.devtools/trunk tgdev 99 (tg2dev)$ svn co http://svn.turbogears.org/trunk tg2 100 (tg2dev)$ svn co http://tgtools.googlecode.com/svn/projects/tg.ext.repoze.who/trunk tg.ext.repoze.who 101 102 * tgdev is a set of tools, paster command plugins to create default 103 template, admin interface, and migrations. 104 * tg2 package is TurboGears 2 core. 105 * tg.ext.repoze.who is an extension for tg2 that aims to provide an 106 API compliant implementation of the old tg1 identity framework. 107 108 Again, tell setuptools to use these versions. 109 110 * tg.ext.repoze.who: 111 112 .. code-block:: bash 113 114 (tg2dev)$ cd tg.ext.repoze.who 115 (tg2dev)$ easy_install Paste 116 (tg2dev)$ easy_install zope.interface 117 (tg2dev)$ python setup.py develop 118 119 * TurboGears 2 server: 120 121 .. code-block:: bash 122 123 (tg2dev)$ cd .. 124 (tg2dev)$ cd tg2 125 (tg2dev)$ easy_install PasteScript==dev 126 (tg2dev)$ easy_install genshi 127 (tg2dev)$ python setup.py develop 128 129 * TurboGears 2 developer tools: 130 131 .. code-block:: bash 132 133 (tg2dev)$ cd .. 134 (tg2dev)$ cd tgdev 135 (tg2dev)$ python setup.py develop 136 137 Congratulations! You now have a source installation of TurboGears 2. 138 Happy Hacking! 139 140 .. note:: if you have installed old dependency packages, you could remove 141 them from {python_path}/site-packages/easy-install.pth 142 143 144 Troubleshooting 145 ~~~~~~~~~~~~~~~ 146 147 It is possible (but not likely) you might see a few other error 148 messages. Here are the correct ways to fix the dependency problems so 149 things will install properly. 150 151 * If you get an error about ``ObjectDispatchController`` this means 152 your Pylons installation is out-of-date. Make sure it's fresh (``hg 153 pull -u`` or ``hg pull`` followed by ``hg update`` -- alternatively you 154 can create a brand new Pylons branch in a new directory with ``hg 155 clone``). 156 157 * When installing on Mac OSX, if you get an error mentioning ``No local 158 packages or download links found for RuleDispatch``, you can try the 159 solution posted to the `ToscaWidgets discussion list`_ which advises 160 downloading it directly: 161 162 .. code-block:: bash 163 164 (tg2dev)$ sudo easy_install -U -f http://toscawidgets.org/download/wo_speedups/ RuleDispatch 165 166 .. _ToscaWidgets discussion list: http://groups.google.com/group/toscawidgets-discuss/browse_thread/thread/cb6778810e96585d 167 168 * If you get the following error when starting a project with ``paster 169 serve``:: 170 171 AttributeError: 'WSGIRequest' object has no attribute 'accept_language' 172 173 update your Pylons checkout with ``hg update`` and try again. 126 174 127 175 … … 130 178 131 179 Since it's hard to argue with someone who's already written a code style 132 document, TurboGears will follow`PEP 8`_ conventions.180 document, TurboGears 2 follows `PEP 8`_ conventions. 133 181 134 182 To ensure that files in the TurboGears source code repository have proper … … 145 193 project possible. 146 194 147 TurboGears uses Nose_, which makes testing easy. To get going with Nose, 148 just run:: 149 150 easy_install nose 195 TurboGears 2 uses Nose_, which makes testing easy. You can run the 196 tests in each of the source directories just by running `nosetests`. 197 For example, to run the test on the TG2 server: 198 199 .. code-block:: bash 200 201 (tg2dev)$ cd tg2 202 (tg2dev)$ nosetests 151 203 152 204 .. _Nose: http://somethingaboutorange.com/mrl/projects/nose/ 153 205 154 (As with all ``easy_install`` commands, you may need to use the ``-- 155 script-dir`` option to tell it where to put the command line tool and you 156 may need to use "``sudo``" on Unix-like systems to access that directory.) 157 158 Once installed, you can run the TurboGears tests just by running:: 159 160 nosetests 161 162 The ``turbogears.testutil`` package includes some utility functions and 163 classes that make you're life easier as you're trying to test. 206 Default options for `nosetests` can often be found in the 207 `[nosetests]` section of `setup.cfg` and additional options can be 208 passed on the command line. See the Nose_ documentation for details. 209 210 For TG2 projects, the ``tg.testutil`` package includes some utility 211 functions and classes that make you're life easier as you're trying to 212 test. 164 213 165 214 … … 172 221 have some information in English. 173 222 174 .. _Project Philosophy: 1.0/Philosophy175 176 223 There are two kinds of docs, and both have their useful place: 177 224 … … 185 232 .. _epydoc: http://epydoc.sourceforge.net/ 186 233 234 .. TODO: Is epydoc still going to be used for the API, or just Sphinx autodoc? 235 187 236 188 237 **Manual** 189 238 190 The TurboGears documentation is maintained on the 191 `docs.turbogears.org`_ wiki. If you want to work on the documentation 192 in the wiki, please read the `guidelines for contributing 193 documentation`_. 194 195 .. _docs.turbogears.org : http://docs.turbogears.org/ 196 .. _guidelines for contributing documentation: DocHelp 197 198 When you contribute a new doc in the wiki, please write a page in the 199 appropriate RoughDocs section of the site (e.g. for TurboGears version 200 1.1, you'd link it up from1.1/RoughDocs). One of the documentation 201 editors will then pull your document into the official documentation, 202 possibly doing a bit of editing in the process so that the style and 203 tone match the rest of the official documents. 239 The TurboGears 2 documentation is online at 240 http://turbogears.org/2.0/docs/ 204 241 205 242 Please document your own work. It doesn't have to be Shakespeare, but … … 208 245 to figure out your code and write something from scratch. 209 246 247 To contribute documentation you can either: 248 249 * Write a page in the RoughDocs_ section of the TurboGears 250 documentation wiki and request a review of it on the 251 `turbogears-docs`_ discussion list. One of the documentation 252 editors will then pull your document into the official 253 documentation, possibly doing a bit of editing in the process so 254 that the style and tone match the rest of the official documents. 255 Please see the TG1 `guidelines for contributing documentation`_ for 256 pointers on documentation format and style. 257 258 .. _RoughDocs: http://docs.turbogears.org/2.0/RoughDocs 259 .. _turbogears-docs: http://groups.google.ca/group/turbogears-docs 260 .. _guidelines for contributing documentation: http://docs.turbogears.org/DocHelp 261 262 * Check out a copy of the documentation tree, edit the reStructured 263 Text source files, and submit patches via tickets on the `TurboGears 264 Trac`_ 265 266 .. _TurboGears Trac: http://trac.turbogears.org/ 267 268 If you want to work on the docs sources and build the documentation 269 tree you will also need: 270 271 * Sphinx_ 272 * `pysvn extension`_ 273 274 .. _Sphinx: http://sphinx.pocoo.org/ 275 .. _pysvn extension: http://pysvn.tigris.org/project_downloads.html 276 277 `pysvn` is a Python extension that comes in source or binary kits to 278 match your OS, Python version, and Subversion version. Please see the 279 `pysvn extension`_ downloads page for details and follow the 280 instructions there to install the appropriate version. 281 282 Assuming that you're going to work in a virtualenv called `tg2dev`, 283 activate the virtualenv: 284 285 .. code-block:: bash 286 287 $ cd tg2dev 288 $ source bin/activate 289 290 `(tg2dev)` will be prefixed to your prompt to indicate that the 291 `tg2dev` virtualenv is activated. 292 293 Check out the latest version of the docs soruces from the subversion 294 respositories: 295 296 .. code-block:: bash 297 298 (tg2dev)$ svn co http://svn.turbogears.org/docs 299 300 Build the documentation tree with: 301 302 .. code-block:: bash 303 304 (tg2dev)$ cd docs/2.0/docs 305 (tg2dev)$ make html 306 307 You can view the docs by pointing your browser at the file:: 308 309 docs/2.0/docs/_build/html/index.html 310 210 311 211 312 Documenting Changes 212 313 ------------------- 213 314 214 The Trac_ is mostly used for tracking upcoming changes and tasks required 215 before release of a new version. The changelog_ provides the human 216 readable list of changes. 217 218 .. _trac: http://trac.turbogears.org/ 219 .. _changelog: http://trac.turbogears.org/turbogears/file/trunk/CHANGELOG.txt 220 221 Updating the changelog right before a release just slows down the release. Please 222 **update the changelog as you make changes**, and this is **especially** critical 223 for **backwards incompatibilities**. 315 The `TurboGears Trac`_ is mostly used for tracking upcoming changes 316 and tasks required before release of a new version. The changelog_ 317 provides the human readable list of changes. 318 319 .. _changelog: http://trac.turbogears.org/wiki/2.0/changelog 320 321 Updating the changelog right before a release just slows down the 322 release. Please **update the changelog as you make changes**, and this 323 is **especially** critical for **backwards incompatibilities**. 224 324 225 325 … … 229 329 Please make sure that you read and follow the `patching guidelines`_. 230 330 231 .. pathing guidelines: http://docs.turbogears.org/patching_guidelines331 .. _patching guidelines: http://docs.turbogears.org/patching_guidelines docs/2.0/docs/main/DownloadInstall.rst
r5080 r5646 170 170 ------------------------------------------------------------------- 171 171 172 Installing Pylons from Source: 173 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 172 See `Contributing to Turbogears 2`_ 174 173 175 .. note:: If you've installed pylons in previous section, you could skip to next section. 176 177 Pylons uses the Mercurial Version control system, so if you want to install from repository, you probably need to install Mercurial before you can pull down the latest development source for Pylons. Mercurial `packages are available <http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages>`_ for Windows, Mac OSX, and other OS's. 178 179 First you need to install: 180 181 1. Python (see http://www.python.org) 182 183 2. setuptools (run http://peak.telecommunity.com/dist/ez_setup.py from any directory) 184 185 Now you can check out the latest code:: 186 187 $ hg clone http://pylonshq.com/hg/pylons-dev Pylons 188 189 190 To tell setuptools to use the version you are editing in the Pylons directory:: 191 192 $ cd Pylons 193 $ python setup.py develop 194 195 Installing TurboGears 2 from Source: 196 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 197 198 TurboGears 2 are constructed by a bunch of packages. 199 200 Check out the latest code from subversion:: 201 202 $ cd .. 203 $ svn co http://svn.turbogears.org/projects/tg.devtools/trunk tgdev 204 $ svn co http://svn.turbogears.org/trunk tg2 205 $ svn co http://tgtools.googlecode.com/svn/projects/tg.ext.repoze.who/trunk tg.ext.repoze.who 206 207 - tgdev is a set of tools, paster command plugins to create default template, admin interface, and migrations. 208 - tg2 package is TurboGears 2 core. 209 - tg.ext.repoze.who is an extension for tg2 that aims to provide an API compliant implementation of the old tg1 identity framework. 210 211 212 Then you repeat the same steps to tell setuptools/python to use the new tg2 installation. 213 214 Install tg.ext.repoze.who:: 215 216 $ cd tg.ext.repoze.who 217 $ easy_install Paste 218 $ easy_install zope.interface 219 $ python setup.py develop 220 221 Install TurboGears 2 server:: 222 223 $ cd .. 224 $ cd tg2 225 $ easy_install PasteScript==dev 226 $ easy_install genshi 227 $ python setup.py develop 228 229 Install TurboGears 2 developer tools:: 230 231 $ cd .. 232 $ cd tgdev 233 $ python setup.py develop 234 235 Then you have installed TurboGears 2. 236 237 .. note:: if you have installed old dependency packages, you could remove 238 them from {python_path}/site-packages/easy-install.pth 239 240 241 242 Troubleshooting 243 ---------------- 244 245 It is possible (but not likely) you might see a few other error messages. 246 Here are the correct way to fix the dependency problems so things will install 247 properly. 248 249 If you get an error about ``ObjectDispatchController`` this means your Pylons 250 installation is out-of-date. Make sure it's fresh ("hg pull -u" or "hg pull" 251 followed by hg update -- alternatively you can create a brand new Pylons 252 branch in a new directory with "hg clone"). 253 254 When installing on Mac OSX, if you get an error mentioning "No local packages 255 or download links found for RuleDispatch", you can try the solution posted to 256 the `ToscaWidgets discussion list 257 <http://groups.google.com/group/toscawidgets-discuss/browse_thread/thread/cb6778810e96585d>`_, 258 which advises downloading it directly:: 259 260 $ sudo easy_install -U -f http://toscawidgets.org/download/wo_speedups/ RuleDispatch 261 262 If you get the following error when starting a project with ``paster serve``:: 263 264 AttributeError: 'WSGIRequest' object has no attribute 'accept_language' 265 266 update your Pylons checkout with ``hg update`` and try again. 267 268 If ``python setup.py develop`` gives you:: 269 270 Traceback (most recent call last): 271 File "setup.py", line 3, in <module> 272 from ez_setup import use_setuptools 273 274 275 ... commenting out the first two lines in setup.py seems to work. See 276 `this discussion <http://groups.google.com/group/pylons-discuss/browse_thread/thread/1ccf9366004c8e11>`_ 277 278 279 If you get this error about webhelpers, you need the latest version from 280 mercurial:: 281 282 $ hg clone https://www.knowledgetap.com/hg/webhelpers 283 $ cd webhelpers 284 $ python setup.py develop 174 .. _Contributing to Turbogears 2: Contributing.html#installing-the-development-version-of-turbogears-2-from-source docs/2.0/docs/main/Wiki20/wiki20.rst
r5612 r5646 312 312 **initializeDB.py** in the ``Wiki-20`` directory containing the following: 313 313 314 .. code:: Wiki -20/initializeDB.py314 .. code:: Wiki_root/trunk/wiki20/initializeDB.py 315 315 316 316 Now run the program from the ``Wiki-20`` directory: … … 427 427 our purposes: 428 428 429 .. code:: Wwiki_root/snapshots/1/wiki20/templates/page.html429 .. code:: wiki_root/snapshots/1/wiki20/templates/page.html 430 430 431 431 This is a basic XHTML page with three substitutions: … … 542 542 543 543 .. code:: wiki_root/snapshots/5/wiki20/controllers/root.py 544 545 .. warning:: Sphinx mangles the regular expression when 544 546 545 547 We need some additional imports, including ``re`` for regular expressions and docs/2.0/docs/project_code/wiki_root/snapshots/5/wiki20/controllers/root.py
r5617 r5646 12 12 from docutils.core import publish_parts 13 13 14 wikiwords = re.compile(r"\ \b([A-Z]\\w+[A-Z]+\\w+)")14 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 15 15 16 16 class RootController(BaseController): docs/2.0/docs/project_code/wiki_root/snapshots/6/wiki20/controllers/root.py
r5617 r5646 13 13 from sqlalchemy.exceptions import InvalidRequestError 14 14 15 wikiwords = re.compile(r"\ \b([A-Z]\\w+[A-Z]+\\w+)")15 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 16 16 17 17 class RootController(BaseController): docs/2.0/docs/project_code/wiki_root/snapshots/7/wiki20/controllers/root.py
r5617 r5646 13 13 from sqlalchemy.exceptions import InvalidRequestError 14 14 15 wikiwords = re.compile(r"\ \b([A-Z]\\w+[A-Z]+\\w+)")15 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 16 16 17 17 class RootController(BaseController): docs/2.0/docs/project_code/wiki_root/snapshots/8/wiki20/controllers/root.py
r5617 r5646 13 13 from sqlalchemy.exceptions import InvalidRequestError 14 14 15 wikiwords = re.compile(r"\ \b([A-Z]\\w+[A-Z]+\\w+)")15 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 16 16 17 17 class RootController(BaseController): docs/2.0/docs/project_code/wiki_root/snapshots/9/wiki20/controllers/root.py
r5617 r5646 13 13 from sqlalchemy.exceptions import InvalidRequestError 14 14 15 wikiwords = re.compile(r"\ \b([A-Z]\\w+[A-Z]+\\w+)")15 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 16 16 17 17 class RootController(BaseController): docs/2.0/docs/project_code/wiki_root/trunk/wiki20/controllers/root.py
r5347 r5646 13 13 from sqlalchemy.exceptions import InvalidRequestError 14 14 15 wikiwords = re.compile(r"\b([A-Z]\ w+[A-Z]+\w+)")15 wikiwords = re.compile(r"\b([A-Z]\\w+[A-Z]+\w+)") 16 16 17 17 class RootController(BaseController):