mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge pull request #3220 from lioman/centralize-python-information
This commit is contained in:
commit
73599f44f2
14 changed files with 176 additions and 215 deletions
17
.github/workflows/main.yml
vendored
17
.github/workflows/main.yml
vendored
|
|
@ -51,23 +51,18 @@ jobs:
|
||||||
lint:
|
lint:
|
||||||
name: Lint
|
name: Lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install Poetry
|
- uses: pdm-project/setup-pdm@v3
|
||||||
run: pipx install poetry
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
with:
|
||||||
python-version: "3.9"
|
python-version: 3.9
|
||||||
cache: "poetry"
|
cache: true
|
||||||
cache-dependency-path: "pyproject.toml"
|
cache-dependency-path: ./pyproject.toml
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
poetry env use "3.9"
|
pdm install --no-default --dev
|
||||||
poetry install --no-interaction --no-root
|
|
||||||
- name: Run linters
|
- name: Run linters
|
||||||
run: poetry run invoke lint --diff
|
run: pdm lint --diff
|
||||||
|
|
||||||
docs:
|
docs:
|
||||||
name: Build docs
|
name: Build docs
|
||||||
|
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -15,4 +15,5 @@ htmlcov
|
||||||
venv
|
venv
|
||||||
samples/output
|
samples/output
|
||||||
*.pem
|
*.pem
|
||||||
poetry.lock
|
*.lock
|
||||||
|
.pdm-python
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
include *.rst
|
|
||||||
recursive-include pelican *.html *.css *png *.rst *.markdown *.md *.mkd *.xml *.py *.jinja2
|
|
||||||
include LICENSE THANKS docs/changelog.rst pyproject.toml
|
|
||||||
graft samples
|
|
||||||
global-exclude __pycache__
|
|
||||||
global-exclude *.py[co]
|
|
||||||
82
docs/conf.py
82
docs/conf.py
|
|
@ -2,48 +2,58 @@ import datetime
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from pelican import __version__
|
if sys.version_info >= (3, 11):
|
||||||
|
import tomllib
|
||||||
|
else:
|
||||||
|
import tomli as tomllib
|
||||||
|
|
||||||
|
|
||||||
sys.path.append(os.path.abspath(os.pardir))
|
sys.path.append(os.path.abspath(os.pardir))
|
||||||
|
|
||||||
|
|
||||||
|
with open("../pyproject.toml", "rb") as f:
|
||||||
|
project_data = tomllib.load(f).get("project")
|
||||||
|
if project_data is None:
|
||||||
|
raise KeyError("project data is not found")
|
||||||
|
|
||||||
|
|
||||||
# -- General configuration ----------------------------------------------------
|
# -- General configuration ----------------------------------------------------
|
||||||
templates_path = ['_templates']
|
templates_path = ["_templates"]
|
||||||
extensions = [
|
extensions = [
|
||||||
"sphinx.ext.autodoc",
|
"sphinx.ext.autodoc",
|
||||||
"sphinx.ext.ifconfig",
|
"sphinx.ext.ifconfig",
|
||||||
"sphinx.ext.extlinks",
|
"sphinx.ext.extlinks",
|
||||||
"sphinxext.opengraph",
|
"sphinxext.opengraph",
|
||||||
]
|
]
|
||||||
source_suffix = '.rst'
|
source_suffix = ".rst"
|
||||||
master_doc = 'index'
|
master_doc = "index"
|
||||||
project = 'Pelican'
|
project = project_data.get("name").upper()
|
||||||
year = datetime.datetime.now().date().year
|
year = datetime.datetime.now().date().year
|
||||||
copyright = f'2010–{year}'
|
copyright = f"2010–{year}"
|
||||||
exclude_patterns = ['_build']
|
exclude_patterns = ["_build"]
|
||||||
release = __version__
|
release = project_data.get("version")
|
||||||
version = '.'.join(release.split('.')[:1])
|
version = ".".join(release.split(".")[:1])
|
||||||
last_stable = __version__
|
last_stable = project_data.get("version")
|
||||||
rst_prolog = '''
|
rst_prolog = f"""
|
||||||
.. |last_stable| replace:: :pelican-doc:`{}`
|
.. |last_stable| replace:: :pelican-doc:`{last_stable}`
|
||||||
'''.format(last_stable)
|
.. |min_python| replace:: {project_data.get('requires-python').split(",")[0]}
|
||||||
|
"""
|
||||||
|
|
||||||
extlinks = {
|
extlinks = {"pelican-doc": ("https://docs.getpelican.com/en/latest/%s.html", "%s")}
|
||||||
'pelican-doc': ('https://docs.getpelican.com/en/latest/%s.html', '%s')
|
|
||||||
}
|
|
||||||
|
|
||||||
# -- Options for HTML output --------------------------------------------------
|
# -- Options for HTML output --------------------------------------------------
|
||||||
|
|
||||||
html_theme = 'furo'
|
html_theme = "furo"
|
||||||
html_title = f'<strong>{project}</strong> <i>{release}</i>'
|
html_title = f"<strong>{project}</strong> <i>{release}</i>"
|
||||||
html_static_path = ['_static']
|
html_static_path = ["_static"]
|
||||||
html_theme_options = {
|
html_theme_options = {
|
||||||
'light_logo': 'pelican-logo.svg',
|
"light_logo": "pelican-logo.svg",
|
||||||
'dark_logo': 'pelican-logo.svg',
|
"dark_logo": "pelican-logo.svg",
|
||||||
'navigation_with_keys': True,
|
"navigation_with_keys": True,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = 'Pelicandoc'
|
htmlhelp_basename = "Pelicandoc"
|
||||||
|
|
||||||
html_use_smartypants = True
|
html_use_smartypants = True
|
||||||
|
|
||||||
|
|
@ -59,21 +69,29 @@ html_show_sourcelink = False
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
# overrides for wide tables in RTD theme
|
# overrides for wide tables in RTD theme
|
||||||
app.add_css_file('theme_overrides.css') # path relative to _static
|
app.add_css_file("theme_overrides.css") # path relative to _static
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output -------------------------------------------------
|
# -- Options for LaTeX output -------------------------------------------------
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
('index', 'Pelican.tex', 'Pelican Documentation', 'Justin Mayer',
|
("index", "Pelican.tex", "Pelican Documentation", "Justin Mayer", "manual"),
|
||||||
'manual'),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# -- Options for manual page output -------------------------------------------
|
# -- Options for manual page output -------------------------------------------
|
||||||
man_pages = [
|
man_pages = [
|
||||||
('index', 'pelican', 'pelican documentation',
|
("index", "pelican", "pelican documentation", ["Justin Mayer"], 1),
|
||||||
['Justin Mayer'], 1),
|
(
|
||||||
('pelican-themes', 'pelican-themes', 'A theme manager for Pelican',
|
"pelican-themes",
|
||||||
['Mickaël Raybaud'], 1),
|
"pelican-themes",
|
||||||
('themes', 'pelican-theming', 'How to create themes for Pelican',
|
"A theme manager for Pelican",
|
||||||
['The Pelican contributors'], 1)
|
["Mickaël Raybaud"],
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"themes",
|
||||||
|
"pelican-theming",
|
||||||
|
"How to create themes for Pelican",
|
||||||
|
["The Pelican contributors"],
|
||||||
|
1,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,16 @@ Setting up the development environment
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
While there are many ways to set up one's development environment, the following
|
While there are many ways to set up one's development environment, the following
|
||||||
instructions will utilize Pip_ and Poetry_. These tools facilitate managing
|
instructions will utilize Pip_ and PDM_. These tools facilitate managing
|
||||||
virtual environments for separate Python projects that are isolated from one
|
virtual environments for separate Python projects that are isolated from one
|
||||||
another, so you can use different packages (and package versions) for each.
|
another, so you can use different packages (and package versions) for each.
|
||||||
|
|
||||||
Please note that Python 3.7+ is required for Pelican development.
|
Please note that Python |min_python| is required for Pelican development.
|
||||||
|
|
||||||
*(Optional)* If you prefer to `install Poetry <https://python-poetry.org/docs/master/#installation>`_ once for use with multiple projects,
|
*(Optional)* If you prefer to `install PDM <https://pdm.fming.dev/latest/#installation>`_ once for use with multiple projects,
|
||||||
you can install it via::
|
you can install it via::
|
||||||
|
|
||||||
curl -sSL https://install.python-poetry.org | python3 -
|
curl -sSL https://pdm.fming.dev/install-pdm.py | python3 -
|
||||||
|
|
||||||
Point your web browser to the `Pelican repository`_ and tap the **Fork** button
|
Point your web browser to the `Pelican repository`_ and tap the **Fork** button
|
||||||
at top-right. Then clone the source for your fork and add the upstream project
|
at top-right. Then clone the source for your fork and add the upstream project
|
||||||
|
|
@ -35,7 +35,7 @@ as a Git remote::
|
||||||
cd ~/projects/pelican
|
cd ~/projects/pelican
|
||||||
git remote add upstream https://github.com/getpelican/pelican.git
|
git remote add upstream https://github.com/getpelican/pelican.git
|
||||||
|
|
||||||
While Poetry can dynamically create and manage virtual environments, we're going
|
While PDM can dynamically create and manage virtual environments, we're going
|
||||||
to manually create and activate a virtual environment::
|
to manually create and activate a virtual environment::
|
||||||
|
|
||||||
mkdir ~/virtualenvs && cd ~/virtualenvs
|
mkdir ~/virtualenvs && cd ~/virtualenvs
|
||||||
|
|
@ -51,7 +51,7 @@ Install the needed dependencies and set up the project::
|
||||||
Your local environment should now be ready to go!
|
Your local environment should now be ready to go!
|
||||||
|
|
||||||
.. _Pip: https://pip.pypa.io/
|
.. _Pip: https://pip.pypa.io/
|
||||||
.. _Poetry: https://python-poetry.org/
|
.. _PDM: https://pdm.fming.dev/latest/
|
||||||
.. _Pelican repository: https://github.com/getpelican/pelican
|
.. _Pelican repository: https://github.com/getpelican/pelican
|
||||||
|
|
||||||
Development
|
Development
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
Installing Pelican
|
Installing Pelican
|
||||||
##################
|
##################
|
||||||
|
|
||||||
Pelican currently runs best on 3.7+; earlier versions of Python are not supported.
|
Pelican currently runs best on |min_python|; earlier versions of Python are not supported.
|
||||||
|
|
||||||
You can install Pelican via several different methods. The simplest is via Pip_::
|
You can install Pelican via several different methods. The simplest is via Pip_::
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Installation
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Install Pelican (and optionally Markdown if you intend to use it) on Python
|
Install Pelican (and optionally Markdown if you intend to use it) on Python
|
||||||
3.7+ by running the following command in your preferred terminal, prefixing
|
|min_python| by running the following command in your preferred terminal, prefixing
|
||||||
with ``sudo`` if permissions warrant::
|
with ``sudo`` if permissions warrant::
|
||||||
|
|
||||||
python -m pip install "pelican[markdown]"
|
python -m pip install "pelican[markdown]"
|
||||||
|
|
|
||||||
7
pelican/tests/build_test/conftest.py
Normal file
7
pelican/tests/build_test/conftest.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
def pytest_addoption(parser):
|
||||||
|
parser.addoption(
|
||||||
|
"--check-wheel",
|
||||||
|
action="store",
|
||||||
|
default=False,
|
||||||
|
help="Check wheel contents.",
|
||||||
|
)
|
||||||
28
pelican/tests/build_test/test_wheel.py
Normal file
28
pelican/tests/build_test/test_wheel.py
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
from pathlib import Path
|
||||||
|
import pytest
|
||||||
|
from zipfile import ZipFile
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(
|
||||||
|
"not config.getoption('--check-wheel')",
|
||||||
|
reason="Only run when --check-wheel is given",
|
||||||
|
)
|
||||||
|
def test_wheel_contents(pytestconfig):
|
||||||
|
"""
|
||||||
|
This test, should test the contents of the wheel to make sure,
|
||||||
|
that everything that is needed is included in the final build
|
||||||
|
"""
|
||||||
|
wheel_file = pytestconfig.getoption("--check-wheel")
|
||||||
|
assert wheel_file.endswith(".whl")
|
||||||
|
files_list = ZipFile(wheel_file).namelist()
|
||||||
|
## Check is theme files are copiedto wheel
|
||||||
|
simple_theme = Path("./pelican/themes/simple/templates")
|
||||||
|
for x in simple_theme.iterdir():
|
||||||
|
assert str(x) in files_list
|
||||||
|
|
||||||
|
## Check is tool templatesare copiedto wheel
|
||||||
|
tools = Path("./pelican/tools/templates")
|
||||||
|
for x in tools.iterdir():
|
||||||
|
assert str(x) in files_list
|
||||||
|
|
||||||
|
assert "pelican/tools/templates/tasks.py.jinja2" in files_list
|
||||||
125
pyproject.toml
125
pyproject.toml
|
|
@ -1,21 +1,24 @@
|
||||||
[tool.poetry]
|
[project]
|
||||||
name = "pelican"
|
name = "pelican"
|
||||||
version = "4.8.0"
|
authors = [{ name = "Justin Mayer", email = "authors@getpelican.com" }]
|
||||||
description = "Static site generator supporting Markdown and reStructuredText"
|
description = "Static site generator supporting Markdown and reStructuredText"
|
||||||
authors = ["Justin Mayer <entrop@gmail.com>"]
|
version = "4.8.0"
|
||||||
license = "AGPLv3"
|
license = { text = "AGPLv3" }
|
||||||
readme = "README.rst"
|
readme = "README.rst"
|
||||||
keywords = ["static site generator", "static sites", "ssg"]
|
keywords = ["static site generator", "static sites", "ssg"]
|
||||||
|
|
||||||
homepage = "https://getpelican.com"
|
|
||||||
repository = "https://github.com/getpelican/pelican"
|
|
||||||
documentation = "https://docs.getpelican.com"
|
|
||||||
|
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 5 - Production/Stable",
|
||||||
"Environment :: Console",
|
"Environment :: Console",
|
||||||
"Framework :: Pelican",
|
"Framework :: Pelican",
|
||||||
|
"Intended Audience :: End Users/Desktop",
|
||||||
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3.8",
|
||||||
|
"Programming Language :: Python :: 3.9",
|
||||||
|
"Programming Language :: Python :: 3.10",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
"Programming Language :: Python :: Implementation :: CPython",
|
"Programming Language :: Python :: Implementation :: CPython",
|
||||||
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System",
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System",
|
||||||
"Topic :: Internet :: WWW/HTTP :: Site Management",
|
"Topic :: Internet :: WWW/HTTP :: Site Management",
|
||||||
|
|
@ -24,52 +27,31 @@ classifiers = [
|
||||||
"Topic :: Text Processing :: Markup :: HTML",
|
"Topic :: Text Processing :: Markup :: HTML",
|
||||||
"Topic :: Text Processing :: Markup :: reStructuredText",
|
"Topic :: Text Processing :: Markup :: reStructuredText",
|
||||||
]
|
]
|
||||||
|
requires-python = ">=3.8.1,<4.0"
|
||||||
|
dependencies = [
|
||||||
|
"blinker>=1.4",
|
||||||
|
"docutils>=0.16",
|
||||||
|
"feedgenerator>=1.9",
|
||||||
|
"jinja2>=2.7",
|
||||||
|
"pygments>=2.6",
|
||||||
|
"python-dateutil>=2.8",
|
||||||
|
"rich>=10.1",
|
||||||
|
"unidecode>=1.1",
|
||||||
|
"backports-zoneinfo<1.0.0,>=0.2.1;python_version<'3.9'",
|
||||||
|
"watchfiles>=0.21.0",
|
||||||
|
]
|
||||||
|
|
||||||
[tool.poetry.urls]
|
[project.optional-dependencies]
|
||||||
"Funding" = "https://donate.getpelican.com/"
|
markdown = ["markdown>=3.1"]
|
||||||
"Tracker" = "https://github.com/getpelican/pelican/issues"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[project.urls]
|
||||||
python = ">=3.7,<4.0"
|
Homepage = "https://getpelican.com"
|
||||||
blinker = ">=1.4"
|
Funding = "https://donate.getpelican.com/"
|
||||||
docutils = ">=0.16"
|
"Issue Tracker" = "https://github.com/getpelican/pelican/issues"
|
||||||
feedgenerator = ">=1.9"
|
Repository = "https://github.com/getpelican/pelican"
|
||||||
jinja2 = ">=2.7"
|
Documentation = "https://docs.getpelican.com"
|
||||||
pygments = ">=2.6"
|
|
||||||
python-dateutil = ">=2.8"
|
|
||||||
rich = ">=10.1"
|
|
||||||
unidecode = ">=1.1"
|
|
||||||
markdown = {version = ">=3.1", optional = true}
|
|
||||||
backports-zoneinfo = {version = "^0.2.1", python = "<3.9"}
|
|
||||||
watchfiles = "^0.19.0"
|
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[project.scripts]
|
||||||
BeautifulSoup4 = "^4.9"
|
|
||||||
jinja2 = "~3.1.2"
|
|
||||||
lxml = "^4.3"
|
|
||||||
markdown = "~3.4.3"
|
|
||||||
typogrify = "^2.0"
|
|
||||||
sphinx = "^5.1"
|
|
||||||
furo = "2023.03.27"
|
|
||||||
livereload = "^2.6"
|
|
||||||
psutil = {version = "^5.7", optional = true}
|
|
||||||
pygments = "~2.15"
|
|
||||||
pytest = "^7.1"
|
|
||||||
pytest-cov = "^4.0"
|
|
||||||
pytest-sugar = "^0.9.5"
|
|
||||||
pytest-xdist = "^2.0"
|
|
||||||
ruff = "^0.1.3"
|
|
||||||
tox = {version = "^3.13", optional = true}
|
|
||||||
flake8 = "^3.8"
|
|
||||||
flake8-import-order = "^0.18.1"
|
|
||||||
invoke = "^2.0"
|
|
||||||
isort = "^5.2"
|
|
||||||
black = {version = "^19.10b0", allow-prereleases = true}
|
|
||||||
|
|
||||||
[tool.poetry.extras]
|
|
||||||
markdown = ["markdown"]
|
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
|
||||||
pelican = "pelican.__main__:main"
|
pelican = "pelican.__main__:main"
|
||||||
pelican-import = "pelican.tools.pelican_import:main"
|
pelican-import = "pelican.tools.pelican_import:main"
|
||||||
pelican-plugins = "pelican.plugins._utils:list_plugins"
|
pelican-plugins = "pelican.plugins._utils:list_plugins"
|
||||||
|
|
@ -83,8 +65,41 @@ git-email = "52496925+botpub@users.noreply.github.com"
|
||||||
changelog-file = "docs/changelog.rst"
|
changelog-file = "docs/changelog.rst"
|
||||||
changelog-header = "###############"
|
changelog-header = "###############"
|
||||||
version-header = "="
|
version-header = "="
|
||||||
version-strings = ["setup.py"]
|
|
||||||
build-system = "setuptools"
|
[tool.pdm]
|
||||||
|
|
||||||
|
[tool.pdm.scripts]
|
||||||
|
docbuild = "invoke docbuild"
|
||||||
|
docserve = "invoke docserve"
|
||||||
|
lint = "invoke lint"
|
||||||
|
test = "invoke tests"
|
||||||
|
|
||||||
|
[tool.pdm.dev-dependencies]
|
||||||
|
dev = [
|
||||||
|
"BeautifulSoup4<5.0,>=4.9",
|
||||||
|
"jinja2~=3.1.2",
|
||||||
|
"lxml<5.0,>=4.3",
|
||||||
|
"markdown~=3.4.3",
|
||||||
|
"typogrify<3.0,>=2.0",
|
||||||
|
"sphinx<6.0,>=5.1",
|
||||||
|
"furo==2023.03.27",
|
||||||
|
"livereload<3.0,>=2.6",
|
||||||
|
"psutil<6.0,>=5.7",
|
||||||
|
"pygments~=2.15",
|
||||||
|
"pytest<8.0,>=7.1",
|
||||||
|
"pytest-cov<5.0,>=4.0",
|
||||||
|
"pytest-sugar<1.0.0,>=0.9.5",
|
||||||
|
"pytest-xdist<3.0,>=2.0",
|
||||||
|
"tox<4.0,>=3.13",
|
||||||
|
"flake8<4.0,>=3.8",
|
||||||
|
"flake8-import-order<1.0.0,>=0.18.1",
|
||||||
|
"invoke<3.0,>=2.0",
|
||||||
|
"isort<6.0,>=5.2",
|
||||||
|
"black<20.0,>=19.10b0",
|
||||||
|
"ruff>=0.1.3,<1.0.0",
|
||||||
|
"tomli;python_version<'3.11'",
|
||||||
|
]
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools >= 40.6.0", "wheel"]
|
requires = ["pdm-backend"]
|
||||||
|
build-backend = "pdm.backend"
|
||||||
|
|
|
||||||
|
|
@ -2,3 +2,4 @@ sphinx<6.0
|
||||||
sphinxext-opengraph
|
sphinxext-opengraph
|
||||||
furo
|
furo
|
||||||
livereload
|
livereload
|
||||||
|
tomli;python_version<"3.11"
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
[bdist_wheel]
|
|
||||||
universal = 1
|
|
||||||
96
setup.py
96
setup.py
|
|
@ -1,96 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
from os import walk
|
|
||||||
from os.path import join, relpath
|
|
||||||
|
|
||||||
from setuptools import find_packages, setup
|
|
||||||
|
|
||||||
|
|
||||||
version = "4.8.0"
|
|
||||||
|
|
||||||
requires = [
|
|
||||||
'feedgenerator >= 1.9',
|
|
||||||
'jinja2 >= 2.7',
|
|
||||||
'pygments',
|
|
||||||
'docutils>=0.15',
|
|
||||||
'blinker',
|
|
||||||
'unidecode',
|
|
||||||
'python-dateutil',
|
|
||||||
'rich',
|
|
||||||
'backports-zoneinfo[tzdata] >= 0.2; python_version<"3.9"',
|
|
||||||
'watchfiles'
|
|
||||||
]
|
|
||||||
|
|
||||||
entry_points = {
|
|
||||||
'console_scripts': [
|
|
||||||
'pelican = pelican.__main__:main',
|
|
||||||
'pelican-import = pelican.tools.pelican_import:main',
|
|
||||||
'pelican-quickstart = pelican.tools.pelican_quickstart:main',
|
|
||||||
'pelican-themes = pelican.tools.pelican_themes:main',
|
|
||||||
'pelican-plugins = pelican.plugins._utils:list_plugins'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
README = open('README.rst', encoding='utf-8').read()
|
|
||||||
CHANGELOG = open('docs/changelog.rst', encoding='utf-8').read()
|
|
||||||
|
|
||||||
# Relative links in the README must be converted to absolute URL's
|
|
||||||
# so that they render correctly on PyPI.
|
|
||||||
README = README.replace(
|
|
||||||
"<CONTRIBUTING.rst>",
|
|
||||||
"<https://docs.getpelican.com/en/latest/contribute.html>",
|
|
||||||
)
|
|
||||||
|
|
||||||
description = '\n'.join([README, CHANGELOG])
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name='pelican',
|
|
||||||
version=version,
|
|
||||||
url='https://getpelican.com/',
|
|
||||||
author='Justin Mayer',
|
|
||||||
author_email='authors@getpelican.com',
|
|
||||||
description="Static site generator supporting reStructuredText and "
|
|
||||||
"Markdown source content.",
|
|
||||||
project_urls={
|
|
||||||
'Documentation': 'https://docs.getpelican.com/',
|
|
||||||
'Funding': 'https://donate.getpelican.com/',
|
|
||||||
'Source': 'https://github.com/getpelican/pelican',
|
|
||||||
'Tracker': 'https://github.com/getpelican/pelican/issues',
|
|
||||||
},
|
|
||||||
keywords='static web site generator SSG reStructuredText Markdown',
|
|
||||||
license='AGPLv3',
|
|
||||||
long_description=description,
|
|
||||||
long_description_content_type='text/x-rst',
|
|
||||||
packages=find_packages(),
|
|
||||||
include_package_data=True, # includes all in MANIFEST.in if in package
|
|
||||||
# NOTE : This will collect any files that happen to be in the themes
|
|
||||||
# directory, even though they may not be checked into version control.
|
|
||||||
package_data={ # pelican/themes is not a package, so include manually
|
|
||||||
'pelican': [relpath(join(root, name), 'pelican')
|
|
||||||
for root, _, names in walk(join('pelican', 'themes'))
|
|
||||||
for name in names],
|
|
||||||
},
|
|
||||||
install_requires=requires,
|
|
||||||
extras_require={
|
|
||||||
'Markdown': ['markdown~=3.1.1']
|
|
||||||
},
|
|
||||||
entry_points=entry_points,
|
|
||||||
classifiers=[
|
|
||||||
'Development Status :: 5 - Production/Stable',
|
|
||||||
'Environment :: Console',
|
|
||||||
'Framework :: Pelican',
|
|
||||||
'License :: OSI Approved :: GNU Affero General Public License v3',
|
|
||||||
'Operating System :: OS Independent',
|
|
||||||
'Programming Language :: Python :: 3',
|
|
||||||
'Programming Language :: Python :: 3.7',
|
|
||||||
'Programming Language :: Python :: 3.8',
|
|
||||||
'Programming Language :: Python :: 3.9',
|
|
||||||
'Programming Language :: Python :: 3.10',
|
|
||||||
'Programming Language :: Python :: 3.11',
|
|
||||||
'Programming Language :: Python :: 3.12',
|
|
||||||
'Programming Language :: Python :: Implementation :: CPython',
|
|
||||||
'Topic :: Internet :: WWW/HTTP',
|
|
||||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
|
||||||
],
|
|
||||||
test_suite='pelican.tests',
|
|
||||||
)
|
|
||||||
6
tasks.py
6
tasks.py
|
|
@ -15,8 +15,8 @@ VENV_PATH = Path(ACTIVE_VENV) if ACTIVE_VENV else (VENV_HOME / PKG_NAME)
|
||||||
VENV = str(VENV_PATH.expanduser())
|
VENV = str(VENV_PATH.expanduser())
|
||||||
VENV_BIN = Path(VENV) / Path(BIN_DIR)
|
VENV_BIN = Path(VENV) / Path(BIN_DIR)
|
||||||
|
|
||||||
TOOLS = ["poetry", "pre-commit", "psutil"]
|
TOOLS = ["pdm", "pre-commit", "psutil"]
|
||||||
POETRY = which("poetry") or VENV_BIN / "poetry"
|
PDM = which("pdm") or VENV_BIN / "pdm"
|
||||||
PRECOMMIT = which("pre-commit") or VENV_BIN / "pre-commit"
|
PRECOMMIT = which("pre-commit") or VENV_BIN / "pre-commit"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -107,7 +107,7 @@ def precommit(c):
|
||||||
def setup(c):
|
def setup(c):
|
||||||
c.run(f"{VENV_BIN}/python -m pip install -U pip", pty=PTY)
|
c.run(f"{VENV_BIN}/python -m pip install -U pip", pty=PTY)
|
||||||
tools(c)
|
tools(c)
|
||||||
c.run(f"{POETRY} install", pty=PTY)
|
c.run(f"{PDM} install", pty=PTY)
|
||||||
precommit(c)
|
precommit(c)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue