mirror of
https://github.com/daylinmorgan/viv.git
synced 2024-12-22 02:30:44 -06:00
add some usage examples for viv
This commit is contained in:
parent
97bcf2ee28
commit
5034768684
7 changed files with 162 additions and 0 deletions
28
examples/cli.py
Executable file
28
examples/cli.py
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
It can be convenient to quickly generate a cli for a short script.
|
||||
Or to add simple visualization of data using the wonderful rich library.
|
||||
"""
|
||||
|
||||
__import__("viv").activate("typer", "rich-click") # noqa
|
||||
|
||||
import typer
|
||||
|
||||
app = typer.Typer()
|
||||
|
||||
|
||||
@app.command()
|
||||
def hello(name: str):
|
||||
print(f"Hello {name}")
|
||||
|
||||
|
||||
@app.command()
|
||||
def goodbye(name: str, formal: bool = False):
|
||||
if formal:
|
||||
print(f"Goodbye Ms. {name}. Have a good day.")
|
||||
else:
|
||||
print(f"Bye {name}!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app()
|
21
examples/exe_specific.py
Normal file
21
examples/exe_specific.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
This script will generate a vivenv that is executable specific.
|
||||
This means if it is run using a different python version or executable
|
||||
it will generate a new vivenv.
|
||||
|
||||
It may be important to require a exe specificty if you are frequently running
|
||||
different version of pythons and rely on c extension modules as in numpy.
|
||||
"""
|
||||
|
||||
__import__("viv").activate("numpy", "termplotlib", track_exe=True)
|
||||
|
||||
import numpy as np
|
||||
import termplotlib as tpl
|
||||
|
||||
x = np.linspace(0, 2 * np.pi, 10)
|
||||
y = np.sin(x)
|
||||
|
||||
fig = tpl.figure()
|
||||
fig.plot(x, y, label="data", width=50, height=15)
|
||||
fig.show()
|
22
examples/frozen_import.py
Normal file
22
examples/frozen_import.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
This import statement was generated using
|
||||
`viv freeze pandas tabulate` on 2022.12.19
|
||||
|
||||
Using viv freeze ensures future runs of this
|
||||
script will use the same essential environment
|
||||
"""
|
||||
__import__("viv").activate(
|
||||
"numpy==1.24.0",
|
||||
"pandas==1.5.2",
|
||||
"python-dateutil==2.8.2",
|
||||
"pytz==2022.7",
|
||||
"six==1.16.0",
|
||||
"tabulate==0.9.0",
|
||||
) # noqa
|
||||
|
||||
import pandas as pd
|
||||
|
||||
df = pd.DataFrame({"x": range(10), "y": range(10)})
|
||||
|
||||
print(df.to_markdown())
|
17
examples/named_env.py
Normal file
17
examples/named_env.py
Normal file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
# Viv env is named
|
||||
|
||||
Meaning that it will save it within the viv cache not using a hash.
|
||||
|
||||
*This environment could then be reused by specifying the name*
|
||||
"""
|
||||
|
||||
__import__("viv").activate("rich", name="rich-env")
|
||||
|
||||
from rich.console import Console
|
||||
from rich.markdown import Markdown
|
||||
|
||||
console = Console()
|
||||
md = Markdown(__doc__)
|
||||
console.print(md)
|
50
examples/scrape.py
Executable file
50
examples/scrape.py
Executable file
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/env python3
|
||||
"""A Simple Script for Extracting Data from a Webpage
|
||||
This script allows the user to extract data from a webapge
|
||||
and then export the data to a csv file with column(s).
|
||||
modified from:
|
||||
https://medium.com/analytics-vidhya/a-super-easy-python-script-for-web-scraping-that-anybody-can-use-d3bd6ab86c89
|
||||
"""
|
||||
|
||||
__import__("viv").activate("requests", "bs4", "rich") # noqa
|
||||
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from rich import box
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
|
||||
# Put your URL here
|
||||
url = "https://www.nytimes.com/books/best-sellers/combined-print-and-e-book-nonfiction/"
|
||||
|
||||
# Fetching the html
|
||||
r = requests.get(url)
|
||||
|
||||
# Parsing the html
|
||||
parse = BeautifulSoup(r.content, "html.parser")
|
||||
|
||||
# Provide html elements' attributes to extract the data
|
||||
text1 = list(
|
||||
e.get_text().strip() for e in parse.find_all("h3", attrs={"class": "css-5pe77f"})
|
||||
)
|
||||
text2 = list(
|
||||
e.get_text().strip().replace("by ", "")
|
||||
for e in parse.find_all("p", attrs={"class": "css-hjukut"})
|
||||
)
|
||||
max_len = max((len(txt) for txt in text1))
|
||||
|
||||
print()
|
||||
table = Table(title="NY Times Best Sellers", box=box.ROUNDED, title_justify="left")
|
||||
table.add_column(
|
||||
"Title",
|
||||
justify="right",
|
||||
style="cyan",
|
||||
no_wrap=True,
|
||||
)
|
||||
table.add_column("Author", style="magenta")
|
||||
|
||||
for col1, col2 in zip(text1, text2):
|
||||
table.add_row(col1, col2)
|
||||
|
||||
console = Console()
|
||||
console.print(table)
|
20
examples/sys_path.py
Normal file
20
examples/sys_path.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Embed the viv.py on the sys.path at runtime rather than using PYTHONPATH
|
||||
"""
|
||||
|
||||
|
||||
__import__("sys").path.append(
|
||||
__import__("os").path.expanduser("~/.viv/src")
|
||||
) # noqa # isort: off
|
||||
__import__("viv").activate("pyfiglet") # noqa # isort: off
|
||||
|
||||
import sys
|
||||
|
||||
from pyfiglet import Figlet
|
||||
|
||||
f = Figlet(font="slant")
|
||||
print(f.renderText("Viv isn't venv!"))
|
||||
|
||||
print("Sys path:")
|
||||
print("\n".join(sys.path))
|
4
examples/wrong_input.py
Normal file
4
examples/wrong_input.py
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# ints are not allowed
|
||||
__import__("viv").activate(5)
|
Loading…
Reference in a new issue