diff --git a/backend.py b/backend.py index 11e8bc7..470af40 100644 --- a/backend.py +++ b/backend.py @@ -15,10 +15,13 @@ import re import tools import fetcher from bibtexparser.bparser import BibTexParser -from config import config +from config import Config from codecs import open +config = Config() + + def getNewName(src, bibtex, tag='', override_format=None): """ Return the formatted name according to config for the given @@ -88,7 +91,8 @@ def bibtexAppend(data): with open(config.get("folder")+'index.bib', 'a', encoding='utf-8') \ as fh: fh.write(tools.parsed2Bibtex(data)+"\n") - except: + except Exception as e: + raise e tools.warning("Unable to open index file.") return False diff --git a/bmc.py b/bmc.py index 79e40b4..f65b5af 100755 --- a/bmc.py +++ b/bmc.py @@ -13,8 +13,10 @@ import tearpages import tools from bibtexparser.bparser import BibTexParser from codecs import open -from config import config +from config import Config + +config = Config() EDITOR = os.environ.get('EDITOR') if os.environ.get('EDITOR') else 'vim' diff --git a/config.py b/config.py index bcdb5cf..059545e 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,7 @@ import os import errno +import imp +import inspect import json import sys import tools @@ -34,11 +36,15 @@ def make_sure_path_exists(path): class Config(): - def __init__(self): - self.config_path = os.path.expanduser("~/.config/") + def __init__(self, base_config_path="~/.config/bmc/"): + self.config_path = os.path.expanduser(base_config_path) self.config = {} + self.config["format_custom"] = [] self.load() + def as_dict(self): + return self.config + def get(self, param): return self.config.get(param, False) @@ -73,6 +79,7 @@ class Config(): except (ValueError, IOError): tools.warning("Config file could not be read.") sys.exit(1) + self.load_masks() def save(self): try: @@ -82,4 +89,19 @@ class Config(): tools.warning("Could not write config file.") sys.exit(1) -config = Config() + def load_masks(self): + if os.path.isfile(self.config_path + "masks.py"): + try: + self.info = imp.find_module("masks", [self.config_path]) + self.masks = imp.load_module("masks", *self.info) + for mask in inspect.getmembers(self.masks, inspect.isfunction): + self.config["format_custom"].append(mask[1]) + except ImportError: + self.clean() + tools.warning("Unable to import masks config file.") + pass + finally: + try: + self.info[0].close() + except AttributeError: + pass diff --git a/fetcher.py b/fetcher.py index 4e9c08b..73a5dba 100644 --- a/fetcher.py +++ b/fetcher.py @@ -18,10 +18,13 @@ import sys import arxiv2bib as arxiv_metadata import tools from bibtexparser.bparser import BibTexParser -from config import config +from config import Config from isbntools.dev._fmt import fmtbib +config = Config() + + def download(url): """Download url tofile diff --git a/tests/test_backend.py b/tests/test_backend.py index 06478cc..530eb9b 100644 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -11,7 +11,6 @@ import unittest from backend import * from bibtexparser.bparser import BibTexParser -from config import config import os import shutil import tempfile @@ -34,7 +33,7 @@ mass density wave should occur.}, archiveprefix={arXiv}, author={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati}, eprint={1303.3130v1}, - file={/home/phyks/Papers/N_Bartolo_A_Recati-j-2013.pdf}, + file={%sN_Bartolo_A_Recati-j-2013.pdf}, link={http://arxiv.org/abs/1303.3130v1}, month={Mar}, primaryclass={cond-mat.quant-gas}, @@ -42,7 +41,7 @@ mass density wave should occur.}, title={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical Lattice}, year={2013}, -}""" +}""" % config.get("folder") self.bibtex_article = BibTexParser(self.bibtex_article_string).get_entry_dict() self.bibtex_article = self.bibtex_article[self.bibtex_article.keys()[0]] @@ -78,21 +77,21 @@ Lattice}, bibtexAppend(self.bibtex_article) with open(config.get("folder")+'index.bib', 'r') as fh: self.assertEqual(fh.read(), - '@article{1303.3130v1,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={/home/phyks/Papers/N_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n') + '@article{1303.3130v1,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={'+config.get("folder")+'N_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n') def test_bibtexEdit(self): bibtexAppend(self.bibtex_article) bibtexEdit(self.bibtex_article['id'], {'id': 'bidule'}) with open(config.get("folder")+'index.bib', 'r') as fh: self.assertEqual(fh.read(), - '@article{bidule,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={/home/phyks/Papers/N_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n') + '@article{bidule,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={'+config.get("folder")+'N_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n') def test_bibtexRewrite(self): bibtexAppend(self.bibtex_book) bibtexRewrite({0: self.bibtex_article}) with open(config.get("folder")+'index.bib', 'r') as fh: self.assertEqual(fh.read(), - '@article{1303.3130v1,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={/home/phyks/Papers/N_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n') + '@article{1303.3130v1,\n\tabstract={We study the role of the dipolar interaction, correctly accounting for the\nDipolar-Induced Resonance (DIR), in a quasi-one-dimensional system of ultracold\nbosons. We first show how the DIR affects the lowest-energy states of two\nparticles in a harmonic trap. Then, we consider a deep optical lattice loaded\nwith ultracold dipolar bosons. We describe this many-body system using an\natom-dimer extended Bose-Hubbard model. We analyze the impact of the DIR on the\nphase diagram at T=0 by exact diagonalization of a small-sized system. In\nparticular, the resonance strongly modifies the range of parameters for which a\nmass density wave should occur.},\n\tarchiveprefix={arXiv},\n\tauthor={N. Bartolo and D. J. Papoular and L. Barbiero and C. Menotti and A. Recati},\n\teprint={1303.3130v1},\n\tfile={%sN_Bartolo_A_Recati-j-2013.pdf},\n\tlink={http://arxiv.org/abs/1303.3130v1},\n\tmonth={Mar},\n\tprimaryclass={cond-mat.quant-gas},\n\ttag={},\n\ttitle={Dipolar-Induced Resonance for Ultracold Bosons in a Quasi-1D Optical\nLattice},\n\tyear={2013},\n}\n\n\n' % config.get("folder")) def test_deleteId(self): self.bibtex_article['file'] = config.get("folder")+'test.pdf'