38 lines
1019 B
Python
38 lines
1019 B
Python
"""Scrape versions of conda packages."""
|
|
|
|
from collections import namedtuple
|
|
import subprocess
|
|
|
|
|
|
try:
|
|
import pandas as pd
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
PackageInfo = namedtuple(
|
|
'PackageInfo', ('Name', 'Version', 'Build', 'Channel'))
|
|
|
|
|
|
def scrape_data(as_dataframe=False, include=None):
|
|
"""Return versions of conda packages in base environment."""
|
|
cmd = """
|
|
. ~/conda/etc/profile.d/mamba.sh;
|
|
micromamba activate;
|
|
micromamba list;
|
|
"""
|
|
proc = subprocess.run(cmd, shell=True, check=True, capture_output=True)
|
|
versions = dict()
|
|
for line in proc.stdout.splitlines()[3:]:
|
|
items = line.decode().strip().split()
|
|
if len(items) == 3:
|
|
# sometimes channel isn't listed :/
|
|
items.append("")
|
|
if include is None or items[0] in include:
|
|
versions[items[0]] = PackageInfo(*items)
|
|
if as_dataframe:
|
|
versions = pd.DataFrame.from_records(
|
|
list(versions.values()),
|
|
columns=PackageInfo._fields)
|
|
return versions
|