summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 10:37:42 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 10:37:42 +0000
commit3a6506d0aff12a465ccdc8f0ea34f3495c356b11 (patch)
treeb01e05da107ccf7ed6544afc89c04c6b13f9d5a6
parent7f93cbc2369ae7ebbd43dffbe2659c9eb655245f (diff)
automatic import of python-amp-rendereropeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-amp-renderer.spec477
-rw-r--r--sources1
3 files changed, 479 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..83cd1bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/amp-renderer-2.0.1.tar.gz
diff --git a/python-amp-renderer.spec b/python-amp-renderer.spec
new file mode 100644
index 0000000..76331ca
--- /dev/null
+++ b/python-amp-renderer.spec
@@ -0,0 +1,477 @@
+%global _empty_manifest_terminate_build 0
+Name: python-amp-renderer
+Version: 2.0.1
+Release: 1
+Summary: Unofficial Python port of server-side rendering from AMP Optimizer
+License: Apache Software License
+URL: https://github.com/chasefinch/amp-renderer
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/41/2c/ce83e3d26362d83113ace1ebd74c3834f728c266bc7a9a5803d47b229963/amp-renderer-2.0.1.tar.gz
+BuildArch: noarch
+
+
+%description
+# AMP Renderer
+
+![Python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue) [![Build Status](https://travis-ci.com/chasefinch/amp-renderer.svg?branch=main)](https://travis-ci.com/chasefinch/amp-renderer) ![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen)
+
+Unofficial Python port of [server-side rendering](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites) from [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer). Supports Python 3.6 and above.
+
+AMP Renderer performs the following optimizations:
+1. Inject the specific layout markup into each AMP element
+2. Insert the AMP runtime styles into the document
+3. Remove the AMP boilerplate styles, if possible
+4. Mark the document as “transformed” with the appropriate tags on the `html` element
+5. Insert `img` tags for images with the data-hero attribute
+
+It also makes these formatting updates:
+1. Remove empty `class` and `style` tags for AMP HTML elements
+2. Convert tag names and attribute names to lowercase
+3. Convert numerical attribute values to strings
+4. Use double quotes ("") for attributes, and escape double quotes inside attribute values
+5. Remove whitespace between html attributes
+6. If desired, removes comments (disabled by default)
+7. If desired, trims whitespace around HTML attribute values (disabled by default, and not always a good idea)
+
+AMPRenderer can be used on a block of arbitrary HTML, but when used on a full document, it will insert the AMP runtime styles and, if possible, remove the AMP boilerplate styles.
+
+Boilerplate styles can be removed except in these cases:
+- An AMP element uses an unsupported value for the `layout` attribute
+- `amp-audio` is used
+- There is at least one `amp-experiment` active
+- Transformation fails for one or more elements due to an invalid attribute value for `media`, `sizes`, or `heights`
+- Any render-delaying extension is used. Currently this means:
+ - `amp-dynamic-css-classes`
+ - `amp-story`
+
+If boilerplate styles can’t be removed, the attribute `no_boilerplate` will be set to `True` after calling `render`; otherwise it will be `False`. Until `render` runs, the `no_boilerplate` attribute isn’t set at all.
+
+## Usage
+
+If using Django, you can use the [Django AMP Renderer middleware](https://github.com/chasefinch/django-amp-renderer).
+
+Otherwise, install via PyPI:
+
+ pip install amp-renderer
+
+Minimal usage:
+
+ from amp_renderer import AMPRenderer
+
+ ...
+
+ RUNTIME_VERSION = "012345678" /* Current AMP runtime version number */
+ RUNTIME_STYLES = "..." /* Current contents of https://cdn.ampproject.org/v0.css */
+
+ renderer = AMPRenderer(
+ runtime_version=RUNTIME_VERSION,
+ runtime_styles=RUNTIME_STYLES)
+
+ original_html = """
+ <!doctype html>
+ <html ⚡>
+ ...
+ </html>
+ """
+
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+Remove comments and/or trim attributes:
+
+ renderer.should_strip_comments = True
+ renderer.should_trim_attributes = True
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+The AMPRenderer class inherits from [HTMLParser](https://docs.python.org/3/library/html.parser.html), and can be similarly extended.
+
+## Testing, etc.
+
+Install requrements:
+
+ make install
+
+Sort imports (Requires Python >= 3.8):
+
+ make format
+
+Lint (Requires Python >= 3.8):
+
+ make lint
+
+Test:
+
+ make test
+
+## Discussion
+
+There are still some aspects of the official AMP Optimizer implementation that haven’t been addressed yet. PRs welcome.
+
+### General
+- [x] ~Tested against AMP Optimizer’s ServerSideRendering spec~
+- [ ] Automatic runtime version management
+
+### Dynamic attributes
+- [x] ~Support `sizes`, `media`, and `heights` via CSS injection~
+- [x] ~Group CSS injections for `media` attributes by shared media queries to reduce necessary bytes~
+- [ ] Support percent values in `heights`
+- [ ] Warn or fail if CSS injection puts the `amp-custom` element over the byte limit
+
+### Hero Images
+- [x] ~Inject `img` tag for `amp-img`s with the `data-hero` attribute~
+- [ ] Enforce 2-image limit on `data-hero`
+- [ ] Autodetect hero images
+- [ ] Support hero image functionality for `amp-iframe`, `amp-video`, and `amp-video-iframe`
+
+### Performance
+
+The Python AMP Renderer does not insert `preload` links into the `head` of the DOM object for hero images; This can be done by hand for more control over the critical path.
+
+<!--
+
+Since AMPRenderer adds the `amp-runtime` styles to the document, you can also use the [AMP Module Build](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites#amp-module-build-(coming-soon)) by hand. To take advantage of this, rewrite the import scripts such that imports like this:
+
+ <script async src="https://cdn.ampproject.org/v0.js"></script>
+
+...become 2-part imports based on [Javascript Modules](https://v8.dev/features/modules#browser), like this:
+
+ <script type="module" async src="https://cdn.ampproject.org/v0.mjs"></script>
+ <script nomodule async src="https://cdn.ampproject.org/v0.js"></script>
+
+-->
+
+
+
+
+%package -n python3-amp-renderer
+Summary: Unofficial Python port of server-side rendering from AMP Optimizer
+Provides: python-amp-renderer
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-amp-renderer
+# AMP Renderer
+
+![Python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue) [![Build Status](https://travis-ci.com/chasefinch/amp-renderer.svg?branch=main)](https://travis-ci.com/chasefinch/amp-renderer) ![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen)
+
+Unofficial Python port of [server-side rendering](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites) from [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer). Supports Python 3.6 and above.
+
+AMP Renderer performs the following optimizations:
+1. Inject the specific layout markup into each AMP element
+2. Insert the AMP runtime styles into the document
+3. Remove the AMP boilerplate styles, if possible
+4. Mark the document as “transformed” with the appropriate tags on the `html` element
+5. Insert `img` tags for images with the data-hero attribute
+
+It also makes these formatting updates:
+1. Remove empty `class` and `style` tags for AMP HTML elements
+2. Convert tag names and attribute names to lowercase
+3. Convert numerical attribute values to strings
+4. Use double quotes ("") for attributes, and escape double quotes inside attribute values
+5. Remove whitespace between html attributes
+6. If desired, removes comments (disabled by default)
+7. If desired, trims whitespace around HTML attribute values (disabled by default, and not always a good idea)
+
+AMPRenderer can be used on a block of arbitrary HTML, but when used on a full document, it will insert the AMP runtime styles and, if possible, remove the AMP boilerplate styles.
+
+Boilerplate styles can be removed except in these cases:
+- An AMP element uses an unsupported value for the `layout` attribute
+- `amp-audio` is used
+- There is at least one `amp-experiment` active
+- Transformation fails for one or more elements due to an invalid attribute value for `media`, `sizes`, or `heights`
+- Any render-delaying extension is used. Currently this means:
+ - `amp-dynamic-css-classes`
+ - `amp-story`
+
+If boilerplate styles can’t be removed, the attribute `no_boilerplate` will be set to `True` after calling `render`; otherwise it will be `False`. Until `render` runs, the `no_boilerplate` attribute isn’t set at all.
+
+## Usage
+
+If using Django, you can use the [Django AMP Renderer middleware](https://github.com/chasefinch/django-amp-renderer).
+
+Otherwise, install via PyPI:
+
+ pip install amp-renderer
+
+Minimal usage:
+
+ from amp_renderer import AMPRenderer
+
+ ...
+
+ RUNTIME_VERSION = "012345678" /* Current AMP runtime version number */
+ RUNTIME_STYLES = "..." /* Current contents of https://cdn.ampproject.org/v0.css */
+
+ renderer = AMPRenderer(
+ runtime_version=RUNTIME_VERSION,
+ runtime_styles=RUNTIME_STYLES)
+
+ original_html = """
+ <!doctype html>
+ <html ⚡>
+ ...
+ </html>
+ """
+
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+Remove comments and/or trim attributes:
+
+ renderer.should_strip_comments = True
+ renderer.should_trim_attributes = True
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+The AMPRenderer class inherits from [HTMLParser](https://docs.python.org/3/library/html.parser.html), and can be similarly extended.
+
+## Testing, etc.
+
+Install requrements:
+
+ make install
+
+Sort imports (Requires Python >= 3.8):
+
+ make format
+
+Lint (Requires Python >= 3.8):
+
+ make lint
+
+Test:
+
+ make test
+
+## Discussion
+
+There are still some aspects of the official AMP Optimizer implementation that haven’t been addressed yet. PRs welcome.
+
+### General
+- [x] ~Tested against AMP Optimizer’s ServerSideRendering spec~
+- [ ] Automatic runtime version management
+
+### Dynamic attributes
+- [x] ~Support `sizes`, `media`, and `heights` via CSS injection~
+- [x] ~Group CSS injections for `media` attributes by shared media queries to reduce necessary bytes~
+- [ ] Support percent values in `heights`
+- [ ] Warn or fail if CSS injection puts the `amp-custom` element over the byte limit
+
+### Hero Images
+- [x] ~Inject `img` tag for `amp-img`s with the `data-hero` attribute~
+- [ ] Enforce 2-image limit on `data-hero`
+- [ ] Autodetect hero images
+- [ ] Support hero image functionality for `amp-iframe`, `amp-video`, and `amp-video-iframe`
+
+### Performance
+
+The Python AMP Renderer does not insert `preload` links into the `head` of the DOM object for hero images; This can be done by hand for more control over the critical path.
+
+<!--
+
+Since AMPRenderer adds the `amp-runtime` styles to the document, you can also use the [AMP Module Build](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites#amp-module-build-(coming-soon)) by hand. To take advantage of this, rewrite the import scripts such that imports like this:
+
+ <script async src="https://cdn.ampproject.org/v0.js"></script>
+
+...become 2-part imports based on [Javascript Modules](https://v8.dev/features/modules#browser), like this:
+
+ <script type="module" async src="https://cdn.ampproject.org/v0.mjs"></script>
+ <script nomodule async src="https://cdn.ampproject.org/v0.js"></script>
+
+-->
+
+
+
+
+%package help
+Summary: Development documents and examples for amp-renderer
+Provides: python3-amp-renderer-doc
+%description help
+# AMP Renderer
+
+![Python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue) [![Build Status](https://travis-ci.com/chasefinch/amp-renderer.svg?branch=main)](https://travis-ci.com/chasefinch/amp-renderer) ![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen)
+
+Unofficial Python port of [server-side rendering](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites) from [AMP Optimizer](https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer). Supports Python 3.6 and above.
+
+AMP Renderer performs the following optimizations:
+1. Inject the specific layout markup into each AMP element
+2. Insert the AMP runtime styles into the document
+3. Remove the AMP boilerplate styles, if possible
+4. Mark the document as “transformed” with the appropriate tags on the `html` element
+5. Insert `img` tags for images with the data-hero attribute
+
+It also makes these formatting updates:
+1. Remove empty `class` and `style` tags for AMP HTML elements
+2. Convert tag names and attribute names to lowercase
+3. Convert numerical attribute values to strings
+4. Use double quotes ("") for attributes, and escape double quotes inside attribute values
+5. Remove whitespace between html attributes
+6. If desired, removes comments (disabled by default)
+7. If desired, trims whitespace around HTML attribute values (disabled by default, and not always a good idea)
+
+AMPRenderer can be used on a block of arbitrary HTML, but when used on a full document, it will insert the AMP runtime styles and, if possible, remove the AMP boilerplate styles.
+
+Boilerplate styles can be removed except in these cases:
+- An AMP element uses an unsupported value for the `layout` attribute
+- `amp-audio` is used
+- There is at least one `amp-experiment` active
+- Transformation fails for one or more elements due to an invalid attribute value for `media`, `sizes`, or `heights`
+- Any render-delaying extension is used. Currently this means:
+ - `amp-dynamic-css-classes`
+ - `amp-story`
+
+If boilerplate styles can’t be removed, the attribute `no_boilerplate` will be set to `True` after calling `render`; otherwise it will be `False`. Until `render` runs, the `no_boilerplate` attribute isn’t set at all.
+
+## Usage
+
+If using Django, you can use the [Django AMP Renderer middleware](https://github.com/chasefinch/django-amp-renderer).
+
+Otherwise, install via PyPI:
+
+ pip install amp-renderer
+
+Minimal usage:
+
+ from amp_renderer import AMPRenderer
+
+ ...
+
+ RUNTIME_VERSION = "012345678" /* Current AMP runtime version number */
+ RUNTIME_STYLES = "..." /* Current contents of https://cdn.ampproject.org/v0.css */
+
+ renderer = AMPRenderer(
+ runtime_version=RUNTIME_VERSION,
+ runtime_styles=RUNTIME_STYLES)
+
+ original_html = """
+ <!doctype html>
+ <html ⚡>
+ ...
+ </html>
+ """
+
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+Remove comments and/or trim attributes:
+
+ renderer.should_strip_comments = True
+ renderer.should_trim_attributes = True
+ result = renderer.render(original_html)
+
+ print(result)
+
+
+The AMPRenderer class inherits from [HTMLParser](https://docs.python.org/3/library/html.parser.html), and can be similarly extended.
+
+## Testing, etc.
+
+Install requrements:
+
+ make install
+
+Sort imports (Requires Python >= 3.8):
+
+ make format
+
+Lint (Requires Python >= 3.8):
+
+ make lint
+
+Test:
+
+ make test
+
+## Discussion
+
+There are still some aspects of the official AMP Optimizer implementation that haven’t been addressed yet. PRs welcome.
+
+### General
+- [x] ~Tested against AMP Optimizer’s ServerSideRendering spec~
+- [ ] Automatic runtime version management
+
+### Dynamic attributes
+- [x] ~Support `sizes`, `media`, and `heights` via CSS injection~
+- [x] ~Group CSS injections for `media` attributes by shared media queries to reduce necessary bytes~
+- [ ] Support percent values in `heights`
+- [ ] Warn or fail if CSS injection puts the `amp-custom` element over the byte limit
+
+### Hero Images
+- [x] ~Inject `img` tag for `amp-img`s with the `data-hero` attribute~
+- [ ] Enforce 2-image limit on `data-hero`
+- [ ] Autodetect hero images
+- [ ] Support hero image functionality for `amp-iframe`, `amp-video`, and `amp-video-iframe`
+
+### Performance
+
+The Python AMP Renderer does not insert `preload` links into the `head` of the DOM object for hero images; This can be done by hand for more control over the critical path.
+
+<!--
+
+Since AMPRenderer adds the `amp-runtime` styles to the document, you can also use the [AMP Module Build](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/amp-optimizer-guide/explainer/?format=websites#amp-module-build-(coming-soon)) by hand. To take advantage of this, rewrite the import scripts such that imports like this:
+
+ <script async src="https://cdn.ampproject.org/v0.js"></script>
+
+...become 2-part imports based on [Javascript Modules](https://v8.dev/features/modules#browser), like this:
+
+ <script type="module" async src="https://cdn.ampproject.org/v0.mjs"></script>
+ <script nomodule async src="https://cdn.ampproject.org/v0.js"></script>
+
+-->
+
+
+
+
+%prep
+%autosetup -n amp-renderer-2.0.1
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-amp-renderer -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..671d8c5
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+b327aff4b2c390a11f8624d4ac11ed37 amp-renderer-2.0.1.tar.gz