return of the datafiles and a lot of code reformats!

This commit is contained in:
elburg 2023-03-14 15:01:21 -07:00
parent 0ecd2159dd
commit 5cbeb949ea
Signed by: elburg
SSH key fingerprint: SHA256:rSSayCr1za9SXPz4fKkUtsxSl1yVSk5XVUKfvuxe8o0
8 changed files with 120 additions and 91 deletions

View file

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
# TODO: clean this up
# TODO: load datafiles. if not found, either fail or install files (maybe)?
from .output.owoOutputClass import owoOutputClass
from . import datafiles
from . import config, parseargs
import logging
import sys
@ -19,13 +20,13 @@ DEBUG = True
def main() -> owoOutputClass:
# PART 1: init
try:
out = owoOutputClass()
out = owoOutputClass() # Prepare output object
args = parseargs.parse()
except Exception as exc:
import traceback
traceback.print_exc(exc, file=sys.stderr)
sys.exit(1)
else:
pass
# PART 2: load config/data files
try:
# PART 2: load config/data files

View file

@ -8,6 +8,7 @@ if __package__ is None and not hasattr(sys, "frozen"):
import owo
if __name__ == "__main__":
output=owo.main()
if output == None:
print("an error might have occured...",file=sys.stderr)

65
owo/config.py Normal file
View file

@ -0,0 +1,65 @@
from pathlib import Path
from yaml import load
import os
import re
global _config
_config = {}
_files = []
_configloaded = False
_LOCATIONS = {
'_YAMLCONFPATH': {
'_DIR': [
"{}/owo/".format(os.environ["XDG_CONFIG_HOME"]) if "XDG_CONFIG_HOME" in os.environ else str(Path.home())+"/.config/owo/",
"{}/".format(os.environ["XDG_CONFIG_HOME"]) if "XDG_CONFIG_HOME" in os.environ else str(Path.home())+"/.config/",
str(Path('~').resolve()),
str(Path().resolve())
],
'_FNAME_RE':
r"([ou^>]w[ou^<]|config)\.(ya?ml|c(on)?fi?g?)$"
}
}
def _mDC_listMatches(inp: str) -> list:
"\n".join(os.listdir(inp))
return re.findall(
_LOCATIONS['_YAMLCONFPATH']['_FNAME_RE'],
inp
)
def _makeDefaultConfs() -> list:
locates = []
for x in _LOCATIONS['_YAMLCONFPATH']['_DIR']:
locates += _mDC_listMatches(x)
return locates
def _updateConf(toAdd: dict):
_config.update(toAdd)
def _loadConfigFile(path: str):
try:
file = Path(path)
if file.exists() and not file.is_dir():
conf = load(file.read_text())
except Exception as exc:
raise exc
else:
_updateConf(conf)
if file not in _files:
_files.push(str(file))
def initConfig(path: str = None) -> bool:
if _configloaded:
return True # If config already loaded, do not reload.
else:
_toLookIn = _makeDefaultConfs() + path
for loc in _toLookIn:
_loadConfigFile(loc)

View file

@ -1,71 +0,0 @@
from pathlib import Path
from sys import platform
from yaml import load, dump
import os
import sys
import re
import collections.abc
_config={}
_files=[]
_configloaded = False
_LOCATIONS = {
'_YAMLCONFPATH':{
'_DIR':[
"{}/owo/".format(os.environ["XDG_CONFIG_HOME"]) if "XDG_CONFIG_HOME" in os.environ else str(Path.home())+"/.config/owo/",
"{}/".format(os.environ["XDG_CONFIG_HOME"]) if "XDG_CONFIG_HOME" in os.environ else str(Path.home())+"/.config/",
str(Path('~').resolve()),
str(Path().resolve())
],
'_FNAME_RE':
r"([ou^>]w[ou^<]|config)\.(ya?ml|c(on)?fi?g?)$"
}
}
def _mDC_listMatches(inp: str) -> list:
"\n".join(os.listdir(inp))
return re.findall(
_LOCATIONS['_YAMLCONFPATH']['_FNAME_RE'],
inp
)
def _makeDefaultConfs() -> list:
locates=[]
for x in _LOCATIONS['_YAMLCONFPATH']['_DIR']:
locates+=_mDC_listMatches(x)
return locates
def _updateConf(toAdd: dict):
_config.update(toAdd)
def _loadConfigFile(path: str):
try:
file = Path(path)
if file.exists() and not file.is_dir():
try:
conf = yaml.load(file.read_text())
except Exception as exc:
raise exc
else:
if not _config:
_config = conf
else:
_updateConf(conf)
if file not in _files:
_files+str(file)
except Exception as exc:
print(exc)
import traceback
traceback.print_exc(file=sys.stderr)
def initConfig(path: str = None) -> bool:
if _configloaded:
return True# If config already loaded, do not reload.
else:
_toLookIn=_makeDefaultConfs()+path
for loc in _toLookIn:
_loadConfigFile(loc)

View file

@ -17,16 +17,13 @@ keywords = [
"fetch",
"sqlite3"
]
requires-python = ">=3.7"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"Development Status :: 1 - Planning",
"Natural Language :: English",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
@ -40,8 +37,16 @@ classifiers = [
"Topic :: System :: Networking",
"Topic :: Utilities"
]
dependencies = [
"PyYAML"
]
[project.urls]
"Homepage" = "https://basedwa.re/elburg/owo"
"Repository" = "https://basedwa.re/elburg/owo.git"
"Bug Tracker" = "https://basedwa.re/elburg/owo/issues"
"Bug Tracker" = "https://basedwa.re/elburg/owo/issues"i
[project.optional-dependencies]
ALL = [ # ONLY FOR SERVERS OR BIG COMPUTERS
"yt-dlp"
]

12
res/locale/en_US.yaml Normal file
View file

@ -0,0 +1,12 @@
_meta:
names:
lang: "English"
region: "United States"
data:
types:
audio:
codecs:
pcm_alaw: "A-law / G.711 A-law PCM"
pcm_s16le: "Little Endian Signed 16-bit PCM"
pcm_u16le: "Little Endian Unsigned 16-bit PCM"
pcm_s16be: "Big Endian Signed 16-bit PCM"

16
setup.py Normal file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env python3
from setuptools import setup
setup(
name = 'owo',
version = '0.0.0-alpha0',
description = 'tool to get information on just about everything',
author = 'arris kathery',
python_requires = '>=3.10',
packages = ['owo'],
package_dir = {'owo': 'owo'},
package_data = {'owo': [
'res/locale/*.yaml'
]}
)