lixplore-cli 1.2.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/CHANGELOG.md +9 -0
- {lixplore_cli-1.2.0/lixplore_cli.egg-info → lixplore_cli-1.2.1}/PKG-INFO +1 -1
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/commands.py +12 -4
- lixplore_cli-1.2.1/lixplore/templates/__init__.py +1 -0
- lixplore_cli-1.2.1/lixplore/templates/ieee.json +15 -0
- lixplore_cli-1.2.1/lixplore/templates/nature.json +15 -0
- lixplore_cli-1.2.1/lixplore/templates/science.json +15 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/export.py +3 -3
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1/lixplore_cli.egg-info}/PKG-INFO +1 -1
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/SOURCES.txt +4 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/pyproject.toml +3 -2
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/LICENSE +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/MANIFEST.in +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/README.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/README.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/changelog.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/contributing.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/faq.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/license.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/ai-integration.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/automation.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/custom-apis.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/profiles.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/zotero.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/automation-examples.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/integrations.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/use-cases.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/workflows.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/basic-usage.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/first-search.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/installation.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/quickstart.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/alerts.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/annotations.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/export.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/filtering.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/interactive.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/pdf.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/search-sources.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/search.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/index.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/lixplore.1 +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/lixplore.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/annotation-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/display-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/export-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/filter-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/flags-overview.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/interactive-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/search-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/source-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/utility-flags.md +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/__init__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/__main__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/__init__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/__main__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/config.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/env.example +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/gate.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/notify.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/render.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/runner.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/state.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/cli.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/dispatcher.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/search.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/__init__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/arxiv.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/crossref.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/doaj.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/europepmc.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/pubmed.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/__init__.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/app.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/modals.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/annotations.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/cache.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/citations.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/custom_apis.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/enhanced_tui.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/enrichment.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/interactive_tui.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/pdf_downloader.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/profiles.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/reference_managers.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/rich_check.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/shell_mode.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/statistics.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/template_engine.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/terminal.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/wizard_mode.py +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/dependency_links.txt +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/entry_points.txt +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/requires.txt +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/top_level.txt +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/requirements.txt +0 -0
- {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/setup.cfg +0 -0
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.1] - 2026-09-27
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Journal export templates (`--template`, `--list-templates`) were missing when the package was
|
|
14
|
+
built straight from source, as the AUR and Homebrew packages do
|
|
15
|
+
- Exports were written inside the installed package (`site-packages/exports/`), which fails with a
|
|
16
|
+
permission error for AUR and Homebrew installs. They now go to `exports/` in the current folder
|
|
17
|
+
- `--install-man` could not find the man page in pip, AUR and Homebrew installs
|
|
18
|
+
|
|
10
19
|
## [1.2.0] - 2026-09-27
|
|
11
20
|
|
|
12
21
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lixplore-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Academic Literature Search & Export CLI Tool
|
|
5
5
|
Author-email: Balasubramanian Periannan <balathepharmacist@gmail.com>
|
|
6
6
|
Maintainer-email: Balasubramanian Periannan <balathepharmacist@gmail.com>
|
|
@@ -886,12 +886,20 @@ def _install_man_page():
|
|
|
886
886
|
import shutil
|
|
887
887
|
import subprocess
|
|
888
888
|
|
|
889
|
-
|
|
889
|
+
import sys
|
|
890
|
+
|
|
891
|
+
# Locate the man page: in a source checkout it is in docs/, in an
|
|
892
|
+
# installed package it is under <prefix>/share/man/man1
|
|
890
893
|
here = os.path.dirname(os.path.abspath(__file__))
|
|
891
|
-
man_src =
|
|
892
|
-
|
|
894
|
+
man_src = next(
|
|
895
|
+
(p for p in (
|
|
896
|
+
os.path.normpath(os.path.join(here, '..', 'docs', 'lixplore.1')),
|
|
897
|
+
os.path.join(sys.prefix, 'share', 'man', 'man1', 'lixplore.1'),
|
|
898
|
+
) if os.path.isfile(p)),
|
|
899
|
+
None,
|
|
900
|
+
)
|
|
893
901
|
|
|
894
|
-
if
|
|
902
|
+
if man_src is None:
|
|
895
903
|
print("Error: man page file not found in the package.")
|
|
896
904
|
print("If you installed via pip/pipx, try cloning the repo and running:")
|
|
897
905
|
print(" bash docs/install_man_page.sh")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Templates package for Lixplore
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "IEEE",
|
|
3
|
+
"description": "Export format for IEEE publication submissions",
|
|
4
|
+
"format": "bibtex",
|
|
5
|
+
"citation_style": "ieee",
|
|
6
|
+
"fields": ["title", "authors", "journal", "year", "doi"],
|
|
7
|
+
"field_order": ["authors", "title", "journal", "year", "doi"],
|
|
8
|
+
"author_format": "F. Last",
|
|
9
|
+
"max_authors": 6,
|
|
10
|
+
"abbreviate_journal": true,
|
|
11
|
+
"include_abstract": false,
|
|
12
|
+
"sort": "relevant",
|
|
13
|
+
"deduplicate": "auto",
|
|
14
|
+
"enrich": ["crossref"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Nature",
|
|
3
|
+
"description": "Export format for Nature journal submissions",
|
|
4
|
+
"format": "bibtex",
|
|
5
|
+
"citation_style": "apa",
|
|
6
|
+
"fields": ["title", "authors", "journal", "year", "doi"],
|
|
7
|
+
"field_order": ["authors", "title", "journal", "year", "doi"],
|
|
8
|
+
"author_format": "Last, F.",
|
|
9
|
+
"max_authors": 10,
|
|
10
|
+
"abbreviate_journal": false,
|
|
11
|
+
"include_abstract": false,
|
|
12
|
+
"sort": "newest",
|
|
13
|
+
"deduplicate": "strict",
|
|
14
|
+
"enrich": ["crossref"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Science",
|
|
3
|
+
"description": "Export format for Science journal submissions",
|
|
4
|
+
"format": "bibtex",
|
|
5
|
+
"citation_style": "chicago",
|
|
6
|
+
"fields": ["title", "authors", "journal", "year", "doi", "abstract"],
|
|
7
|
+
"field_order": ["authors", "year", "title", "journal", "doi", "abstract"],
|
|
8
|
+
"author_format": "Last F.",
|
|
9
|
+
"max_authors": 8,
|
|
10
|
+
"abbreviate_journal": true,
|
|
11
|
+
"include_abstract": true,
|
|
12
|
+
"sort": "newest",
|
|
13
|
+
"deduplicate": "auto",
|
|
14
|
+
"enrich": ["crossref", "pubmed"]
|
|
15
|
+
}
|
|
@@ -21,9 +21,9 @@ except ImportError:
|
|
|
21
21
|
XLSX_AVAILABLE = False
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
# Default export directory
|
|
25
|
-
|
|
26
|
-
DEFAULT_EXPORT_DIR = os.path.join(
|
|
24
|
+
# Default export directory: ./exports in the folder lixplore is run from.
|
|
25
|
+
# (Not next to the package: when installed that is site-packages, often read-only.)
|
|
26
|
+
DEFAULT_EXPORT_DIR = os.path.join(os.getcwd(), "exports")
|
|
27
27
|
|
|
28
28
|
# Define all export format folders (one folder per format type)
|
|
29
29
|
EXPORT_FOLDERS = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lixplore-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Academic Literature Search & Export CLI Tool
|
|
5
5
|
Author-email: Balasubramanian Periannan <balathepharmacist@gmail.com>
|
|
6
6
|
Maintainer-email: Balasubramanian Periannan <balathepharmacist@gmail.com>
|
|
@@ -64,6 +64,10 @@ lixplore/sources/crossref.py
|
|
|
64
64
|
lixplore/sources/doaj.py
|
|
65
65
|
lixplore/sources/europepmc.py
|
|
66
66
|
lixplore/sources/pubmed.py
|
|
67
|
+
lixplore/templates/__init__.py
|
|
68
|
+
lixplore/templates/ieee.json
|
|
69
|
+
lixplore/templates/nature.json
|
|
70
|
+
lixplore/templates/science.json
|
|
67
71
|
lixplore/tui/__init__.py
|
|
68
72
|
lixplore/tui/app.py
|
|
69
73
|
lixplore/tui/modals.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lixplore-cli"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.1"
|
|
8
8
|
description = "Academic Literature Search & Export CLI Tool"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -85,11 +85,12 @@ lixplore = "lixplore.cli:main"
|
|
|
85
85
|
lixplore-alerts = "lixplore.alerts.runner:main"
|
|
86
86
|
|
|
87
87
|
[tool.setuptools]
|
|
88
|
-
packages = ["lixplore", "lixplore.sources", "lixplore.utils", "lixplore.alerts", "lixplore.tui"]
|
|
88
|
+
packages = ["lixplore", "lixplore.sources", "lixplore.utils", "lixplore.alerts", "lixplore.tui", "lixplore.templates"]
|
|
89
89
|
|
|
90
90
|
[tool.setuptools.package-data]
|
|
91
91
|
lixplore = ["py.typed"]
|
|
92
92
|
"lixplore.alerts" = ["env.example"]
|
|
93
|
+
"lixplore.templates" = ["*.json"]
|
|
93
94
|
|
|
94
95
|
[tool.setuptools.data-files]
|
|
95
96
|
"share/man/man1" = ["docs/lixplore.1"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|