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.
Files changed (98) hide show
  1. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/CHANGELOG.md +9 -0
  2. {lixplore_cli-1.2.0/lixplore_cli.egg-info → lixplore_cli-1.2.1}/PKG-INFO +1 -1
  3. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/commands.py +12 -4
  4. lixplore_cli-1.2.1/lixplore/templates/__init__.py +1 -0
  5. lixplore_cli-1.2.1/lixplore/templates/ieee.json +15 -0
  6. lixplore_cli-1.2.1/lixplore/templates/nature.json +15 -0
  7. lixplore_cli-1.2.1/lixplore/templates/science.json +15 -0
  8. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/export.py +3 -3
  9. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1/lixplore_cli.egg-info}/PKG-INFO +1 -1
  10. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/SOURCES.txt +4 -0
  11. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/pyproject.toml +3 -2
  12. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/LICENSE +0 -0
  13. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/MANIFEST.in +0 -0
  14. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/README.md +0 -0
  15. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/README.md +0 -0
  16. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/changelog.md +0 -0
  17. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/contributing.md +0 -0
  18. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/faq.md +0 -0
  19. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/about/license.md +0 -0
  20. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/ai-integration.md +0 -0
  21. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/automation.md +0 -0
  22. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/custom-apis.md +0 -0
  23. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/profiles.md +0 -0
  24. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/advanced/zotero.md +0 -0
  25. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/automation-examples.md +0 -0
  26. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/integrations.md +0 -0
  27. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/use-cases.md +0 -0
  28. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/examples/workflows.md +0 -0
  29. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/basic-usage.md +0 -0
  30. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/first-search.md +0 -0
  31. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/installation.md +0 -0
  32. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/getting-started/quickstart.md +0 -0
  33. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/alerts.md +0 -0
  34. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/annotations.md +0 -0
  35. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/export.md +0 -0
  36. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/filtering.md +0 -0
  37. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/interactive.md +0 -0
  38. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/pdf.md +0 -0
  39. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/search-sources.md +0 -0
  40. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/guide/search.md +0 -0
  41. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/index.md +0 -0
  42. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/lixplore.1 +0 -0
  43. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/lixplore.md +0 -0
  44. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/annotation-flags.md +0 -0
  45. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/display-flags.md +0 -0
  46. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/export-flags.md +0 -0
  47. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/filter-flags.md +0 -0
  48. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/flags-overview.md +0 -0
  49. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/flags.md +0 -0
  50. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/interactive-flags.md +0 -0
  51. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/search-flags.md +0 -0
  52. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/source-flags.md +0 -0
  53. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/docs/reference/utility-flags.md +0 -0
  54. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/__init__.py +0 -0
  55. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/__main__.py +0 -0
  56. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/__init__.py +0 -0
  57. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/__main__.py +0 -0
  58. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/config.py +0 -0
  59. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/env.example +0 -0
  60. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/gate.py +0 -0
  61. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/notify.py +0 -0
  62. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/render.py +0 -0
  63. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/runner.py +0 -0
  64. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/alerts/state.py +0 -0
  65. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/cli.py +0 -0
  66. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/dispatcher.py +0 -0
  67. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/search.py +0 -0
  68. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/__init__.py +0 -0
  69. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/arxiv.py +0 -0
  70. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/crossref.py +0 -0
  71. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/doaj.py +0 -0
  72. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/europepmc.py +0 -0
  73. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/sources/pubmed.py +0 -0
  74. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/__init__.py +0 -0
  75. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/app.py +0 -0
  76. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/tui/modals.py +0 -0
  77. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/annotations.py +0 -0
  78. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/cache.py +0 -0
  79. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/citations.py +0 -0
  80. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/custom_apis.py +0 -0
  81. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/enhanced_tui.py +0 -0
  82. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/enrichment.py +0 -0
  83. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/interactive_tui.py +0 -0
  84. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/pdf_downloader.py +0 -0
  85. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/profiles.py +0 -0
  86. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/reference_managers.py +0 -0
  87. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/rich_check.py +0 -0
  88. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/shell_mode.py +0 -0
  89. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/statistics.py +0 -0
  90. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/template_engine.py +0 -0
  91. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/terminal.py +0 -0
  92. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore/utils/wizard_mode.py +0 -0
  93. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/dependency_links.txt +0 -0
  94. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/entry_points.txt +0 -0
  95. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/requires.txt +0 -0
  96. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/lixplore_cli.egg-info/top_level.txt +0 -0
  97. {lixplore_cli-1.2.0 → lixplore_cli-1.2.1}/requirements.txt +0 -0
  98. {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.0
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
- # Locate the bundled man page relative to this file
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 = os.path.join(here, '..', 'docs', 'lixplore.1')
892
- man_src = os.path.normpath(man_src)
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 not os.path.isfile(man_src):
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 within the project
25
- PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
26
- DEFAULT_EXPORT_DIR = os.path.join(PROJECT_ROOT, "exports")
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.0
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.0"
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