Excerpt Lines from Files
Introduction
Ever read or wrote source files containing sectioning comments? Especially in scientific and/or data analysis scripts I see a lot like
### Collect Data
or
###
### Remove Outliers
###
or even
### 2.1 Descriptive Statistics
(RStudio, an IDE for the programming language R has even come up with their own code sectioning and folding feature that requires comments like
# Hypothesis Testing ----
)
If these comments are markdown style section comments, we can excerpt them and set a table of contents.
A First Example
Suppose you have the following code:
#!/usr/bin/env python3
# #% A Tutorial Introduction
# ##% Getting Started
# no need to import anything
print('hello, world')
# ###% The First Python Function
def main():
print('hello, world')
main()
# ##% Variables and Arithmetic Expressions
print('some code')
# a comment
print('more code')
We can excerpt the comments marked by ‘%’:
# A Tutorial Introduction
## Getting Started
### The First Python Function
## Variables and Arithmetic Expressions
A Bit More Elaborated
Suppose you have a file ‘tests/files/some_file.txt’ reading:
#######% % All About Me
#######% % Me
####### The above defines a pandoc markdown header.
####### This is more text that will not be extracted.
#######% **This** is an example of a markdown paragraph: markdown
#######% recognizes only six levels of heading, so we use seven or
#######% more levels to mark "normal" text.
#######% Here you can use the full markdown
#######% [syntax](http://daringfireball.net/projects/markdown/syntax).
#######% *Note* the trailing line: markdown needs an empty line to end
#######% a paragraph.
#######%
#% A section
##% A subsection
### Not a subsubsection but a plain comment.
############% Another markdown paragraph.
############%
####### More text that will not be extracted.
Then excerpting the marked comments via
import excerpts
file_name = 'tests/files/some_file.txt'
with open(file_name) as infile:
lines = infile.readlines()
excerpted = excerpts.excerpt(lines = lines, comment_character="#",
magic_character="%")
print (''.join(str(p) for p in excerpted))
gives
% All About Me
% Me
**This** is an example of a markdown paragraph: markdown
recognizes only six levels of heading, so we use seven or
more levels to mark "normal" text.
Here you can use the full markdown
[syntax](http://daringfireball.net/projects/markdown/syntax).
*Note* the trailing line: markdown needs an empty line to end
a paragraph.
# A section
## A subsection
Another markdown paragraph.
which again is valid markdown for pandoc .
Working with Files
If you want to excerpt from a file and run pandoc on the result, you can use
excerpts.excerpts(file_name = file_name, comment_character="#",
magic_character="%", output_path="output", run_pandoc=True,
pandoc_formats="html")
to generate this file.
Command Line Interface
Excerpts has a command line interface that you may call from your operating systems’ command line instead of from python3:
usage: excerpts [-h] [-O OUTPUT_PATH] [-o POSTFIX] [-e PREFIX]
[-c COMMENT_CHARACTER] [-m MAGIC_CHARACTER] [-v] [-x]
[-p]
[-n] [-l] [--no-latex] [--formats PANDOC_FORMATS]
[--no-pep8]
file
excerpt markdown-style comments from a file to markdown and
PEP8
PEP8 requires each “line of a block comment starts with a # and a single space”. excerpts takes care of this requirement by removing a single comment character that is followed by a space and a sequence of comments characters. Should you need to disable this behaviour, you can set allow_pep8 to False.
Requirements
Excerpts needs python3.
Installation
- Try
pip3 install git+git://gitlab.com/fvafrcu/excerpts –upgrade –user
Metadata
Release files for excerpts 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| excerpts-2.1.0-py3-none-any.whl | Python 3 | none | any | Details for excerpts-2.1.0-py3-none-any.whl |
Release files / excerpts-2.1.0-py3-none-any.whl
| Download URL | excerpts-2.1.0-py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d99ecaf3dc45bd394c60f6cf46f27353252b1dd8ba87ad2680aa6d89ac9f379
|
|
BLAKE2b-256 checksum How to use checksums |
86581ba1ba7b5a2679498540817539f838885a6282a3da973eb996725fd86623
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.8.1 pkginfo/1.2.1 requests/2.12.4 setuptools/40.8.0 requests-toolbelt/0.7.0 clint/0.5.1 CPython/3.5.3 Linux/4.9.0-8-amd64
|
Security for excerpts 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.