freemt commited on
Commit
231976d
·
1 Parent(s): be292ba

first commit

Browse files
.flake8 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [flake8]
2
+ ignore =
3
+ D203,
4
+ # line too long
5
+ E501
6
+ per-file-ignores =
7
+ # imported but unused
8
+ # __init__.py: F401
9
+ test_*.py: F401
10
+ exclude =
11
+ .git,
12
+ __pycache__,
13
+ docs/source/conf.py,
14
+ old,
15
+ build,
16
+ dist,
17
+ .venv
18
+ pad*.py
19
+ max-complexity = 25
.github/workflows/codeql-analysis.yml- ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ master ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ master ]
20
+ schedule:
21
+ - cron: '16 15 * * 2'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+
28
+ strategy:
29
+ fail-fast: false
30
+ matrix:
31
+ language: [ 'python' ]
32
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
33
+ # Learn more:
34
+ # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
35
+
36
+ steps:
37
+ - name: Checkout repository
38
+ uses: actions/checkout@v2
39
+
40
+ # Initializes the CodeQL tools for scanning.
41
+ - name: Initialize CodeQL
42
+ uses: github/codeql-action/init@v1
43
+ with:
44
+ languages: ${{ matrix.language }}
45
+ # If you wish to specify custom queries, you can do so here or in a config file.
46
+ # By default, queries listed here will override any specified in a config file.
47
+ # Prefix the list here with "+" to use these queries and those in the config file.
48
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
49
+
50
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
51
+ # If this step fails, then you should remove it and run the build manually (see below)
52
+ - name: Autobuild
53
+ uses: github/codeql-action/autobuild@v1
54
+
55
+ # ℹ️ Command-line programs to run using the OS shell.
56
+ # 📚 https://git.io/JvXDl
57
+
58
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
59
+ # and modify them (or add more) to build your code if your project
60
+ # uses a compiled language
61
+
62
+ #- run: |
63
+ # make bootstrap
64
+ # make release
65
+
66
+ - name: Perform CodeQL Analysis
67
+ uses: github/codeql-action/analyze@v1
.github/workflows/routine-tests.yml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: pytest
2
+
3
+ on:
4
+ push:
5
+
6
+ jobs:
7
+ flake8-pytest:
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ python-version: [3.8]
12
+ poetry-version: [1.1.2]
13
+ os: [ubuntu-18.04, macos-latest, windows-latest]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - uses: actions/setup-python@v2
18
+ with:
19
+ python-version: ${{ matrix.python-version }}
20
+ - uses: abatilo/[email protected]
21
+ with:
22
+ poetry-version: ${{ matrix.poetry-version }}
23
+ - name: Install packages
24
+ run: poetry install # --no-dev
25
+ - name: Run flake8
26
+ run: |
27
+ poetry run flake8 --exit-zero
28
+ # poetry run pytest
29
+ - name: Run pytest
30
+ run: poetry run pytest tests
.gitignore ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98
+ __pypackages__/
99
+
100
+ # Celery stuff
101
+ celerybeat-schedule
102
+ celerybeat.pid
103
+
104
+ # SageMath parsed files
105
+ *.sage.py
106
+
107
+ # Environments
108
+ .env
109
+ .venv
110
+ env/
111
+ venv/
112
+ ENV/
113
+ env.bak/
114
+ venv.bak/
115
+
116
+ # Spyder project settings
117
+ .spyderproject
118
+ .spyproject
119
+
120
+ # Rope project settings
121
+ .ropeproject
122
+
123
+ # mkdocs documentation
124
+ /site
125
+
126
+ # mypy
127
+ .mypy_cache/
128
+ .dmypy.json
129
+ dmypy.json
130
+
131
+ # Pyre type checker
132
+ .pyre/
133
+
134
+ # pytype static type analyzer
135
+ .pytype/
136
+
137
+ # Cython debug symbols
138
+ cython_debug/
139
+ *.bat
140
+ *.swp
141
+ links/
142
+ # .gitignore
143
+ node_modules
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2020 ffreemt
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README1.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # litbee
2
+ [![pytest](https://github.com/ffreemt/litbee/actions/workflows/routine-tests.yml/badge.svg)](https://github.com/ffreemt/litbee/actions)[![python](https://img.shields.io/static/v1?label=python+&message=3.8%2B&color=blue)](https://www.python.org/downloads/)[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)[![PyPI version](https://badge.fury.io/py/litbee.svg)](https://badge.fury.io/py/litbee)
3
+
4
+ litbee descr
5
+
6
+ ## Install it
7
+
8
+ ```shell
9
+ pip install git+https://github.com/ffreemt/litbee
10
+ # poetry add git+https://github.com/ffreemt/litbee
11
+ # git clone https://github.com/ffreemt/litbee && cd litbee
12
+ ```
13
+
14
+ ## Use it
15
+ ```python
16
+ from litbee import litbee
17
+
18
+ ```
app.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from install import install
3
+
4
+ install("logzero")
5
+ from logzero import logzero
6
+
7
+ logger.info("streamlit version: %s", st.__version__)
8
+
9
+ x = st.slider('Select a value')
10
+ st.write(x, 'squared is', x * x)
11
+ st.write(" streamlit version", st.__version__)
litbee/__init__.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ """Init."""
2
+ __version__ = "0.1.0"
3
+ from .litbee import litbee
4
+
5
+ __all__ = ("litbee",)
litbee/__main__.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Prep __main__.py."""
2
+ # pylint: disable=invalid-name
3
+ from pathlib import Path
4
+ from typing import Optional
5
+
6
+ import logzero
7
+ import typer
8
+ from logzero import logger
9
+ from set_loglevel import set_loglevel
10
+
11
+ from litbee import __version__, litbee
12
+
13
+ logzero.loglevel(set_loglevel())
14
+
15
+ app = typer.Typer(
16
+ name="litbee",
17
+ add_completion=False,
18
+ help="litbee help",
19
+ )
20
+
21
+
22
+ def _version_callback(value: bool) -> None:
23
+ if value:
24
+ typer.echo(f"{app.info.name} v.{__version__} -- ...")
25
+ raise typer.Exit()
26
+
27
+
28
+ @app.command()
29
+ def main(
30
+ version: Optional[bool] = typer.Option( # pylint: disable=(unused-argument
31
+ None,
32
+ "--version",
33
+ "-v",
34
+ "-V",
35
+ help="Show version info and exit.",
36
+ callback=_version_callback,
37
+ is_eager=True,
38
+ ),
39
+ ):
40
+ """Define."""
41
+ ...
42
+
43
+
44
+ if __name__ == "__main__":
45
+ app()
litbee/litbee.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ """Define litbee."""
2
+ from logzero import logger
3
+
4
+
5
+ def litbee():
6
+ """Define litbee."""
7
+ logger.debug(" entry ")
nodemon.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "restartable": "rs",
3
+ "ignore": [
4
+ ".venv",
5
+ ".git",
6
+ "node_modules/**/node_modules"
7
+ ],
8
+ "verbose": true,
9
+ "execMap": {
10
+ "js": "node --harmony"
11
+ },
12
+ "watch": [
13
+ "tests",
14
+ "test/fixtures/",
15
+ "test/samples/"
16
+ ],
17
+ "env": {
18
+ "NODE_ENV": "development"
19
+ },
20
+ "ext": "js json py"
21
+ }
package.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dependencies": {
3
+ "npm-run-all": "^4.1.5"
4
+ },
5
+ "scripts": {
6
+ "start": "pyright && pytest && yarn style",
7
+ "test": "nodemon -w tests -w litbee -x pytest tests",
8
+ "pyright": "nodemon -w litbee -w .venv -e .py -x pyright litbee tests",
9
+ "pytest": "nodemon -w tests -w litbee -e .py -x pytest tests litbee",
10
+ "style": "nodemon -w litbee -w tests -x \"black tests litbee && python -m flake8\"",
11
+ "docstyle": "nodemon -w litbee -w tests -x pydocstyle --convention=google tests litbee",
12
+ "pylint": "nodemon -w litbee -e .py -x pylint litbee",
13
+ "test:litbee": "nodemon -w tests -e .py -x pytest -k litbee tests",
14
+ "publish": "poetry build && poetry publish",
15
+ "black": "black tests litbee",
16
+ "flake8": "flake8 tests litbee",
17
+ "pflake8": "pflake8 tests litbee",
18
+ "pep257": "pep257 tests litbee",
19
+ "final": "run-s docstyle black flake8 pytest"
20
+ }
21
+ }
poetry.lock ADDED
@@ -0,0 +1,389 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [[package]]
2
+ name = "asttokens"
3
+ version = "2.0.5"
4
+ description = "Annotate AST trees with source code positions"
5
+ category = "main"
6
+ optional = false
7
+ python-versions = "*"
8
+
9
+ [package.dependencies]
10
+ six = "*"
11
+
12
+ [package.extras]
13
+ test = ["astroid", "pytest"]
14
+
15
+ [[package]]
16
+ name = "atomicwrites"
17
+ version = "1.4.0"
18
+ description = "Atomic file writes."
19
+ category = "dev"
20
+ optional = false
21
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
22
+
23
+ [[package]]
24
+ name = "attrs"
25
+ version = "21.4.0"
26
+ description = "Classes Without Boilerplate"
27
+ category = "dev"
28
+ optional = false
29
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
30
+
31
+ [package.extras]
32
+ dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
33
+ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
34
+ tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
35
+ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
36
+
37
+ [[package]]
38
+ name = "colorama"
39
+ version = "0.4.4"
40
+ description = "Cross-platform colored terminal text."
41
+ category = "main"
42
+ optional = false
43
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
44
+
45
+ [[package]]
46
+ name = "executing"
47
+ version = "0.8.3"
48
+ description = "Get the currently executing AST node of a frame, and other information"
49
+ category = "main"
50
+ optional = false
51
+ python-versions = "*"
52
+
53
+ [[package]]
54
+ name = "flake8"
55
+ version = "3.9.2"
56
+ description = "the modular source code checker: pep8 pyflakes and co"
57
+ category = "dev"
58
+ optional = false
59
+ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
60
+
61
+ [package.dependencies]
62
+ mccabe = ">=0.6.0,<0.7.0"
63
+ pycodestyle = ">=2.7.0,<2.8.0"
64
+ pyflakes = ">=2.3.0,<2.4.0"
65
+
66
+ [[package]]
67
+ name = "icecream"
68
+ version = "2.1.2"
69
+ description = "Never use print() to debug again; inspect variables, expressions, and program execution with a single, simple function call."
70
+ category = "main"
71
+ optional = false
72
+ python-versions = "*"
73
+
74
+ [package.dependencies]
75
+ asttokens = ">=2.0.1"
76
+ colorama = ">=0.3.9"
77
+ executing = ">=0.3.1"
78
+ pygments = ">=2.2.0"
79
+
80
+ [[package]]
81
+ name = "iniconfig"
82
+ version = "1.1.1"
83
+ description = "iniconfig: brain-dead simple config-ini parsing"
84
+ category = "dev"
85
+ optional = false
86
+ python-versions = "*"
87
+
88
+ [[package]]
89
+ name = "install"
90
+ version = "1.3.5"
91
+ description = "Install packages from within code"
92
+ category = "main"
93
+ optional = false
94
+ python-versions = ">=2.7, >=3.5"
95
+
96
+ [[package]]
97
+ name = "logzero"
98
+ version = "1.7.0"
99
+ description = "Robust and effective logging for Python 2 and 3"
100
+ category = "main"
101
+ optional = false
102
+ python-versions = "*"
103
+
104
+ [package.dependencies]
105
+ colorama = {version = "*", markers = "sys_platform == \"win32\""}
106
+
107
+ [[package]]
108
+ name = "mccabe"
109
+ version = "0.6.1"
110
+ description = "McCabe checker, plugin for flake8"
111
+ category = "dev"
112
+ optional = false
113
+ python-versions = "*"
114
+
115
+ [[package]]
116
+ name = "packaging"
117
+ version = "21.3"
118
+ description = "Core utilities for Python packages"
119
+ category = "dev"
120
+ optional = false
121
+ python-versions = ">=3.6"
122
+
123
+ [package.dependencies]
124
+ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
125
+
126
+ [[package]]
127
+ name = "pastel"
128
+ version = "0.2.1"
129
+ description = "Bring colors to your terminal."
130
+ category = "dev"
131
+ optional = false
132
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
133
+
134
+ [[package]]
135
+ name = "pluggy"
136
+ version = "1.0.0"
137
+ description = "plugin and hook calling mechanisms for python"
138
+ category = "dev"
139
+ optional = false
140
+ python-versions = ">=3.6"
141
+
142
+ [package.extras]
143
+ dev = ["pre-commit", "tox"]
144
+ testing = ["pytest", "pytest-benchmark"]
145
+
146
+ [[package]]
147
+ name = "poethepoet"
148
+ version = "0.10.0"
149
+ description = "A task runner that works well with poetry."
150
+ category = "dev"
151
+ optional = false
152
+ python-versions = ">=3.6,<4.0"
153
+
154
+ [package.dependencies]
155
+ pastel = ">=0.2.0,<0.3.0"
156
+ tomlkit = ">=0.6.0,<1.0.0"
157
+
158
+ [[package]]
159
+ name = "py"
160
+ version = "1.11.0"
161
+ description = "library with cross-python path, ini-parsing, io, code, log facilities"
162
+ category = "dev"
163
+ optional = false
164
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
165
+
166
+ [[package]]
167
+ name = "pycodestyle"
168
+ version = "2.7.0"
169
+ description = "Python style guide checker"
170
+ category = "dev"
171
+ optional = false
172
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
173
+
174
+ [[package]]
175
+ name = "pydocstyle"
176
+ version = "6.1.1"
177
+ description = "Python docstring style checker"
178
+ category = "dev"
179
+ optional = false
180
+ python-versions = ">=3.6"
181
+
182
+ [package.dependencies]
183
+ snowballstemmer = "*"
184
+
185
+ [package.extras]
186
+ toml = ["toml"]
187
+
188
+ [[package]]
189
+ name = "pyflakes"
190
+ version = "2.3.1"
191
+ description = "passive checker of Python programs"
192
+ category = "dev"
193
+ optional = false
194
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
195
+
196
+ [[package]]
197
+ name = "pygments"
198
+ version = "2.12.0"
199
+ description = "Pygments is a syntax highlighting package written in Python."
200
+ category = "main"
201
+ optional = false
202
+ python-versions = ">=3.6"
203
+
204
+ [[package]]
205
+ name = "pyparsing"
206
+ version = "3.0.9"
207
+ description = "pyparsing module - Classes and methods to define and execute parsing grammars"
208
+ category = "dev"
209
+ optional = false
210
+ python-versions = ">=3.6.8"
211
+
212
+ [package.extras]
213
+ diagrams = ["railroad-diagrams", "jinja2"]
214
+
215
+ [[package]]
216
+ name = "pytest"
217
+ version = "7.1.2"
218
+ description = "pytest: simple powerful testing with Python"
219
+ category = "dev"
220
+ optional = false
221
+ python-versions = ">=3.7"
222
+
223
+ [package.dependencies]
224
+ atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
225
+ attrs = ">=19.2.0"
226
+ colorama = {version = "*", markers = "sys_platform == \"win32\""}
227
+ iniconfig = "*"
228
+ packaging = "*"
229
+ pluggy = ">=0.12,<2.0"
230
+ py = ">=1.8.2"
231
+ tomli = ">=1.0.0"
232
+
233
+ [package.extras]
234
+ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
235
+
236
+ [[package]]
237
+ name = "six"
238
+ version = "1.16.0"
239
+ description = "Python 2 and 3 compatibility utilities"
240
+ category = "main"
241
+ optional = false
242
+ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
243
+
244
+ [[package]]
245
+ name = "snowballstemmer"
246
+ version = "2.2.0"
247
+ description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
248
+ category = "dev"
249
+ optional = false
250
+ python-versions = "*"
251
+
252
+ [[package]]
253
+ name = "toml"
254
+ version = "0.10.2"
255
+ description = "Python Library for Tom's Obvious, Minimal Language"
256
+ category = "dev"
257
+ optional = false
258
+ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
259
+
260
+ [[package]]
261
+ name = "tomli"
262
+ version = "2.0.1"
263
+ description = "A lil' TOML parser"
264
+ category = "dev"
265
+ optional = false
266
+ python-versions = ">=3.7"
267
+
268
+ [[package]]
269
+ name = "tomlkit"
270
+ version = "0.10.2"
271
+ description = "Style preserving TOML library"
272
+ category = "dev"
273
+ optional = false
274
+ python-versions = ">=3.6,<4.0"
275
+
276
+ [metadata]
277
+ lock-version = "1.1"
278
+ python-versions = "^3.8.3"
279
+ content-hash = "2bff92ca626cd69937d6bf0eb3822eef80a8ce3da0cac329e5600ed03cba2b7e"
280
+
281
+ [metadata.files]
282
+ asttokens = [
283
+ {file = "asttokens-2.0.5-py2.py3-none-any.whl", hash = "sha256:0844691e88552595a6f4a4281a9f7f79b8dd45ca4ccea82e5e05b4bbdb76705c"},
284
+ {file = "asttokens-2.0.5.tar.gz", hash = "sha256:9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"},
285
+ ]
286
+ atomicwrites = [
287
+ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
288
+ {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
289
+ ]
290
+ attrs = [
291
+ {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
292
+ {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
293
+ ]
294
+ colorama = [
295
+ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
296
+ {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
297
+ ]
298
+ executing = [
299
+ {file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"},
300
+ {file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"},
301
+ ]
302
+ flake8 = [
303
+ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"},
304
+ {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"},
305
+ ]
306
+ icecream = [
307
+ {file = "icecream-2.1.2-py2.py3-none-any.whl", hash = "sha256:04b9cea4d9931cf6960db0430ebf11fa34464ce7152e384ddf50f96d25b201b4"},
308
+ {file = "icecream-2.1.2.tar.gz", hash = "sha256:09300b2d1c678712410cbd47c95198eb1b580f66f311a554ccd6b9e758ece0ee"},
309
+ ]
310
+ iniconfig = [
311
+ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
312
+ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
313
+ ]
314
+ install = [
315
+ {file = "install-1.3.5-py3-none-any.whl", hash = "sha256:0d3fadf4aa62c95efe8d34757c8507eb46177f86c016c21c6551eafc6a53d5a9"},
316
+ {file = "install-1.3.5.tar.gz", hash = "sha256:e67c8a0be5ccf8cb4ffa17d090f3a61b6e820e6a7e21cd1d2c0f7bc59b18e647"},
317
+ ]
318
+ logzero = [
319
+ {file = "logzero-1.7.0-py2.py3-none-any.whl", hash = "sha256:23eb1f717a2736f9ab91ca0d43160fd2c996ad49ae6bad34652d47aba908769d"},
320
+ {file = "logzero-1.7.0.tar.gz", hash = "sha256:7f73ddd3ae393457236f081ffebd044a3aa2e423a47ae6ddb5179ab90d0ad082"},
321
+ ]
322
+ mccabe = [
323
+ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
324
+ {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
325
+ ]
326
+ packaging = [
327
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
328
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
329
+ ]
330
+ pastel = [
331
+ {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"},
332
+ {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"},
333
+ ]
334
+ pluggy = [
335
+ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
336
+ {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
337
+ ]
338
+ poethepoet = [
339
+ {file = "poethepoet-0.10.0-py3-none-any.whl", hash = "sha256:6fb3021603d4421c6fcc40072bbcf150a6c52ef70ff4d3be089b8b04e015ef5a"},
340
+ {file = "poethepoet-0.10.0.tar.gz", hash = "sha256:70b97cb194b978dc464c70793e85e6f746cddf82b84a38bfb135946ad71ae19c"},
341
+ ]
342
+ py = [
343
+ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
344
+ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
345
+ ]
346
+ pycodestyle = [
347
+ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"},
348
+ {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"},
349
+ ]
350
+ pydocstyle = [
351
+ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"},
352
+ {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"},
353
+ ]
354
+ pyflakes = [
355
+ {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"},
356
+ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
357
+ ]
358
+ pygments = [
359
+ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
360
+ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
361
+ ]
362
+ pyparsing = [
363
+ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
364
+ {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
365
+ ]
366
+ pytest = [
367
+ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"},
368
+ {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"},
369
+ ]
370
+ six = [
371
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
372
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
373
+ ]
374
+ snowballstemmer = [
375
+ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
376
+ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
377
+ ]
378
+ toml = [
379
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
380
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
381
+ ]
382
+ tomli = [
383
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
384
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
385
+ ]
386
+ tomlkit = [
387
+ {file = "tomlkit-0.10.2-py3-none-any.whl", hash = "sha256:905cf92c2111ef80d355708f47ac24ad1b6fc2adc5107455940088c9bbecaedb"},
388
+ {file = "tomlkit-0.10.2.tar.gz", hash = "sha256:30d54c0b914e595f3d10a87888599eab5321a2a69abc773bbefff51599b72db6"},
389
+ ]
poetry.toml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ [virtualenvs]
2
+ create = true
3
+ in-project = true
pyproject.toml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [tool.poetry]
2
+ name = "litbee"
3
+ version = "0.1.0"
4
+ description = "align texts via streamlit "
5
+ authors = ["ffreemt"]
6
+ license = "MIT"
7
+ readme = "README.md"
8
+ repository = "https://github.com/ffreemt/litbee"
9
+
10
+ [tool.poetry.dependencies]
11
+ python = "^3.8.3"
12
+ logzero = "^1.7.0"
13
+ icecream = "^2.1.1"
14
+ install = "^1.3.5"
15
+
16
+ [tool.poe.executor]
17
+ type = "poetry"
18
+
19
+ [tool.poe.tasks]
20
+ memo = "echo poe test or poetry run poe test"
21
+ test = "pytest tests"
22
+ build = "poetry build"
23
+ _publish = "poetry publish"
24
+ release = ["test", "build", "_publish"]
25
+ lint = { cmd = "pylint litbee" }
26
+ format = "black tests litbee"
27
+ docstyle = "pydocstyle --convention=google tests litbee"
28
+ tunnel = {cmd = "ssh -CN ip_or_hostname_defined_in_hosts -L 9091:127.0.0.1:9091"}
29
+
30
+ [tool.poetry.dev-dependencies]
31
+ pytest = "^7.1"
32
+ flake8 = "^3.9.2"
33
+ pydocstyle = "^6.1.1"
34
+ toml = "^0.10.2"
35
+ # tbump = "^6.3.2"
36
+ poethepoet = "^0.10.0"
37
+
38
+ [tool.poetry.scripts]
39
+ "litbee" = "litbee.__main__:app"
40
+
41
+ [build-system]
42
+ requires = ["poetry-core>=1.0.0"]
43
+ build-backend = "poetry.core.masonry.api"
44
+
45
+ [tool.pytest.ini_options]
46
+ minversion = "6.0"
47
+ addopts = "-ra -q --doctest-modules"
48
+ log_cli = true
49
+ testpaths = [
50
+ "tests",
51
+ # "integration",
52
+ ]
53
+
54
+ [tool.black]
55
+ skip-string-normalization = 0
56
+
57
+ [tool.isort]
58
+ profile = "black"
59
+ multi_line_output = 3
pyrightconfig.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "include": ["tests", "litbee"],
3
+ "venvPath": ".venv",
4
+ "reportTypeshedErrors": false,
5
+ "reportMissingImports": true,
6
+ "reportMissingTypeStubs": false,
7
+ "pythonVersion": "3.7",
8
+ "ignore": []
9
+ }
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ asttokens==2.0.5
2
+ colorama==0.4.4; python_version >= "2.7" and python_full_version < "3.0.0" and sys_platform == "win32" or python_full_version >= "3.5.0" and sys_platform == "win32"
3
+ executing==0.8.3
4
+ icecream==2.1.2
5
+ install==1.3.5; python_version >= "3.5"
6
+ logzero==1.7.0
7
+ pygments==2.12.0; python_version >= "3.6"
8
+ six==1.16.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0"
tests/__init__.py ADDED
@@ -0,0 +1 @@
 
 
1
+ """Init."""
tests/test_litbee.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Test litbee."""
2
+ # pylint: disable=broad-except
3
+ from litbee import __version__
4
+ from litbee import litbee
5
+
6
+
7
+ def test_version():
8
+ """Test version."""
9
+ assert __version__[:3] == "0.1"
10
+
11
+
12
+ def test_sanity():
13
+ """Check sanity."""
14
+ try:
15
+ assert not litbee()
16
+ except Exception:
17
+ assert True