Finish first version of document generation
This commit is contained in:
@@ -1,12 +1,35 @@
|
||||
import pandas as pd
|
||||
from banking_breakdown import latex_generator
|
||||
from banking_breakdown import document_builder
|
||||
import subprocess
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from banking_breakdown import types
|
||||
import numpy as np
|
||||
|
||||
|
||||
def main():
|
||||
src = latex_generator.generate_latex()
|
||||
latex_generator.build_document(src)
|
||||
# df = pd.read_csv('res/statement.csv', delimiter=';')
|
||||
# print(df['Betrag'])
|
||||
categories = ["A", "B", "C", "D", "E", "F", "G"]
|
||||
values = np.array([10, 12, 53, 12, 90, 23, 32])
|
||||
values = values / values.sum() * 100
|
||||
|
||||
total_value = np.random.normal(size=10) + 4
|
||||
net_income = np.diff(total_value)
|
||||
|
||||
category_overview_df = pd.DataFrame(
|
||||
{"category": categories, "value": values.astype('int32')})
|
||||
t = np.linspace(0, total_value.size, total_value.size)
|
||||
total_value_df = pd.DataFrame({"t": t, "value": total_value})
|
||||
t = np.linspace(0, net_income.size, net_income.size)
|
||||
net_income_df = pd.DataFrame({"t": t, "value": net_income})
|
||||
|
||||
report_data = types.ReportData(category_overview=category_overview_df,
|
||||
net_income=net_income_df,
|
||||
total_value=total_value_df)
|
||||
|
||||
document_builder.build_document(report_data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
27
banking_breakdown/document_builder.py
Normal file
27
banking_breakdown/document_builder.py
Normal file
@@ -0,0 +1,27 @@
|
||||
import subprocess
|
||||
import os
|
||||
import shutil
|
||||
from banking_breakdown import types
|
||||
|
||||
|
||||
def build_document(report_data: types.ReportData):
|
||||
# Copy files from 'res/' folder
|
||||
os.makedirs(os.path.dirname("build/report.tex"), exist_ok=True)
|
||||
shutil.copyfile("res/report.tex", "build/report.tex")
|
||||
shutil.copyfile("res/.latexmkrc", "build/.latexmkrc")
|
||||
|
||||
# Write data as csv files
|
||||
report_data.net_income.to_csv('build/net_income.csv', index=False)
|
||||
report_data.category_overview.to_csv('build/category_overview.csv',
|
||||
index=False)
|
||||
report_data.total_value.to_csv('build/total_value.csv', index=False)
|
||||
|
||||
# Build dockerfile and compile document
|
||||
subprocess.call("docker build . -f res/Dockerfile.alpine"
|
||||
" -t banking-breakdown",
|
||||
shell=True)
|
||||
subprocess.call("docker run --rm -u `id -u`:`id -g`"
|
||||
" -v $(realpath .):/project"
|
||||
" -w /project/build banking-breakdown"
|
||||
" latexmk -pdf report.tex",
|
||||
shell=True)
|
||||
@@ -1,70 +0,0 @@
|
||||
import subprocess
|
||||
import textwrap
|
||||
import os
|
||||
import shutil
|
||||
import docker
|
||||
|
||||
|
||||
def generate_latex() -> str:
|
||||
result = textwrap.dedent("""\
|
||||
\\documentclass{article}
|
||||
|
||||
% Packages necessary for common.tex
|
||||
\\usepackage{amsmath}
|
||||
\\usepackage{pgfplots}
|
||||
\\pgfplotsset{compat=newest}
|
||||
|
||||
% Other packages
|
||||
\\usepackage{float}
|
||||
\\usepackage{subcaption}
|
||||
\\usepackage[a4paper, total={6.5in, 9in}]{geometry}
|
||||
\\usetikzlibrary{positioning}
|
||||
\\usepackage{ifthen}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%% Set common options %%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\\input{../lib/latex-common/common.tex}
|
||||
\\pgfplotsset{colorscheme/rocket}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%% Actual Document %%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\\title{Banking Report}
|
||||
\\author{}
|
||||
|
||||
|
||||
\\begin{document}
|
||||
|
||||
\\maketitle
|
||||
|
||||
Test
|
||||
|
||||
|
||||
\\end{document}
|
||||
""")
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def build_document(src: str):
|
||||
os.makedirs(os.path.dirname("build/doc.tex"), exist_ok=True)
|
||||
with open("build/doc.tex", "w") as out_file:
|
||||
out_file.write(src)
|
||||
|
||||
shutil.copyfile("res/.latexmkrc", "build/.latexmkrc")
|
||||
|
||||
subprocess.call("docker build . -f res/Dockerfile.alpine"
|
||||
" -t banking-breakdown",
|
||||
shell=True)
|
||||
subprocess.call("docker run --rm -u `id -u`:`id -g`"
|
||||
" -v $(realpath .):/project"
|
||||
" -w /project/build banking-breakdown"
|
||||
" latexmk -pdf doc.tex",
|
||||
shell=True)
|
||||
9
banking_breakdown/types.py
Normal file
9
banking_breakdown/types.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from dataclasses import dataclass
|
||||
import pandas as pd
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReportData:
|
||||
category_overview: pd.DataFrame
|
||||
net_income: pd.DataFrame
|
||||
total_value: pd.DataFrame
|
||||
Reference in New Issue
Block a user