{ "info": { "author": "Cesar Parent", "author_email": "cesar@cesarparent.com", "bugtrack_url": null, "classifiers": [], "description": "PyBlog\n======\n\nA lightweight python static blog generator - 0.6.3\n\nInstallation\n------------\n\nThe simplest way to install PyBlog is through one of the Python package\nmanagers, ``pip`` and ``easy_install``:\n\n.. code:: bash\n\n $ [sudo] pip install pyblog\n $ [sudo] easy_install pyblog\n\nAlternatively, you can download or clone this repository, and install\nthe tool manually:\n\n.. code:: bash\n\n $ git clone https://github.com/cesarparent/pyblog.git\n $ python setup.py install\n\nCreating a Blog\n---------------\n\nThe first step in setting up a PyBlog blog is to create the directory\nstructure. You can do this by calling ``pyblog new``:\n\n.. code:: bash\n\n $ mkdir new-blog && cd new-blog\n $ pyblog new .\n\n # or...\n\n $ pyblog new new-blog && cd new-blog\n\nThe tool will create the following directory structure, along with the\nPyBlog configuration file:\n\n.. code:: text\n\n |_ _pages/\n |_ _posts/\n |_ _static/\n |_ _templates/\n |_ config.txt\n\n- ``_pages`` contains any file that you'd like PyBlog to process and\n potentially run through templates. It will keep the same filename and\n be placed at the root of the generated blog (for example, the index &\n about pages, or an RSS feed).\n\n- ``_posts`` contains your posts. They should be ``.txt`` files, and\n can contain any kind of content (at the moment, the only content\n filter available to templates is ``markdown``).\n\n- ``_static`` contains any file you want to be copied without any\n tampering to the output directory (images, CSS and the likes)\n\n- ``_templates`` contains your Jinja2 template files. Any file present\n in the directory is available for posts and pages to use.\n\nOnce the blog is set up and you've written some post, the blog is\ngenerated by calling:\n\n.. code:: bash\n\n $ pyblog build [-s /source] [-d /destination] ...\n\nIf you want PyBlog to re-generate your blog every time a file changes in\nthe source directory, you can add the ``--watch`` flag. You can also\nspawn a local development server with:\n\n.. code:: bash\n\n $ pyblog serve [-s /source] [-d /destination] [-H host] [-P port]\n\nBy default, your blog is available at ``http://localhost:4000``. When\nrunning the development server, ``--watch`` is enabled.\n\nWriting Posts\n-------------\n\nPosts are simple, static plain-text files with a HTTP headers-based\nmetadata section:\n\n.. code:: text\n\n title: Some great post\n date: 2016-09-07 14:00:00\n template: post.html\n\n Hey! This is a post written for the PyBlog demo.\n\n``title`` and ``template`` are required. Title is used to generate the\npost's final URL/filename, and template indicates which template file\nshould be used for rendering. If ``date`` is not specified, the file's\nlast-modified date is used.\n\nWriting Pages\n-------------\n\nPages follow exactly the same model. If the ``template`` field is\nomitted, the contents of the file will just be output \"as is\". If a page\nhas no metadata section, it will be rendered without a template. Pages\ncan contain any Jinja2 template code.\n\nTemplate Objects\n----------------\n\nEvery template gets passed a ``blog`` object on rendering, which\ncontains the following fields:\n\n+-------------------+-------------------------------------------------------+\n| field | description |\n+===================+=======================================================+\n| ``name`` | The blog's name, as specified in ``config.txt`` |\n+-------------------+-------------------------------------------------------+\n| ``tagline`` | The blog's tagline, as specified in ``config.txt`` |\n+-------------------+-------------------------------------------------------+\n| ``root_url`` | The blog's root url, as specified in ``config.txt`` |\n+-------------------+-------------------------------------------------------+\n| ``get_posts()`` | The blog's posts, in reverse-chronological order |\n+-------------------+-------------------------------------------------------+\n| ``get_pages()`` | The blog's pages, in reverse-chronological order |\n+-------------------+-------------------------------------------------------+\n\nWhen rendering a post or a page, a ``post`` object is also available:\n\n+---------------+--------------------------------------------------------+\n| field | description |\n+===============+========================================================+\n| ``title`` | The post's title |\n+---------------+--------------------------------------------------------+\n| ``slug`` | For post's, a url-safe title, for pages the filename |\n+---------------+--------------------------------------------------------+\n| ``url`` | The post's url relative to the blog's root |\n+---------------+--------------------------------------------------------+\n| ``date`` | The post's publication date |\n+---------------+--------------------------------------------------------+\n| ``content`` | The post's content |\n+---------------+--------------------------------------------------------+", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/cesarparent/pyblog", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pyblog", "package_url": "https://pypi.org/project/pyblog/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyblog/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/cesarparent/pyblog" }, "release_url": "https://pypi.org/project/pyblog/0.6.3/", "requires_dist": null, "requires_python": null, "summary": "Lightweight python static blog generator", "version": "0.6.3" }, "last_serial": 2503265, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "02c6b330e4b8477026cd1abc53f694e5", "sha256": "f16134287ea25014f4110a004e874aa37d1b75e1a4611754d9f0ca1de9b238a6" }, "downloads": -1, "filename": "pyblog-0.1.tar.gz", "has_sig": false, "md5_digest": "02c6b330e4b8477026cd1abc53f694e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3220, "upload_time": "2016-09-07T22:58:54", "url": "https://files.pythonhosted.org/packages/f1/10/88309d5ceebac07561b48c20009cdbd9e3988d307a3064deaa12dffe88c8/pyblog-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "7b8404e977ead1cec72fb27011ed8534", "sha256": "cae757ff25bfc1c4017a2b75c2dc56b297fd5af149a9c52adc6bb17a5a677adc" }, "downloads": -1, "filename": "pyblog-0.2.tar.gz", "has_sig": false, "md5_digest": "7b8404e977ead1cec72fb27011ed8534", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3274, "upload_time": "2016-09-07T23:25:22", "url": "https://files.pythonhosted.org/packages/05/5d/e00da7f1252b89923110cdfc4ea7a452ef45665dbb75c63f08174f0f49b7/pyblog-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "cde4bc09cc599e1da6b1e00979da38a6", "sha256": "1f4ad04456f4e6c877b5bdf8ab1b7e081ddd4fe7d7c0cd85fa08cf4fc95509c4" }, "downloads": -1, "filename": "pyblog-0.3.tar.gz", "has_sig": false, "md5_digest": "cde4bc09cc599e1da6b1e00979da38a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3331, "upload_time": "2016-09-14T16:47:06", "url": "https://files.pythonhosted.org/packages/e7/24/aa22d5d1b0ebcd37f8ffd0276f74e400a418d9e03eeacc0b6e98868207c1/pyblog-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "b5c551067647540fd3367d47d3abacc1", "sha256": "218cb53029f0a11c9c0058ab2a244741afaface01a80b11addbb4a472f024380" }, "downloads": -1, "filename": "pyblog-0.4.tar.gz", "has_sig": false, "md5_digest": "b5c551067647540fd3367d47d3abacc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3356, "upload_time": "2016-09-14T18:19:06", "url": "https://files.pythonhosted.org/packages/93/05/d149a0f70bb26d8f9491da5fd4a56ed9d5d9542ee2839b646df9b686f00a/pyblog-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "e63e490745f2e8ea028e67e11cd7ba02", "sha256": "e5c4df34d9a668cde349bdcf60a305e8b495a57b629084e85799dfa7c82f020d" }, "downloads": -1, "filename": "pyblog-0.5.tar.gz", "has_sig": false, "md5_digest": "e63e490745f2e8ea028e67e11cd7ba02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4732, "upload_time": "2016-09-17T15:46:17", "url": "https://files.pythonhosted.org/packages/9b/7f/49d750caba959d9387b6bf5a0510c5f5ea00b2158a7810e806db317be506/pyblog-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0ead01d9de2c36d7a182997d51d81ec3", "sha256": "73381361b167fd28fdf000cd9d4360ee3a4bb2f876a820e8f64440ff391841eb" }, "downloads": -1, "filename": "pyblog-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0ead01d9de2c36d7a182997d51d81ec3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4741, "upload_time": "2016-09-17T17:03:42", "url": "https://files.pythonhosted.org/packages/41/8e/fc16b970c91d17d68a4514371ab57956ec428df4e4aaff9b2edf4e3408bb/pyblog-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "4f2bcbb221f38df4874462074359b912", "sha256": "a899a9faf818a005726263b73b5ed0f855a16dab9b9482d97f9295f8859d8f50" }, "downloads": -1, "filename": "pyblog-0.5.2.tar.gz", "has_sig": false, "md5_digest": "4f2bcbb221f38df4874462074359b912", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6780, "upload_time": "2016-09-17T17:05:37", "url": "https://files.pythonhosted.org/packages/30/70/a2eff1e343e131d6a0484193ba1fbae2fb158167f48968860b0082d7bd5d/pyblog-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "12c12113ca642f9b2d34607cddfaade9", "sha256": "4e09d6730f6703b8cdcd6e2ae67751513cef5d7376a885acd43b2749ae4cb261" }, "downloads": -1, "filename": "pyblog-0.5.3.tar.gz", "has_sig": false, "md5_digest": "12c12113ca642f9b2d34607cddfaade9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6883, "upload_time": "2016-09-17T17:17:13", "url": "https://files.pythonhosted.org/packages/85/3a/6f747675855e3c203ed7f85db42a0d09fc05e2582dfbf7f3b1937f105f7d/pyblog-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "47b63e04af8246dfa4a323d69cb7e886", "sha256": "5eb05ed2512f3b0dcd80aa10c938dac06eb367b6399bfa972646963d8a80e797" }, "downloads": -1, "filename": "pyblog-0.5.4.tar.gz", "has_sig": false, "md5_digest": "47b63e04af8246dfa4a323d69cb7e886", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6865, "upload_time": "2016-09-17T17:19:32", "url": "https://files.pythonhosted.org/packages/2c/27/eb16b120386db764dc31f71e360070164b408664232588d7d15cf397aa65/pyblog-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "865f8f1d17d54464493c90122f775f07", "sha256": "f2482bfd703b005b83b8dc0c7903605d3b85487d680c156e1fd741ba03c89389" }, "downloads": -1, "filename": "pyblog-0.5.5.tar.gz", "has_sig": false, "md5_digest": "865f8f1d17d54464493c90122f775f07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6890, "upload_time": "2016-09-22T13:03:20", "url": "https://files.pythonhosted.org/packages/88/29/dd699786c1a04f09f8b7464e440c4fb659fa3f26c1bdd6c30b4a48d8a9b1/pyblog-0.5.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "389ad66cb0f00e8e68ce1a24078f3d33", "sha256": "843956d8b297eb54c2b9bdc219967637e3fadfe40ead3502b9dbfa9ae42ef966" }, "downloads": -1, "filename": "pyblog-0.6.tar.gz", "has_sig": false, "md5_digest": "389ad66cb0f00e8e68ce1a24078f3d33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7092, "upload_time": "2016-10-09T15:14:30", "url": "https://files.pythonhosted.org/packages/4b/6f/3c0fc49ef005b2b5b6d67da737bf82cdf1825a716540f7421f4f19408561/pyblog-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "05a533c78ce8882f031e65e76b1d331e", "sha256": "044f233a0823b01758a84c4f2ae3696c52804045119158b02f7d96ffca97024a" }, "downloads": -1, "filename": "pyblog-0.6.1.tar.gz", "has_sig": false, "md5_digest": "05a533c78ce8882f031e65e76b1d331e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7032, "upload_time": "2016-10-09T18:48:14", "url": "https://files.pythonhosted.org/packages/42/05/1acc8fcd93067e71fd4dd0540c7de4a09bdb9ef62024b95874c0f0a16498/pyblog-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "e05c15f6879404bd1afad9b81fba9b7b", "sha256": "d9092e242fec3738da4850638e37d9b008eb6de4720ff5f5a29fb3ef608a956c" }, "downloads": -1, "filename": "pyblog-0.6.2.tar.gz", "has_sig": false, "md5_digest": "e05c15f6879404bd1afad9b81fba9b7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7052, "upload_time": "2016-12-06T10:24:31", "url": "https://files.pythonhosted.org/packages/f6/6b/8ccb8b9b6c3b9a30e846bbca1749dbeb869f42cb1f23fd1a1852eb617fb0/pyblog-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "daafb5ed265460cc8db0eaa73ab8ad49", "sha256": "9cce7cb4d42a331f770b4a51cafe33472a8152d8809947de6751f6ec14c69419" }, "downloads": -1, "filename": "pyblog-0.6.3.tar.gz", "has_sig": false, "md5_digest": "daafb5ed265460cc8db0eaa73ab8ad49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7061, "upload_time": "2016-12-06T19:08:28", "url": "https://files.pythonhosted.org/packages/0a/20/829b52fd9071ba88b917da5db343c4c39a5956b41584c63b1d67c8417dfb/pyblog-0.6.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "daafb5ed265460cc8db0eaa73ab8ad49", "sha256": "9cce7cb4d42a331f770b4a51cafe33472a8152d8809947de6751f6ec14c69419" }, "downloads": -1, "filename": "pyblog-0.6.3.tar.gz", "has_sig": false, "md5_digest": "daafb5ed265460cc8db0eaa73ab8ad49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7061, "upload_time": "2016-12-06T19:08:28", "url": "https://files.pythonhosted.org/packages/0a/20/829b52fd9071ba88b917da5db343c4c39a5956b41584c63b1d67c8417dfb/pyblog-0.6.3.tar.gz" } ] }