diff --git a/.gitignore b/.gitignore
index 50eb853..616af63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
.python-version
*~
.DS_Store
-
+.eggs
*.py[cod]
diff --git a/.travis.yml b/.travis.yml
index 9e31abd..cbd0ad2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,49 +1,105 @@
# list of environments to test
matrix:
include:
+
+ # Full tests (with online API)
- os: linux
language: python
python: 2.7
+ env:
+ - TO_TEST=TEST_FULL
+ - os: linux
+ language: python
+ python: 3.7
+ dist: xenial
+ sudo: true
+ env:
+ - TO_TEST=TEST_FULL
+ - os: osx
+ language: generic
+ python: 2.7
+ env:
+ - TO_TEST=TEST_FULL
+ # before_install:
+ # - python2 --version
+ # - pip2 install -U virtualenv
+ # - virtualenv env -p python2
+ # - source env/bin/activate
+ - os: osx
+ language: generic
+ python: ">=3.6"
+ env:
+ - TO_TEST=TEST_FULL
+ before_install:
+ - brew outdated python3 || brew install python3 || brew upgrade python3
+ - python3 -m venv env
+ - source env/bin/activate
+
+ # Mock tests (with mock API)
- os: linux
language: python
python: 3.3
+ env:
+ - TO_TEST=TEST_MOCK
- os: linux
language: python
python: 3.4
+ env:
+ - TO_TEST=TEST_MOCK
- os: linux
language: python
python: 3.5
+ env:
+ - TO_TEST=TEST_MOCK
- os: linux
language: python
python: 3.6
+ env:
+ - TO_TEST=TEST_MOCK
- os: linux
language: python
+ dist: xenial
python: 3.7
+ sudo: true
+ env:
+ - TO_TEST=TEST_MOCK
+
+
+ # Install tests
+ - os: linux
+ language: python
+ python: 2.7
+ env:
+ - TO_TEST=INSTALL
+ if: type = cron
+ - os: linux
+ language: python
dist: xenial
sudo: true
+ python: 3.7
+ env:
+ - TO_TEST=INSTALL
+ if: type = cron
- os: osx
language: generic
python: 2.7
- before_install:
- - python2 --version
- - pip2 install -U virtualenv
- - virtualenv env -p python2
- - source env/bin/activate
+ env:
+ - TO_TEST=INSTALL
+ if: type = cron
- os: osx
language: generic
python: ">=3.6"
- before_install:
- - brew update
- - brew outdated python3 || brew install python3 || brew upgrade python3
- - python3 -m venv env
- - source env/bin/activate
+ env:
+ - TO_TEST=INSTALL
+ if: type = cron
-# command to install dependencies
-install:
- - python --version
- - export PUBS_TESTS_MODE=ONLINE
+ allow_failures:
+ - python: 3.3
# command to run tests
script:
- - PUBS_TESTS_MODE=MOCK python setup.py test
- - PUBS_TESTS_MODE=COLLECT python setup.py test
+ - python --version
+ - if [ "$TO_TEST" = "TEST_MOCK" ] ||
+ [ "$TO_TEST" = "TEST_FULL" ]; then PUBS_TESTS_MODE=MOCK python setup.py test; fi
+ - if [ "$TO_TEST" = "TEST_FULL" ]; then PUBS_TESTS_MODE=COLLECT python setup.py test; fi
+ - if [ "$TO_TEST" = "INSTALL" ]; then pip install -U pip && pip install pubs && pubs --help && pip uninstall -y pubs; fi
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..1a69f4c
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1 @@
+include readme.md
diff --git a/changelog.md b/changelog.md
index f3e3036..73db144 100644
--- a/changelog.md
+++ b/changelog.md
@@ -3,15 +3,29 @@
## Current master
-[Full Changelog](https://github.com/pubs/pubs/compare/v0.8.1...master)
+[Full Changelog](https://github.com/pubs/pubs/compare/v0.8.2...master)
### Implemented enhancements
-- [(#45)](https://github.com/pubs/pubs/issues/45) Doc extension visible in pubs list ([#168](https://github.com/pubs/pubs/pull/168))
+- Add `citekey` filter to `query` ([#193](https://github.com/pubs/pubs/pull/193) by [Shane Stone](https://github.com/shanewstone))
+
+
+### Fixed bugs
+
+
+## [v0.8.2](https://github.com/pubs/pubs/compare/v0.8.1...v0.8.2) (2019-01-06)
+Fixes install on python2, and adding old-style arXiv references.
### Fixed bugs
+- Fixes adding papers with slashes in their citekeys. [(#179)](https://github.com/pubs/pubs/pull/179) (thanks [Amlesh Sivanantham](https://github.com/zamlz) for reporting.)
+- Fix missing readme.md for python2 pip install. [(#174)](https://github.com/pubs/pubs/pull/174)
+
+### Implemented enhancements
+
+- [(#45)](https://github.com/pubs/pubs/issues/45) Doc extension visible in pubs list ([#168](https://github.com/pubs/pubs/pull/168))
+
## [v0.8.1](https://github.com/pubs/pubs/compare/v0.8.0...v0.8.1) (2018-08-28)
diff --git a/dev_requirements.txt b/dev_requirements.txt
index 0d91a9e..1891f81 100644
--- a/dev_requirements.txt
+++ b/dev_requirements.txt
@@ -19,6 +19,7 @@ six
# those are the additional packages required to run the tests
pyfakefs
+certifi
ddt
mock
pytest # optional (python setup.py test works without it), but possible nonetheless
diff --git a/pubs/apis.py b/pubs/apis.py
index aef5c5d..064d23a 100644
--- a/pubs/apis.py
+++ b/pubs/apis.py
@@ -15,7 +15,7 @@ class ReferenceNotFoundError(Exception):
pass
-def get_bibentry_from_api(id_str, id_type, try_doi=True, ui=None):
+def get_bibentry_from_api(id_str, id_type, try_doi=True, ui=None, raw=False):
"""Return a bibtex string from various ID methods.
This is a wrapper around functions that will return a bibtex string given
@@ -50,6 +50,9 @@ def get_bibentry_from_api(id_str, id_type, try_doi=True, ui=None):
raise ValueError('id_type must be one of `doi`, `isbn`, or `arxiv`.')
bibentry_raw = id_fns[id_type](id_str, try_doi=try_doi, ui=ui)
+ if raw:
+ return bibentry_raw
+
bibentry = endecoder.EnDecoder().decode_bibdata(bibentry_raw)
if bibentry is None:
raise ReferenceNotFoundError(
diff --git a/pubs/bibstruct.py b/pubs/bibstruct.py
index 541d4b6..a8312b0 100644
--- a/pubs/bibstruct.py
+++ b/pubs/bibstruct.py
@@ -51,11 +51,15 @@ def author_last(author_str):
return author_str.split(',')[0]
+def valid_citekey(citekey):
+ """Return if a citekey is a valid filename or not"""
+ # FIXME: a bit crude, but efficient for now (and allows unicode citekeys)
+ return not '/' in citekey
+
+
def generate_citekey(bibdata):
""" Generate a citekey from bib_data.
- :param generate: if False, return the citekey defined in the file,
- does not generate a new one.
:raise ValueError: if no author nor editor is defined.
"""
citekey, entry = get_entry(bibdata)
diff --git a/pubs/commands/add_cmd.py b/pubs/commands/add_cmd.py
index 12b87cd..1aa2ec7 100644
--- a/pubs/commands/add_cmd.py
+++ b/pubs/commands/add_cmd.py
@@ -72,6 +72,22 @@ def bibentry_from_editor(conf, ui):
return bibentry
+def bibentry_from_api(args, ui, raw=False):
+ try:
+ if args.doi is not None:
+ return apis.get_bibentry_from_api(args.doi, 'doi', ui=ui, raw=raw)
+ elif args.isbn is not None:
+ return apis.get_bibentry_from_api(args.isbn, 'isbn', ui=ui, raw=raw)
+ # TODO distinguish between cases, offer to open the error page in a webbrowser.
+ # TODO offer to confirm/change citekey
+ elif args.arxiv is not None:
+ return apis.get_bibentry_from_api(args.arxiv, 'arxiv', ui=ui, raw=raw)
+ except apis.ReferenceNotFoundError as e:
+ ui.error(str(e))
+ ui.exit(1)
+
+
+
def command(conf, args):
"""
:param bibfile: bibtex file (in .bib, .bibml or .yaml format.
@@ -92,19 +108,7 @@ def command(conf, args):
if args.doi is None and args.isbn is None and args.arxiv is None:
bibentry = bibentry_from_editor(conf, ui)
else:
- bibentry = None
- try:
- if args.doi is not None:
- bibentry = apis.get_bibentry_from_api(args.doi, 'doi', ui=ui)
- elif args.isbn is not None:
- bibentry = apis.get_bibentry_from_api(args.isbn, 'isbn', ui=ui)
- # TODO distinguish between cases, offer to open the error page in a webbrowser.
- # TODO offer to confirm/change citekey
- elif args.arxiv is not None:
- bibentry = apis.get_bibentry_from_api(args.arxiv, 'arxiv', ui=ui)
- except apis.ReferenceNotFoundError as e:
- ui.error(str(e))
- ui.exit(1)
+ bibentry = bibentry_from_api(args, ui)
else:
bibentry_raw = content.get_content(bibfile, ui=ui)
bibentry = decoder.decode_bibdata(bibentry_raw)
@@ -116,7 +120,7 @@ def command(conf, args):
citekey = args.citekey
if citekey is None:
base_key = bibstruct.extract_citekey(bibentry)
- citekey = rp.unique_citekey(base_key)
+ citekey = rp.unique_citekey(base_key, bibentry)
elif citekey in rp:
ui.error('citekey already exist {}.'.format(citekey))
ui.exit(1)
diff --git a/pubs/commands/conf_cmd.py b/pubs/commands/conf_cmd.py
index cd3e9e0..69f8677 100644
--- a/pubs/commands/conf_cmd.py
+++ b/pubs/commands/conf_cmd.py
@@ -17,9 +17,9 @@ def command(conf, args):
while True:
# get modif from user
- ui.edit_file(config.get_confpath(), temporary=False)
+ ui.edit_file(conf.filename, temporary=False)
- new_conf = config.load_conf()
+ new_conf = config.load_conf(path=conf.filename)
try:
config.check_conf(new_conf)
ui.message('The configuration file was updated.')
diff --git a/pubs/commands/import_cmd.py b/pubs/commands/import_cmd.py
index 7cbf3b6..948d10d 100644
--- a/pubs/commands/import_cmd.py
+++ b/pubs/commands/import_cmd.py
@@ -14,26 +14,28 @@ from ..content import system_path, read_text_file
from ..command_utils import add_doc_copy_arguments
-_ABORT_USE_IGNORE_MSG = "Aborting import. Use --ignore-malformed to ignore."
+_ABORT_USE_IGNORE_MSG = " Aborting import. Use --ignore-malformed to ignore."
_IGNORING_MSG = " Ignoring it."
def parser(subparsers, conf):
parser = subparsers.add_parser(
'import',
- help='import paper(s) to the repository')
+ help='import paper(s) to the repository.')
parser.add_argument(
'bibpath',
- help='path to bibtex, bibtexml or bibyaml file (or directory)')
+ help=("path to bibtex, bibtexml or bibyaml file, or a directory "
+ "containing such files; will not recurse into subdirectories."))
parser.add_argument(
'keys', nargs='*',
- help="one or several keys to import from the file")
+ help=("one or several keys to import from the file; if not provided,"
+ " all entries will be imported."))
parser.add_argument(
'-O', '--overwrite', action='store_true', default=False,
- help="Overwrite keys already in the database")
+ help="overwrite keys already in the database.")
parser.add_argument(
'-i', '--ignore-malformed', action='store_true', default=False,
- help="Ignore malformed and unreadable files and entries")
+ help="ignore malformed and unreadable files and entries.")
add_doc_copy_arguments(parser, copy=False)
return parser
@@ -52,7 +54,6 @@ def many_from_path(ui, bibpath, ignore=False):
bibpath = system_path(bibpath)
if os.path.isdir(bibpath):
- print([os.path.splitext(f)[-1][1:] for f in os.listdir(bibpath)])
all_files = [os.path.join(bibpath, f) for f in os.listdir(bibpath)
if os.path.splitext(f)[-1][1:] == 'bib']
else:
diff --git a/pubs/endecoder.py b/pubs/endecoder.py
index abac0f1..346af3a 100644
--- a/pubs/endecoder.py
+++ b/pubs/endecoder.py
@@ -113,7 +113,7 @@ class EnDecoder(object):
author for author in entry['author'])
if 'editor' in entry:
entry['editor'] = ' and '.join(
- editor['name'] for editor in entry['editor'])
+ editor for editor in entry['editor'])
if 'keyword' in entry:
entry['keyword'] = ', '.join(
keyword for keyword in entry['keyword'])
@@ -122,7 +122,7 @@ class EnDecoder(object):
def decode_bibdata(self, bibdata):
"""Decodes bibdata from string.
- If the decoding fails, returns a BibParseError.
+ If the decoding fails, returns a BibDecodingError.
"""
if len(bibdata) == 0:
error_msg = 'parsing error: the provided string has length zero.'
@@ -131,15 +131,23 @@ class EnDecoder(object):
entries = bp.bparser.BibTexParser(
bibdata, common_strings=True, customization=customizations,
homogenize_fields=True).get_entry_dict()
-
# Remove id from bibtexparser attribute which is stored as citekey
for e in entries:
entries[e].pop(BP_ID_KEY)
# Convert bibtexparser entrytype key to internal 'type'
t = entries[e].pop(BP_ENTRYTYPE_KEY)
entries[e][TYPE_KEY] = t
+ # Temporary fix to #188 (to be fully fixed when the upstream
+ # issue: sciunto-org/python-bibtexparser/#229 is fixed too)
+ if 'editor' in entries[e]:
+ entries[e]['editor'] = [
+ editor['name'] if isinstance(editor, dict) else editor
+ for editor in entries[e]['editor']]
if len(entries) > 0:
return entries
+ else:
+ raise self.BibDecodingError(('no valid entry found in the provided data: '
+ ' {}').format(bibdata), bibdata)
except (pyparsing.ParseException, pyparsing.ParseSyntaxException) as e:
error_msg = self._format_parsing_error(e)
raise self.BibDecodingError(error_msg, bibdata)
@@ -147,7 +155,6 @@ class EnDecoder(object):
error_msg = 'parsing error: undefined string in provided data: {}'.format(e)
raise self.BibDecodingError(error_msg, bibdata)
-
@classmethod
def _format_parsing_error(cls, e):
"""Transform a pyparsing exception into an error message
diff --git a/pubs/p3.py b/pubs/p3.py
index 197d26f..c78fa7e 100644
--- a/pubs/p3.py
+++ b/pubs/p3.py
@@ -87,10 +87,14 @@ else:
super(StdIO, self).__init__(*args, **kwargs)
def write(self, s):
+ super(StdIO, self).write(s)
if self.additional_out is not None:
+ try:
+ s = s.decode()
+ except AttributeError:
+ pass
self.additional_out.write(s)
- super(StdIO, self).write(s)
# Only for tests to capture std{out,err}
def _fake_stdio(additional_out=False):
diff --git a/pubs/paper.py b/pubs/paper.py
index e0c10d0..365fd2a 100644
--- a/pubs/paper.py
+++ b/pubs/paper.py
@@ -1,6 +1,8 @@
import copy
from dateutil.parser import parse as datetime_parse
+from bibtexparser.customization import convert_to_unicode
+
from . import bibstruct
from .p3 import ustr
@@ -102,6 +104,10 @@ class Paper(object):
def added(self, value):
self.metadata['added'] = value
+ def get_unicode_bibdata(self):
+ """Converts latex in bibdata fields to unicode."""
+ return convert_to_unicode(self.bibdata)
+
@staticmethod
def from_bibentry(bibentry, citekey=None, metadata=None):
bibentry_key, bibdata = bibstruct.get_entry(bibentry)
diff --git a/pubs/pretty.py b/pubs/pretty.py
index 645ef02..0c951e6 100644
--- a/pubs/pretty.py
+++ b/pubs/pretty.py
@@ -64,7 +64,7 @@ def paper_oneliner(p, citekey_only=False):
if citekey_only:
return p.citekey
else:
- bibdesc = bib_oneliner(p.bibdata)
+ bibdesc = bib_oneliner(p.get_unicode_bibdata())
doc_str = ''
if p.docpath is not None:
doc_extension = os.path.splitext(p.docpath)[1]
diff --git a/pubs/pubs_cmd.py b/pubs/pubs_cmd.py
index 740c709..6da78f2 100644
--- a/pubs/pubs_cmd.py
+++ b/pubs/pubs_cmd.py
@@ -60,7 +60,8 @@ def execute(raw_args=sys.argv):
# an update happened, reload conf.
conf = config.load_conf(path=conf_path)
except config.ConfigurationNotFound:
- if len(remaining_args) == 0 or remaining_args[0] == 'init':
+ if (len(remaining_args) == 0 or remaining_args[0] == 'init'
+ or all(arg[0] == '-' for arg in remaining_args)): # only optional arguments
conf = config.load_default_conf()
conf.filename = conf_path
else:
diff --git a/pubs/query.py b/pubs/query.py
index 9e65eb1..7bcb656 100644
--- a/pubs/query.py
+++ b/pubs/query.py
@@ -6,7 +6,8 @@ from . import bibstruct
QUERY_HELP = ('Paper query ("author:Einstein", "title:learning",'
- '"year:2000", "year:2000-2010", or "tags:math")')
+ ' "year:2000", "year:2000-2010", "citekey:Einstein_1935",'
+ ' or "tags:math")')
FIELD_ALIASES = {
@@ -15,6 +16,7 @@ FIELD_ALIASES = {
't': 'title',
'tags': 'tag',
'y': 'year',
+ 'key': 'citekey',
}
@@ -78,6 +80,12 @@ class AuthorFilter(QueryFilter):
for author in paper.bibdata['author']])
+class CitekeyFilter(QueryFilter):
+
+ def __call__(self, paper):
+ return self._is_query_in(paper.citekey)
+
+
class TagFilter(QueryFilter):
def __call__(self, paper):
@@ -137,6 +145,9 @@ def _query_block_to_filter(query_block, case_sensitive=None, strict=False):
field, value = _get_field_value(query_block)
if field == 'tag':
return TagFilter(value, case_sensitive=case_sensitive, strict=strict)
+ elif field == 'citekey':
+ return CitekeyFilter(value, case_sensitive=case_sensitive,
+ strict=strict)
elif field == 'author':
return AuthorFilter(value, case_sensitive=case_sensitive,
strict=strict)
diff --git a/pubs/version.py b/pubs/version.py
index ef72cc0..2b0631f 100644
--- a/pubs/version.py
+++ b/pubs/version.py
@@ -1 +1 @@
-__version__ = '0.8.1'
+__version__ = '0.8.2-r1'
diff --git a/readme.md b/readme.md
index 17635fb..bb6a852 100644
--- a/readme.md
+++ b/readme.md
@@ -16,20 +16,23 @@ Pubs is built with the following principles in mind:
## Installation
You can install the latest stable version of `pubs` through Pypi, with:
-
- pip install pubs
+ ```
+ pip install pubs
+ ```
Alternatively, you can:
- install the latest development version with pip:
-
+ ```
pip install --upgrade git+https://github.com/pubs/pubs
+ ```
- clone the repository and install it manually:
-
+ ```
git clone https://github.com/pubs/pubs
cd pubs
python setup.py install [--user]
+ ```
Arch Linux users can also use the [pubs-git](https://aur.archlinux.org/packages/pubs-git/) AUR package.
@@ -37,28 +40,34 @@ Arch Linux users can also use the [pubs-git](https://aur.archlinux.org/packages/
## Getting started
Create your library (by default, goes to `~/.pubs/`).
-
- pubs init
+ ```
+ pubs init
+ ```
Import existing data from bibtex (pubs will try to automatically copy documents defined as 'file' in bibtex):
-
- pubs import path/to/collection.bib
+ ```
+ pubs import path/to/collection.bib
+ ```
or for a .bib file containing a single reference:
-
- pubs add reference.bib -d article.pdf
+ ```
+ pubs add reference.bib -d article.pdf
+ ```
pubs can also automatically retrieve the bibtex from a doi:
-
- pubs add -D 10.1007/s00422-012-0514-6 -d article.pdf
+ ```
+ pubs add -D 10.1007/s00422-012-0514-6 -d article.pdf
+ ```
or an ISBN (dashes are ignored):
-
- pubs add -I 978-0822324669 -d article.pdf
+ ```
+ pubs add -I 978-0822324669 -d article.pdf
+ ```
or an arXiv id (automatically downloading arXiv article is in the works):
-
- pubs add -X math/9501234 -d article.pdf
+ ```
+ pubs add -X math/9501234 -d article.pdf
+ ```
## References always up-to-date
@@ -66,8 +75,9 @@ or an arXiv id (automatically downloading arXiv article is in the works):
If you use latex, you can automatize references, by running `pubs export > references.bib` each time you update your library, which also fits well as a `makefile` rule.
This ensures that your reference file is always up-to-date; you can cite a paper in your manuscript a soon as you add it in pubs. This means that if you have, for instance, a doi on a webpage, you only need to do:
-
- pubs add -D 10.1007/s00422-012-0514-6
+ ```
+ pubs add -D 10.1007/s00422-012-0514-6
+ ```
and then add `\cite{Loeb_2012}` in your manuscript. After exporting the bibliography, the citation will correctly appear in your compiled pdf.
@@ -75,23 +85,25 @@ and then add `\cite{Loeb_2012}` in your manuscript. After exporting the bibliogr
## Document management
You can attach a document to a reference:
-
- pubs add Loeb2012_downloaded.pdf Loeb_2012
+ ```
+ pubs doc add Loeb2012_downloaded.pdf Loeb_2012
+ ```
And open your documents automatically from the command line:
-
- pubs doc open Loeb_2012
- pubs doc open --with lp Loeb_2012 # Opens the document with `lp` to actually print it.
-
+ ```
+ pubs doc open Loeb_2012
+ pubs doc open --with lp Loeb_2012 # Opens the document with `lp` to actually print it.
+ ```
## Customization
Pubs is designed to interact well with your command line tool chain.
You can add custom commands to pubs by defining aliases in your configuration file (make sure that the alias plugin is activated in your configuration by using `pubs conf`).
-
- [[alias]]
- evince = open --with evince
- count = !pubs list -k "$@" | wc -l
+ ```ini
+ [[alias]]
+ evince = open --with evince
+ count = !pubs list -k "$@" | wc -l
+ ```
The first command defines a new subcommand: `pubs open --with evince` will be executed when `pubs evince` is typed.
The second starts with a bang: `!`, and is treated as a shell command. If other arguments are provided they are passed to the shell command as in a script. In the example above the `count` alias can take arguments that are be passed to the `pubs list -k` command, hence enabling filters like `pubs count year:2012`.
@@ -102,14 +114,14 @@ The second starts with a bang: `!`, and is treated as a shell command. If other
For autocompletion to work, you need the [argcomplete](https://argcomplete.readthedocs.io) Python package, and Bash 4.2 or newer. For activating *bash* or *tsch* completion, consult the [argcomplete documentation](https://argcomplete.readthedocs.io/en/latest/#global-completion).
For *zsh* completion, the global activation is not supported but bash completion compatibility can be used for pubs. For that, add the following to your `.zshrc`:
-
- # Enable and load bashcompinit
- autoload -Uz compinit bashcompinit
- compinit
- bashcompinit
- # Argcomplete explicit registration for pubs
- eval "$(register-python-argcomplete pubs)"
-
+ ```shell
+ # Enable and load bashcompinit
+ autoload -Uz compinit bashcompinit
+ compinit
+ bashcompinit
+ # Argcomplete explicit registration for pubs
+ eval "$(register-python-argcomplete pubs)"
+ ```
## Need more help ?
@@ -130,4 +142,5 @@ You can access the self-documented configuration by using `pubs conf`, and all t
- [Dennis Wilson](https://github.com/d9w)
- [Bill Flynn](https://github.com/wflynny)
- [ksunden](https://github.com/ksunden)
-- [Amlesh Sivanantham](http://github.com/zamlz)
+- [Shane Stone](https://github.com/shanewstone)
+- [Amlesh Sivanantham](http://github.com/zamlz)
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 190a98d..d7fe2dd 100644
--- a/setup.py
+++ b/setup.py
@@ -4,6 +4,7 @@ import unittest
from setuptools import setup
+
with open('pubs/version.py') as f:
exec(f.read()) # defines __version__
@@ -11,11 +12,13 @@ here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'readme.md'), 'r') as fd:
long_description = fd.read()
+
def pubs_test_suite():
test_loader = unittest.TestLoader()
test_suite = test_loader.discover('tests', pattern='test_*.py')
return test_suite
+
setup(
name='pubs',
version=__version__,
@@ -41,6 +44,8 @@ setup(
],
},
+ include_package_data=True,
+
install_requires=['pyyaml', 'bibtexparser>=1.0', 'python-dateutil', 'six',
'requests', 'configobj', 'beautifulsoup4', 'feedparser'],
extras_require={'autocompletion': ['argcomplete'],
@@ -55,8 +60,8 @@ setup(
'Intended Audience :: Science/Research',
],
- test_suite= 'tests',
- tests_require=['pyfakefs>=3.4', 'mock', 'ddt'],
+ test_suite='tests',
+ tests_require=['pyfakefs>=3.4', 'mock', 'ddt', 'certifi'],
# in order to avoid 'zipimport.ZipImportError: bad local file header'
zip_safe=False,
diff --git a/tests/data/collection.bib b/tests/data/collection.bib
new file mode 100644
index 0000000..2c240fe
--- /dev/null
+++ b/tests/data/collection.bib
@@ -0,0 +1,41 @@
+@article{Einstein_1935,
+ doi = {10.1103/physrev.47.777},
+ url = {https://doi.org/10.1103%2Fphysrev.47.777},
+ year = 1935,
+ month = {may},
+ publisher = {American Physical Society ({APS})},
+ volume = {47},
+ number = {10},
+ pages = {777--780},
+ author = {A. Einstein and B. Podolsky and N. Rosen},
+ title = {Can Quantum-Mechanical Description of Physical Reality Be Considered Complete?},
+ journal = {Physical Review}
+}
+
+@article{Schrodinger_1935,
+ doi = {10.1017/s0305004100013554},
+ url = {https://doi.org/10.1017%2Fs0305004100013554},
+ year = 1935,
+ month = {oct},
+ publisher = {Cambridge University Press ({CUP})},
+ volume = {31},
+ number = {04},
+ pages = {555},
+ author = {E. Schrödinger and M. Born},
+ title = {Discussion of Probability Relations between Separated Systems},
+ journal = {Mathematical Proceedings of the Cambridge Philosophical Society}
+}
+
+@article{Bell_1964,
+ doi = {10.1103/physicsphysiquefizika.1.195},
+ url = {https://doi.org/10.1103%2Fphysicsphysiquefizika.1.195},
+ year = 1964,
+ month = {nov},
+ publisher = {American Physical Society ({APS})},
+ volume = {1},
+ number = {3},
+ pages = {195--200},
+ author = {J. S. Bell},
+ title = {On the Einstein Podolsky Rosen paradox},
+ journal = {Physics Physique {\cyrchar\cyrf}{\cyrchar\cyri}{\cyrchar\cyrz}{\cyrchar\cyri}{\cyrchar\cyrk}{\cyrchar\cyra}}
+}
diff --git a/tests/data/many_fields.bib b/tests/data/many_fields.bib
new file mode 100644
index 0000000..0a4c11f
--- /dev/null
+++ b/tests/data/many_fields.bib
@@ -0,0 +1,16 @@
+@ARTICLE{Cesar2013,
+ authors = {Jean César},
+ title = {An amazing title},
+ year = {2013},
+ month = "jan",
+ volume = {12},
+ pages = {12-23},
+ journal = {Nice Journal},
+ abstract = {This is an abstract. This line should be long enough to test
+multilines... and with a french érudit word},
+ comments = {A comment},
+ editors = {Edith Or and Anne Other},
+ keywords = {keyword1, keyword2},
+ links = {http://my.link/to-content},
+ subjects = "Some topic of interest",
+}
diff --git a/tests/readme.txt b/tests/readme.md
similarity index 53%
rename from tests/readme.txt
rename to tests/readme.md
index 88a6a13..356786e 100644
--- a/tests/readme.txt
+++ b/tests/readme.md
@@ -1,7 +1,11 @@
1. Install the dependencies using:
-> pip install -r requirements.txt
+```
+pip install -r ../dev_requirements.txt
+```
2. Run the tests using:
-> python -m unittest discover
+```
+python setup.py test
+```
-If you use nosetest, it will complain about addExpectedFailure, which you can safely disregard.
+If you use nosetest, it will complain about addExpectedFailure, which you can safely disregard.
diff --git a/tests/str_fixtures.py b/tests/str_fixtures.py
index 3b6ded3..f00c01a 100644
--- a/tests/str_fixtures.py
+++ b/tests/str_fixtures.py
@@ -84,6 +84,18 @@ not_bibtex = """@misc{this looks,
"""
+bibtex_with_latex = """@article{kjaer2018large,
+ title={A large impact crater beneath Hiawatha Glacier in northwest Greenland},
+ author={Kj{\\ae}r, Kurt H and Larsen, Nicolaj K and Binder, Tobias and Bj{\\o}rk, Anders A and Eisen, Olaf and Fahnestock, Mark A and Funder, Svend and Garde, Adam A and Haack, Henning and Helm, Veit and others},
+ journal={Science advances},
+ volume={4},
+ number={11},
+ pages={eaar8173},
+ year={2018},
+ publisher={American Association for the Advancement of Science}
+}
+"""
+
sample_conf = """
[main]
diff --git a/tests/test_apis.py b/tests/test_apis.py
index 0a7feb9..a538a36 100644
--- a/tests/test_apis.py
+++ b/tests/test_apis.py
@@ -16,8 +16,12 @@ import mock_requests
class APITests(unittest.TestCase):
- pass
+ @mock.patch('pubs.apis.requests.get', side_effect=mock_requests.mock_requests_get)
+ def test_readme(self, reqget):
+ apis.doi2bibtex('10.1007/s00422-012-0514-6')
+ apis.isbn2bibtex('978-0822324669')
+ apis.arxiv2bibtex('math/9501234')
class TestDOI2Bibtex(APITests):
@@ -45,11 +49,12 @@ class TestDOI2Bibtex(APITests):
class TestISBN2Bibtex(APITests):
- @mock.patch('pubs.apis.requests.get', side_effect=mock_requests.mock_requests_get)
- def test_unicode(self, reqget):
- bib = apis.isbn2bibtex('9782081336742')
- self.assertIsInstance(bib, ustr)
- self.assertIn('Poincaré, Henri', bib)
+ # try to avoid triggering 403 status during tests.
+ # @mock.patch('pubs.apis.requests.get', side_effect=mock_requests.mock_requests_get)
+ # def test_unicode(self, reqget):
+ # bib = apis.isbn2bibtex('9782081336742')
+ # self.assertIsInstance(bib, ustr)
+ # self.assertIn('Poincaré, Henri', bib)
@mock.patch('pubs.apis.requests.get', side_effect=mock_requests.mock_requests_get)
def test_parses_to_bibtex(self, reqget):
diff --git a/tests/test_apis_data.json b/tests/test_apis_data.json
index 8fe73aa..14e76d9 100644
--- a/tests/test_apis_data.json
+++ b/tests/test_apis_data.json
@@ -25,6 +25,58 @@
200,
null
],
+ [
+ [
+ "https://dx.doi.org/10.1007/s00422-012-0514-6"
+ ],
+ {
+ "headers": {
+ "accept": "application/x-bibtex"
+ }
+ },
+ "@article{Loeb_2012,\n\tdoi = {10.1007/s00422-012-0514-6},\n\turl = {https://doi.org/10.1007%2Fs00422-012-0514-6},\n\tyear = 2012,\n\tmonth = {aug},\n\tpublisher = {Springer Nature},\n\tvolume = {106},\n\tnumber = {11-12},\n\tpages = {757--765},\n\tauthor = {Gerald E. Loeb},\n\ttitle = {Optimal isn't good enough},\n\tjournal = {Biological Cybernetics}\n}",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://dx.doi.org/10.1007/s00422-012-0514-6"
+ ],
+ {
+ "headers": {
+ "accept": "application/x-bibtex"
+ }
+ },
+ "@article{Loeb_2012,\n\tdoi = {10.1007/s00422-012-0514-6},\n\turl = {https://doi.org/10.1007%2Fs00422-012-0514-6},\n\tyear = 2012,\n\tmonth = {aug},\n\tpublisher = {Springer Nature},\n\tvolume = {106},\n\tnumber = {11-12},\n\tpages = {757--765},\n\tauthor = {Gerald E. Loeb},\n\ttitle = {Optimal isn't good enough},\n\tjournal = {Biological Cybernetics}\n}",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://dx.doi.org/10.1007/s00422-012-0514-6"
+ ],
+ {
+ "headers": {
+ "accept": "application/x-bibtex"
+ }
+ },
+ "@article{Loeb_2012,\n\tdoi = {10.1007/s00422-012-0514-6},\n\turl = {https://doi.org/10.1007%2Fs00422-012-0514-6},\n\tyear = 2012,\n\tmonth = {aug},\n\tpublisher = {Springer Nature},\n\tvolume = {106},\n\tnumber = {11-12},\n\tpages = {757--765},\n\tauthor = {Gerald E. Loeb},\n\ttitle = {Optimal isn't good enough},\n\tjournal = {Biological Cybernetics}\n}",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://dx.doi.org/10.1007/s00422-012-0514-6"
+ ],
+ {
+ "headers": {
+ "accept": "application/x-bibtex"
+ }
+ },
+ "@article{Loeb_2012,\n\tdoi = {10.1007/s00422-012-0514-6},\n\turl = {https://doi.org/10.1007%2Fs00422-012-0514-6},\n\tyear = 2012,\n\tmonth = {aug},\n\tpublisher = {Springer Nature},\n\tvolume = {106},\n\tnumber = {11-12},\n\tpages = {757--765},\n\tauthor = {Gerald E. Loeb},\n\ttitle = {Optimal isn't good enough},\n\tjournal = {Biological Cybernetics}\n}",
+ 200,
+ null
+ ],
[
[
"https://dx.doi.org/10.1086/307221"
@@ -95,7 +147,7 @@
"https://export.arxiv.org/api/query?id_list=1312.2021"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=1312.2021&start=0&max_results=10\n http://arxiv.org/api/eXBvi61X4ShcFWF7lwJgRo7KSFk\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1312.2021v1\n 2013-12-06T21:33:40Z\n 2013-12-06T21:33:40Z\n Living with the Wrong Sign\n We describe a UV complete asymptotically fragile Lorentz-invariant theory\nexhibiting superluminal signal propagation. Its low energy effective action\ncontains \"wrong\" sign higher dimensional operators. Nevertheless, the theory\ngives rise to an S-matrix, which is defined at all energies. As expected for a\nnon-local theory, the corresponding scattering amplitudes are not exponentially\nbounded on the physical sheet, but otherwise are healthy. We study some of the\nphysical consequences of this S-matrix.\n\n \n Patrick Cooper\n \n \n Sergei Dubovsky\n \n \n Ali Mohsen\n \n 10.1103/INVALIDDOI.89.084044\n \n Phys. Rev. D 89, 084044 (2014)\n \n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=1312.2021&start=0&max_results=10\n http://arxiv.org/api/eXBvi61X4ShcFWF7lwJgRo7KSFk\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1312.2021v1\n 2013-12-06T21:33:40Z\n 2013-12-06T21:33:40Z\n Living with the Wrong Sign\n We describe a UV complete asymptotically fragile Lorentz-invariant theory\nexhibiting superluminal signal propagation. Its low energy effective action\ncontains \"wrong\" sign higher dimensional operators. Nevertheless, the theory\ngives rise to an S-matrix, which is defined at all energies. As expected for a\nnon-local theory, the corresponding scattering amplitudes are not exponentially\nbounded on the physical sheet, but otherwise are healthy. We study some of the\nphysical consequences of this S-matrix.\n\n \n Patrick Cooper\n \n \n Sergei Dubovsky\n \n \n Ali Mohsen\n \n 10.1103/INVALIDDOI.89.084044\n \n Phys. Rev. D 89, 084044 (2014)\n \n \n \n \n \n \n\n",
200,
null
],
@@ -104,7 +156,7 @@
"https://export.arxiv.org/api/query?id_list=1710.08557"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=1710.08557&start=0&max_results=10\n http://arxiv.org/api/bNB5RPNlUYbELau5YJ4IzaIq1x8\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1710.08557v1\n 2017-10-24T00:21:32Z\n 2017-10-24T00:21:32Z\n On Neuromechanical Approaches for the Study of Biological Grasp and\n Manipulation\n Biological and robotic grasp and manipulation are undeniably similar at the\nlevel of mechanical task performance. However, their underlying fundamental\nbiological vs. engineering mechanisms are, by definition, dramatically\ndifferent and can even be antithetical. Even our approach to each is\ndiametrically opposite: inductive science for the study of biological systems\nvs. engineering synthesis for the design and construction of robotic systems.\nThe past 20 years have seen several conceptual advances in both fields and the\nquest to unify them. Chief among them is the reluctant recognition that their\nunderlying fundamental mechanisms may actually share limited common ground,\nwhile exhibiting many fundamental differences. This recognition is particularly\nliberating because it allows us to resolve and move beyond multiple paradoxes\nand contradictions that arose from the initial reasonable assumption of a large\ncommon ground. Here, we begin by introducing the perspective of neuromechanics,\nwhich emphasizes that real-world behavior emerges from the intimate\ninteractions among the physical structure of the system, the mechanical\nrequirements of a task, the feasible neural control actions to produce it, and\nthe ability of the neuromuscular system to adapt through interactions with the\nenvironment. This allows us to articulate a succinct overview of a few salient\nconceptual paradoxes and contradictions regarding under-determined vs.\nover-determined mechanics, under- vs. over-actuated control, prescribed vs.\nemergent function, learning vs. implementation vs. adaptation, prescriptive vs.\ndescriptive synergies, and optimal vs. habitual performance. We conclude by\npresenting open questions and suggesting directions for future research. We\nhope this frank assessment of the state-of-the-art will encourage and guide\nthese communities to continue to interact and make progress in these important\nareas.\n\n \n Francisco J Valero-Cuevas\n \n \n Marco Santello\n \n 10.1186/s12984-017-0305-3\n \n Journal of NeuroEngineering and Rehabilitation, 2017\n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=1710.08557&start=0&max_results=10\n http://arxiv.org/api/bNB5RPNlUYbELau5YJ4IzaIq1x8\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1710.08557v1\n 2017-10-24T00:21:32Z\n 2017-10-24T00:21:32Z\n On Neuromechanical Approaches for the Study of Biological Grasp and\n Manipulation\n Biological and robotic grasp and manipulation are undeniably similar at the\nlevel of mechanical task performance. However, their underlying fundamental\nbiological vs. engineering mechanisms are, by definition, dramatically\ndifferent and can even be antithetical. Even our approach to each is\ndiametrically opposite: inductive science for the study of biological systems\nvs. engineering synthesis for the design and construction of robotic systems.\nThe past 20 years have seen several conceptual advances in both fields and the\nquest to unify them. Chief among them is the reluctant recognition that their\nunderlying fundamental mechanisms may actually share limited common ground,\nwhile exhibiting many fundamental differences. This recognition is particularly\nliberating because it allows us to resolve and move beyond multiple paradoxes\nand contradictions that arose from the initial reasonable assumption of a large\ncommon ground. Here, we begin by introducing the perspective of neuromechanics,\nwhich emphasizes that real-world behavior emerges from the intimate\ninteractions among the physical structure of the system, the mechanical\nrequirements of a task, the feasible neural control actions to produce it, and\nthe ability of the neuromuscular system to adapt through interactions with the\nenvironment. This allows us to articulate a succinct overview of a few salient\nconceptual paradoxes and contradictions regarding under-determined vs.\nover-determined mechanics, under- vs. over-actuated control, prescribed vs.\nemergent function, learning vs. implementation vs. adaptation, prescriptive vs.\ndescriptive synergies, and optimal vs. habitual performance. We conclude by\npresenting open questions and suggesting directions for future research. We\nhope this frank assessment of the state-of-the-art will encourage and guide\nthese communities to continue to interact and make progress in these important\nareas.\n\n \n Francisco J Valero-Cuevas\n \n \n Marco Santello\n \n 10.1186/s12984-017-0305-3\n \n Journal of NeuroEngineering and Rehabilitation, 2017\n \n \n \n \n \n\n",
200,
null
],
@@ -113,7 +165,7 @@
"https://export.arxiv.org/api/query?id_list=1710.08557"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=1710.08557&start=0&max_results=10\n http://arxiv.org/api/bNB5RPNlUYbELau5YJ4IzaIq1x8\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1710.08557v1\n 2017-10-24T00:21:32Z\n 2017-10-24T00:21:32Z\n On Neuromechanical Approaches for the Study of Biological Grasp and\n Manipulation\n Biological and robotic grasp and manipulation are undeniably similar at the\nlevel of mechanical task performance. However, their underlying fundamental\nbiological vs. engineering mechanisms are, by definition, dramatically\ndifferent and can even be antithetical. Even our approach to each is\ndiametrically opposite: inductive science for the study of biological systems\nvs. engineering synthesis for the design and construction of robotic systems.\nThe past 20 years have seen several conceptual advances in both fields and the\nquest to unify them. Chief among them is the reluctant recognition that their\nunderlying fundamental mechanisms may actually share limited common ground,\nwhile exhibiting many fundamental differences. This recognition is particularly\nliberating because it allows us to resolve and move beyond multiple paradoxes\nand contradictions that arose from the initial reasonable assumption of a large\ncommon ground. Here, we begin by introducing the perspective of neuromechanics,\nwhich emphasizes that real-world behavior emerges from the intimate\ninteractions among the physical structure of the system, the mechanical\nrequirements of a task, the feasible neural control actions to produce it, and\nthe ability of the neuromuscular system to adapt through interactions with the\nenvironment. This allows us to articulate a succinct overview of a few salient\nconceptual paradoxes and contradictions regarding under-determined vs.\nover-determined mechanics, under- vs. over-actuated control, prescribed vs.\nemergent function, learning vs. implementation vs. adaptation, prescriptive vs.\ndescriptive synergies, and optimal vs. habitual performance. We conclude by\npresenting open questions and suggesting directions for future research. We\nhope this frank assessment of the state-of-the-art will encourage and guide\nthese communities to continue to interact and make progress in these important\nareas.\n\n \n Francisco J Valero-Cuevas\n \n \n Marco Santello\n \n 10.1186/s12984-017-0305-3\n \n Journal of NeuroEngineering and Rehabilitation, 2017\n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=1710.08557&start=0&max_results=10\n http://arxiv.org/api/bNB5RPNlUYbELau5YJ4IzaIq1x8\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/1710.08557v1\n 2017-10-24T00:21:32Z\n 2017-10-24T00:21:32Z\n On Neuromechanical Approaches for the Study of Biological Grasp and\n Manipulation\n Biological and robotic grasp and manipulation are undeniably similar at the\nlevel of mechanical task performance. However, their underlying fundamental\nbiological vs. engineering mechanisms are, by definition, dramatically\ndifferent and can even be antithetical. Even our approach to each is\ndiametrically opposite: inductive science for the study of biological systems\nvs. engineering synthesis for the design and construction of robotic systems.\nThe past 20 years have seen several conceptual advances in both fields and the\nquest to unify them. Chief among them is the reluctant recognition that their\nunderlying fundamental mechanisms may actually share limited common ground,\nwhile exhibiting many fundamental differences. This recognition is particularly\nliberating because it allows us to resolve and move beyond multiple paradoxes\nand contradictions that arose from the initial reasonable assumption of a large\ncommon ground. Here, we begin by introducing the perspective of neuromechanics,\nwhich emphasizes that real-world behavior emerges from the intimate\ninteractions among the physical structure of the system, the mechanical\nrequirements of a task, the feasible neural control actions to produce it, and\nthe ability of the neuromuscular system to adapt through interactions with the\nenvironment. This allows us to articulate a succinct overview of a few salient\nconceptual paradoxes and contradictions regarding under-determined vs.\nover-determined mechanics, under- vs. over-actuated control, prescribed vs.\nemergent function, learning vs. implementation vs. adaptation, prescriptive vs.\ndescriptive synergies, and optimal vs. habitual performance. We conclude by\npresenting open questions and suggesting directions for future research. We\nhope this frank assessment of the state-of-the-art will encourage and guide\nthese communities to continue to interact and make progress in these important\nareas.\n\n \n Francisco J Valero-Cuevas\n \n \n Marco Santello\n \n 10.1186/s12984-017-0305-3\n \n Journal of NeuroEngineering and Rehabilitation, 2017\n \n \n \n \n \n\n",
200,
null
],
@@ -122,7 +174,7 @@
"https://export.arxiv.org/api/query?id_list=INVALIDID"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=INVALIDID\n http://arxiv.org/api//TMQrv7hMz9PNtlUyGrhFtefYFQ\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 1\n \n http://arxiv.org/api/errors#incorrect_id_format_for_INVALIDID\n Error\n incorrect id format for INVALIDID\n 2018-08-14T00:00:00-04:00\n \n \n arXiv api core\n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=INVALIDID\n http://arxiv.org/api//TMQrv7hMz9PNtlUyGrhFtefYFQ\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 1\n \n http://arxiv.org/api/errors#incorrect_id_format_for_INVALIDID\n Error\n incorrect id format for INVALIDID\n 2019-01-04T00:00:00-05:00\n \n \n arXiv api core\n \n \n\n",
400,
"400 Client Error: Bad Request for url: https://export.arxiv.org/api/query?id_list=INVALIDID"
],
@@ -131,7 +183,7 @@
"https://export.arxiv.org/api/query?id_list=astro-ph/9812133"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=astro-ph/9812133&start=0&max_results=10\n http://arxiv.org/api/SfKekabpSjI/htnxCLpK3q9AsUs\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/astro-ph/9812133v1\n 1998-12-08T03:27:34Z\n 1998-12-08T03:27:34Z\n Measurements of Omega and Lambda from 42 High-Redshift Supernovae\n We report measurements of the mass density, Omega_M, and\ncosmological-constant energy density, Omega_Lambda, of the universe based on\nthe analysis of 42 Type Ia supernovae discovered by the Supernova Cosmology\nProject. The magnitude-redshift data for these SNe, at redshifts between 0.18\nand 0.83, are fit jointly with a set of SNe from the Calan/Tololo Supernova\nSurvey, at redshifts below 0.1, to yield values for the cosmological\nparameters. All SN peak magnitudes are standardized using a SN Ia lightcurve\nwidth-luminosity relation. The measurement yields a joint probability\ndistribution of the cosmological parameters that is approximated by the\nrelation 0.8 Omega_M - 0.6 Omega_Lambda ~= -0.2 +/- 0.1 in the region of\ninterest (Omega_M <~ 1.5). For a flat (Omega_M + Omega_Lambda = 1) cosmology we\nfind Omega_M = 0.28{+0.09,-0.08} (1 sigma statistical) {+0.05,-0.04}\n(identified systematics). The data are strongly inconsistent with a Lambda = 0\nflat cosmology, the simplest inflationary universe model. An open, Lambda = 0\ncosmology also does not fit the data well: the data indicate that the\ncosmological constant is non-zero and positive, with a confidence of P(Lambda >\n0) = 99%, including the identified systematic uncertainties. The best-fit age\nof the universe relative to the Hubble time is t_0 = 14.9{+1.4,-1.1} (0.63/h)\nGyr for a flat cosmology. The size of our sample allows us to perform a variety\nof statistical tests to check for possible systematic errors and biases. We\nfind no significant differences in either the host reddening distribution or\nMalmquist bias between the low-redshift Calan/Tololo sample and our\nhigh-redshift sample. The conclusions are robust whether or not a\nwidth-luminosity relation is used to standardize the SN peak magnitudes.\n\n \n S. Perlmutter\n The Supernova Cosmology Project\n \n \n G. Aldering\n The Supernova Cosmology Project\n \n \n G. Goldhaber\n The Supernova Cosmology Project\n \n \n R. A. Knop\n The Supernova Cosmology Project\n \n \n P. Nugent\n The Supernova Cosmology Project\n \n \n P. G. Castro\n The Supernova Cosmology Project\n \n \n S. Deustua\n The Supernova Cosmology Project\n \n \n S. Fabbro\n The Supernova Cosmology Project\n \n \n A. Goobar\n The Supernova Cosmology Project\n \n \n D. E. Groom\n The Supernova Cosmology Project\n \n \n I. M. Hook\n The Supernova Cosmology Project\n \n \n A. G. Kim\n The Supernova Cosmology Project\n \n \n M. Y. Kim\n The Supernova Cosmology Project\n \n \n J. C. Lee\n The Supernova Cosmology Project\n \n \n N. J. Nunes\n The Supernova Cosmology Project\n \n \n R. Pain\n The Supernova Cosmology Project\n \n \n C. R. Pennypacker\n The Supernova Cosmology Project\n \n \n R. Quimby\n The Supernova Cosmology Project\n \n \n C. Lidman\n The Supernova Cosmology Project\n \n \n R. S. Ellis\n The Supernova Cosmology Project\n \n \n M. Irwin\n The Supernova Cosmology Project\n \n \n R. G. McMahon\n The Supernova Cosmology Project\n \n \n P. Ruiz-Lapuente\n The Supernova Cosmology Project\n \n \n N. Walton\n The Supernova Cosmology Project\n \n \n B. Schaefer\n The Supernova Cosmology Project\n \n \n B. J. Boyle\n The Supernova Cosmology Project\n \n \n A. V. Filippenko\n The Supernova Cosmology Project\n \n \n T. Matheson\n The Supernova Cosmology Project\n \n \n A. S. Fruchter\n The Supernova Cosmology Project\n \n \n N. Panagia\n The Supernova Cosmology Project\n \n \n H. J. M. Newberg\n The Supernova Cosmology Project\n \n \n W. J. Couch\n The Supernova Cosmology Project\n \n 10.1086/307221\n \n 21 pages and 10 figures. Accepted for publication in the\n Astrophysical Journal. Individual color figures, supplementary tables, and\n preprint also available at http://www-supernova.lbl.gov/\n Astrophys.J.517:565-586,1999\n \n \n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=astro-ph/9812133&start=0&max_results=10\n http://arxiv.org/api/SfKekabpSjI/htnxCLpK3q9AsUs\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/astro-ph/9812133v1\n 1998-12-08T03:27:34Z\n 1998-12-08T03:27:34Z\n Measurements of Omega and Lambda from 42 High-Redshift Supernovae\n We report measurements of the mass density, Omega_M, and\ncosmological-constant energy density, Omega_Lambda, of the universe based on\nthe analysis of 42 Type Ia supernovae discovered by the Supernova Cosmology\nProject. The magnitude-redshift data for these SNe, at redshifts between 0.18\nand 0.83, are fit jointly with a set of SNe from the Calan/Tololo Supernova\nSurvey, at redshifts below 0.1, to yield values for the cosmological\nparameters. All SN peak magnitudes are standardized using a SN Ia lightcurve\nwidth-luminosity relation. The measurement yields a joint probability\ndistribution of the cosmological parameters that is approximated by the\nrelation 0.8 Omega_M - 0.6 Omega_Lambda ~= -0.2 +/- 0.1 in the region of\ninterest (Omega_M <~ 1.5). For a flat (Omega_M + Omega_Lambda = 1) cosmology we\nfind Omega_M = 0.28{+0.09,-0.08} (1 sigma statistical) {+0.05,-0.04}\n(identified systematics). The data are strongly inconsistent with a Lambda = 0\nflat cosmology, the simplest inflationary universe model. An open, Lambda = 0\ncosmology also does not fit the data well: the data indicate that the\ncosmological constant is non-zero and positive, with a confidence of P(Lambda >\n0) = 99%, including the identified systematic uncertainties. The best-fit age\nof the universe relative to the Hubble time is t_0 = 14.9{+1.4,-1.1} (0.63/h)\nGyr for a flat cosmology. The size of our sample allows us to perform a variety\nof statistical tests to check for possible systematic errors and biases. We\nfind no significant differences in either the host reddening distribution or\nMalmquist bias between the low-redshift Calan/Tololo sample and our\nhigh-redshift sample. The conclusions are robust whether or not a\nwidth-luminosity relation is used to standardize the SN peak magnitudes.\n\n \n S. Perlmutter\n The Supernova Cosmology Project\n \n \n G. Aldering\n The Supernova Cosmology Project\n \n \n G. Goldhaber\n The Supernova Cosmology Project\n \n \n R. A. Knop\n The Supernova Cosmology Project\n \n \n P. Nugent\n The Supernova Cosmology Project\n \n \n P. G. Castro\n The Supernova Cosmology Project\n \n \n S. Deustua\n The Supernova Cosmology Project\n \n \n S. Fabbro\n The Supernova Cosmology Project\n \n \n A. Goobar\n The Supernova Cosmology Project\n \n \n D. E. Groom\n The Supernova Cosmology Project\n \n \n I. M. Hook\n The Supernova Cosmology Project\n \n \n A. G. Kim\n The Supernova Cosmology Project\n \n \n M. Y. Kim\n The Supernova Cosmology Project\n \n \n J. C. Lee\n The Supernova Cosmology Project\n \n \n N. J. Nunes\n The Supernova Cosmology Project\n \n \n R. Pain\n The Supernova Cosmology Project\n \n \n C. R. Pennypacker\n The Supernova Cosmology Project\n \n \n R. Quimby\n The Supernova Cosmology Project\n \n \n C. Lidman\n The Supernova Cosmology Project\n \n \n R. S. Ellis\n The Supernova Cosmology Project\n \n \n M. Irwin\n The Supernova Cosmology Project\n \n \n R. G. McMahon\n The Supernova Cosmology Project\n \n \n P. Ruiz-Lapuente\n The Supernova Cosmology Project\n \n \n N. Walton\n The Supernova Cosmology Project\n \n \n B. Schaefer\n The Supernova Cosmology Project\n \n \n B. J. Boyle\n The Supernova Cosmology Project\n \n \n A. V. Filippenko\n The Supernova Cosmology Project\n \n \n T. Matheson\n The Supernova Cosmology Project\n \n \n A. S. Fruchter\n The Supernova Cosmology Project\n \n \n N. Panagia\n The Supernova Cosmology Project\n \n \n H. J. M. Newberg\n The Supernova Cosmology Project\n \n \n W. J. Couch\n The Supernova Cosmology Project\n \n 10.1086/307221\n \n 21 pages and 10 figures. Accepted for publication in the\n Astrophysical Journal. Individual color figures, supplementary tables, and\n preprint also available at http://www-supernova.lbl.gov/\n Astrophys.J.517:565-586,1999\n \n \n \n \n \n \n \n\n",
200,
null
],
@@ -140,7 +192,7 @@
"https://export.arxiv.org/api/query?id_list=astro-ph/9812133"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=astro-ph/9812133&start=0&max_results=10\n http://arxiv.org/api/SfKekabpSjI/htnxCLpK3q9AsUs\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/astro-ph/9812133v1\n 1998-12-08T03:27:34Z\n 1998-12-08T03:27:34Z\n Measurements of Omega and Lambda from 42 High-Redshift Supernovae\n We report measurements of the mass density, Omega_M, and\ncosmological-constant energy density, Omega_Lambda, of the universe based on\nthe analysis of 42 Type Ia supernovae discovered by the Supernova Cosmology\nProject. The magnitude-redshift data for these SNe, at redshifts between 0.18\nand 0.83, are fit jointly with a set of SNe from the Calan/Tololo Supernova\nSurvey, at redshifts below 0.1, to yield values for the cosmological\nparameters. All SN peak magnitudes are standardized using a SN Ia lightcurve\nwidth-luminosity relation. The measurement yields a joint probability\ndistribution of the cosmological parameters that is approximated by the\nrelation 0.8 Omega_M - 0.6 Omega_Lambda ~= -0.2 +/- 0.1 in the region of\ninterest (Omega_M <~ 1.5). For a flat (Omega_M + Omega_Lambda = 1) cosmology we\nfind Omega_M = 0.28{+0.09,-0.08} (1 sigma statistical) {+0.05,-0.04}\n(identified systematics). The data are strongly inconsistent with a Lambda = 0\nflat cosmology, the simplest inflationary universe model. An open, Lambda = 0\ncosmology also does not fit the data well: the data indicate that the\ncosmological constant is non-zero and positive, with a confidence of P(Lambda >\n0) = 99%, including the identified systematic uncertainties. The best-fit age\nof the universe relative to the Hubble time is t_0 = 14.9{+1.4,-1.1} (0.63/h)\nGyr for a flat cosmology. The size of our sample allows us to perform a variety\nof statistical tests to check for possible systematic errors and biases. We\nfind no significant differences in either the host reddening distribution or\nMalmquist bias between the low-redshift Calan/Tololo sample and our\nhigh-redshift sample. The conclusions are robust whether or not a\nwidth-luminosity relation is used to standardize the SN peak magnitudes.\n\n \n S. Perlmutter\n The Supernova Cosmology Project\n \n \n G. Aldering\n The Supernova Cosmology Project\n \n \n G. Goldhaber\n The Supernova Cosmology Project\n \n \n R. A. Knop\n The Supernova Cosmology Project\n \n \n P. Nugent\n The Supernova Cosmology Project\n \n \n P. G. Castro\n The Supernova Cosmology Project\n \n \n S. Deustua\n The Supernova Cosmology Project\n \n \n S. Fabbro\n The Supernova Cosmology Project\n \n \n A. Goobar\n The Supernova Cosmology Project\n \n \n D. E. Groom\n The Supernova Cosmology Project\n \n \n I. M. Hook\n The Supernova Cosmology Project\n \n \n A. G. Kim\n The Supernova Cosmology Project\n \n \n M. Y. Kim\n The Supernova Cosmology Project\n \n \n J. C. Lee\n The Supernova Cosmology Project\n \n \n N. J. Nunes\n The Supernova Cosmology Project\n \n \n R. Pain\n The Supernova Cosmology Project\n \n \n C. R. Pennypacker\n The Supernova Cosmology Project\n \n \n R. Quimby\n The Supernova Cosmology Project\n \n \n C. Lidman\n The Supernova Cosmology Project\n \n \n R. S. Ellis\n The Supernova Cosmology Project\n \n \n M. Irwin\n The Supernova Cosmology Project\n \n \n R. G. McMahon\n The Supernova Cosmology Project\n \n \n P. Ruiz-Lapuente\n The Supernova Cosmology Project\n \n \n N. Walton\n The Supernova Cosmology Project\n \n \n B. Schaefer\n The Supernova Cosmology Project\n \n \n B. J. Boyle\n The Supernova Cosmology Project\n \n \n A. V. Filippenko\n The Supernova Cosmology Project\n \n \n T. Matheson\n The Supernova Cosmology Project\n \n \n A. S. Fruchter\n The Supernova Cosmology Project\n \n \n N. Panagia\n The Supernova Cosmology Project\n \n \n H. J. M. Newberg\n The Supernova Cosmology Project\n \n \n W. J. Couch\n The Supernova Cosmology Project\n \n 10.1086/307221\n \n 21 pages and 10 figures. Accepted for publication in the\n Astrophysical Journal. Individual color figures, supplementary tables, and\n preprint also available at http://www-supernova.lbl.gov/\n Astrophys.J.517:565-586,1999\n \n \n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=astro-ph/9812133&start=0&max_results=10\n http://arxiv.org/api/SfKekabpSjI/htnxCLpK3q9AsUs\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/astro-ph/9812133v1\n 1998-12-08T03:27:34Z\n 1998-12-08T03:27:34Z\n Measurements of Omega and Lambda from 42 High-Redshift Supernovae\n We report measurements of the mass density, Omega_M, and\ncosmological-constant energy density, Omega_Lambda, of the universe based on\nthe analysis of 42 Type Ia supernovae discovered by the Supernova Cosmology\nProject. The magnitude-redshift data for these SNe, at redshifts between 0.18\nand 0.83, are fit jointly with a set of SNe from the Calan/Tololo Supernova\nSurvey, at redshifts below 0.1, to yield values for the cosmological\nparameters. All SN peak magnitudes are standardized using a SN Ia lightcurve\nwidth-luminosity relation. The measurement yields a joint probability\ndistribution of the cosmological parameters that is approximated by the\nrelation 0.8 Omega_M - 0.6 Omega_Lambda ~= -0.2 +/- 0.1 in the region of\ninterest (Omega_M <~ 1.5). For a flat (Omega_M + Omega_Lambda = 1) cosmology we\nfind Omega_M = 0.28{+0.09,-0.08} (1 sigma statistical) {+0.05,-0.04}\n(identified systematics). The data are strongly inconsistent with a Lambda = 0\nflat cosmology, the simplest inflationary universe model. An open, Lambda = 0\ncosmology also does not fit the data well: the data indicate that the\ncosmological constant is non-zero and positive, with a confidence of P(Lambda >\n0) = 99%, including the identified systematic uncertainties. The best-fit age\nof the universe relative to the Hubble time is t_0 = 14.9{+1.4,-1.1} (0.63/h)\nGyr for a flat cosmology. The size of our sample allows us to perform a variety\nof statistical tests to check for possible systematic errors and biases. We\nfind no significant differences in either the host reddening distribution or\nMalmquist bias between the low-redshift Calan/Tololo sample and our\nhigh-redshift sample. The conclusions are robust whether or not a\nwidth-luminosity relation is used to standardize the SN peak magnitudes.\n\n \n S. Perlmutter\n The Supernova Cosmology Project\n \n \n G. Aldering\n The Supernova Cosmology Project\n \n \n G. Goldhaber\n The Supernova Cosmology Project\n \n \n R. A. Knop\n The Supernova Cosmology Project\n \n \n P. Nugent\n The Supernova Cosmology Project\n \n \n P. G. Castro\n The Supernova Cosmology Project\n \n \n S. Deustua\n The Supernova Cosmology Project\n \n \n S. Fabbro\n The Supernova Cosmology Project\n \n \n A. Goobar\n The Supernova Cosmology Project\n \n \n D. E. Groom\n The Supernova Cosmology Project\n \n \n I. M. Hook\n The Supernova Cosmology Project\n \n \n A. G. Kim\n The Supernova Cosmology Project\n \n \n M. Y. Kim\n The Supernova Cosmology Project\n \n \n J. C. Lee\n The Supernova Cosmology Project\n \n \n N. J. Nunes\n The Supernova Cosmology Project\n \n \n R. Pain\n The Supernova Cosmology Project\n \n \n C. R. Pennypacker\n The Supernova Cosmology Project\n \n \n R. Quimby\n The Supernova Cosmology Project\n \n \n C. Lidman\n The Supernova Cosmology Project\n \n \n R. S. Ellis\n The Supernova Cosmology Project\n \n \n M. Irwin\n The Supernova Cosmology Project\n \n \n R. G. McMahon\n The Supernova Cosmology Project\n \n \n P. Ruiz-Lapuente\n The Supernova Cosmology Project\n \n \n N. Walton\n The Supernova Cosmology Project\n \n \n B. Schaefer\n The Supernova Cosmology Project\n \n \n B. J. Boyle\n The Supernova Cosmology Project\n \n \n A. V. Filippenko\n The Supernova Cosmology Project\n \n \n T. Matheson\n The Supernova Cosmology Project\n \n \n A. S. Fruchter\n The Supernova Cosmology Project\n \n \n N. Panagia\n The Supernova Cosmology Project\n \n \n H. J. M. Newberg\n The Supernova Cosmology Project\n \n \n W. J. Couch\n The Supernova Cosmology Project\n \n 10.1086/307221\n \n 21 pages and 10 figures. Accepted for publication in the\n Astrophysical Journal. Individual color figures, supplementary tables, and\n preprint also available at http://www-supernova.lbl.gov/\n Astrophys.J.517:565-586,1999\n \n \n \n \n \n \n \n\n",
200,
null
],
@@ -149,7 +201,87 @@
"https://export.arxiv.org/api/query?id_list=math/0211159"
],
{},
- "\n\n \n ArXiv Query: search_query=&id_list=math/0211159&start=0&max_results=10\n http://arxiv.org/api/4nVRTcAL5Np4oaGFQnqVPG0+c5k\n 2018-08-14T00:00:00-04:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/0211159v1\n 2002-11-11T16:11:49Z\n 2002-11-11T16:11:49Z\n The entropy formula for the Ricci flow and its geometric applications\n We present a monotonic expression for the Ricci flow, valid in all dimensions\nand without curvature assumptions. It is interpreted as an entropy for a\ncertain canonical ensemble. Several geometric applications are given. In\nparticular, (1) Ricci flow, considered on the space of riemannian metrics\nmodulo diffeomorphism and scaling, has no nontrivial periodic orbits (that is,\nother than fixed points); (2) In a region, where singularity is forming in\nfinite time, the injectivity radius is controlled by the curvature; (3) Ricci\nflow can not quickly turn an almost euclidean region into a very curved one, no\nmatter what happens far away. We also verify several assertions related to\nRichard Hamilton's program for the proof of Thurston geometrization conjecture\nfor closed three-manifolds, and give a sketch of an eclectic proof of this\nconjecture, making use of earlier results on collapsing with local lower\ncurvature bound.\n\n \n Grisha Perelman\n \n 39 pages\n \n \n \n \n \n \n\n",
+ "\n\n \n ArXiv Query: search_query=&id_list=math/0211159&start=0&max_results=10\n http://arxiv.org/api/4nVRTcAL5Np4oaGFQnqVPG0+c5k\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/0211159v1\n 2002-11-11T16:11:49Z\n 2002-11-11T16:11:49Z\n The entropy formula for the Ricci flow and its geometric applications\n We present a monotonic expression for the Ricci flow, valid in all dimensions\nand without curvature assumptions. It is interpreted as an entropy for a\ncertain canonical ensemble. Several geometric applications are given. In\nparticular, (1) Ricci flow, considered on the space of riemannian metrics\nmodulo diffeomorphism and scaling, has no nontrivial periodic orbits (that is,\nother than fixed points); (2) In a region, where singularity is forming in\nfinite time, the injectivity radius is controlled by the curvature; (3) Ricci\nflow can not quickly turn an almost euclidean region into a very curved one, no\nmatter what happens far away. We also verify several assertions related to\nRichard Hamilton's program for the proof of Thurston geometrization conjecture\nfor closed three-manifolds, and give a sketch of an eclectic proof of this\nconjecture, making use of earlier results on collapsing with local lower\ncurvature bound.\n\n \n Grisha Perelman\n \n 39 pages\n \n \n \n \n \n \n\n",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://export.arxiv.org/api/query?id_list=math/9501234"
+ ],
+ {},
+ "\n\n \n ArXiv Query: search_query=&id_list=math/9501234&start=0&max_results=10\n http://arxiv.org/api/7jH0+0cTfQ0YcTJCQMYE9FyHjoA\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/9501234v1\n 1995-01-23T00:00:00Z\n 1995-01-23T00:00:00Z\n Aztec diamonds, checkerboard graphs, and spanning trees\n This note derives the characteristic polynomial of a graph that represents\nnonjump moves in a generalized game of checkers. The number of spanning trees\nis also determined.\n\n \n Donald E. Knuth\n \n J. Algebraic Combin. 6 (1997), no. 3, 253--257\n \n \n \n \n \n\n",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://export.arxiv.org/api/query?id_list=math/9501234"
+ ],
+ {},
+ "\n\n \n ArXiv Query: search_query=&id_list=math/9501234&start=0&max_results=10\n http://arxiv.org/api/7jH0+0cTfQ0YcTJCQMYE9FyHjoA\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/9501234v1\n 1995-01-23T00:00:00Z\n 1995-01-23T00:00:00Z\n Aztec diamonds, checkerboard graphs, and spanning trees\n This note derives the characteristic polynomial of a graph that represents\nnonjump moves in a generalized game of checkers. The number of spanning trees\nis also determined.\n\n \n Donald E. Knuth\n \n J. Algebraic Combin. 6 (1997), no. 3, 253--257\n \n \n \n \n \n\n",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://export.arxiv.org/api/query?id_list=math/9501234"
+ ],
+ {},
+ "\n\n \n ArXiv Query: search_query=&id_list=math/9501234&start=0&max_results=10\n http://arxiv.org/api/7jH0+0cTfQ0YcTJCQMYE9FyHjoA\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/9501234v1\n 1995-01-23T00:00:00Z\n 1995-01-23T00:00:00Z\n Aztec diamonds, checkerboard graphs, and spanning trees\n This note derives the characteristic polynomial of a graph that represents\nnonjump moves in a generalized game of checkers. The number of spanning trees\nis also determined.\n\n \n Donald E. Knuth\n \n J. Algebraic Combin. 6 (1997), no. 3, 253--257\n \n \n \n \n \n\n",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://export.arxiv.org/api/query?id_list=math/9501234"
+ ],
+ {},
+ "\n\n \n ArXiv Query: search_query=&id_list=math/9501234&start=0&max_results=10\n http://arxiv.org/api/7jH0+0cTfQ0YcTJCQMYE9FyHjoA\n 2019-01-04T00:00:00-05:00\n 1\n 0\n 10\n \n http://arxiv.org/abs/math/9501234v1\n 1995-01-23T00:00:00Z\n 1995-01-23T00:00:00Z\n Aztec diamonds, checkerboard graphs, and spanning trees\n This note derives the characteristic polynomial of a graph that represents\nnonjump moves in a generalized game of checkers. The number of spanning trees\nis also determined.\n\n \n Donald E. Knuth\n \n J. Algebraic Combin. 6 (1997), no. 3, 253--257\n \n \n \n \n \n\n",
+ 200,
+ null
+ ],
+ [
+ [
+ "https://www.ottobib.com/isbn/978-0822324669/bibtex"
+ ],
+ {
+ "headers": null
+ },
+ "\n\n\n\n \n
\n \n \n \n \n \n \n\n \n\n Bibliography and Works Cited Generator for MLA, APA, Wikipedia and Bibtex - OttoBib.com \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n