jupyter-duckdb 1.1.3.1__tar.gz → 1.1.3.4__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 (90) hide show
  1. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/PKG-INFO +12 -2
  2. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/setup.py +1 -7
  3. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/kernel.py +22 -0
  4. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/magics/MagicCommandHandler.py +1 -1
  5. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/jupyter_duckdb.egg-info/PKG-INFO +12 -2
  6. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/README.md +0 -0
  7. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/setup.cfg +0 -0
  8. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/__init__.py +0 -0
  9. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/__main__.py +0 -0
  10. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/Column.py +0 -0
  11. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/Connection.py +0 -0
  12. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/Constraint.py +0 -0
  13. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/DatabaseError.py +0 -0
  14. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/ForeignKey.py +0 -0
  15. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/Table.py +0 -0
  16. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/__init__.py +0 -0
  17. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/error/EmptyResultError.py +0 -0
  18. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/error/__init__.py +0 -0
  19. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/duckdb/Connection.py +0 -0
  20. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/duckdb/__init__.py +0 -0
  21. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/postgres/Connection.py +0 -0
  22. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/postgres/__init__.py +0 -0
  23. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/postgres/util.py +0 -0
  24. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/sqlite/Connection.py +0 -0
  25. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/db/implementation/sqlite/__init__.py +0 -0
  26. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/kernel.json +0 -0
  27. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/magics/MagicCommand.py +0 -0
  28. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/magics/MagicCommandCallback.py +0 -0
  29. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/magics/MagicCommandException.py +0 -0
  30. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/magics/__init__.py +0 -0
  31. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/DCParser.py +0 -0
  32. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/LogicParser.py +0 -0
  33. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/RAParser.py +0 -0
  34. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/__init__.py +0 -0
  35. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/DCOperand.py +0 -0
  36. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/LogicElement.py +0 -0
  37. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/LogicOperand.py +0 -0
  38. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/LogicOperator.py +0 -0
  39. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/RABinaryOperator.py +0 -0
  40. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/RAElement.py +0 -0
  41. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/RAOperand.py +0 -0
  42. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/RAOperator.py +0 -0
  43. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/RAUnaryOperator.py +0 -0
  44. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/__init__.py +0 -0
  45. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Add.py +0 -0
  46. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/And.py +0 -0
  47. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/ArrowLeft.py +0 -0
  48. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/ConditionalSet.py +0 -0
  49. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Cross.py +0 -0
  50. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Difference.py +0 -0
  51. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Divide.py +0 -0
  52. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Division.py +0 -0
  53. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Equal.py +0 -0
  54. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/GreaterThan.py +0 -0
  55. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/GreaterThanEqual.py +0 -0
  56. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Intersection.py +0 -0
  57. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Join.py +0 -0
  58. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/LessThan.py +0 -0
  59. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/LessThanEqual.py +0 -0
  60. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Minus.py +0 -0
  61. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Multiply.py +0 -0
  62. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Or.py +0 -0
  63. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Unequal.py +0 -0
  64. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/Union.py +0 -0
  65. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/binary/__init__.py +0 -0
  66. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/unary/Not.py +0 -0
  67. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/unary/Projection.py +0 -0
  68. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/unary/Rename.py +0 -0
  69. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/unary/Selection.py +0 -0
  70. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/elements/unary/__init__.py +0 -0
  71. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/tokenizer/Token.py +0 -0
  72. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/tokenizer/Tokenizer.py +0 -0
  73. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/tokenizer/__init__.py +0 -0
  74. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/util/RenamableColumn.py +0 -0
  75. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/util/RenamableColumnList.py +0 -0
  76. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/parser/util/__init__.py +0 -0
  77. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/util/ResultSetComparator.py +0 -0
  78. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/util/__init__.py +0 -0
  79. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/util/formatting.py +0 -0
  80. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/visualization/Drawer.py +0 -0
  81. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/visualization/RATreeDrawer.py +0 -0
  82. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/visualization/SchemaDrawer.py +0 -0
  83. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/duckdb_kernel/visualization/__init__.py +0 -0
  84. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/jupyter_duckdb.egg-info/SOURCES.txt +0 -0
  85. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/jupyter_duckdb.egg-info/dependency_links.txt +0 -0
  86. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/jupyter_duckdb.egg-info/requires.txt +0 -0
  87. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/src/jupyter_duckdb.egg-info/top_level.txt +0 -0
  88. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/test/test_dc.py +0 -0
  89. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/test/test_ra.py +0 -0
  90. {jupyter_duckdb-1.1.3.1 → jupyter_duckdb-1.1.3.4}/test/test_result_comparison.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: jupyter-duckdb
3
- Version: 1.1.3.1
3
+ Version: 1.1.3.4
4
4
  Summary: a basic wrapper kernel for DuckDB
5
5
  Home-page: https://github.com/erictroebs/jupyter-duckdb
6
6
  Author: Eric Tröbs
@@ -15,6 +15,16 @@ Requires-Dist: jupyter
15
15
  Requires-Dist: graphviz==0.20.3
16
16
  Requires-Dist: checkmarkandcross
17
17
  Requires-Dist: duckdb==1.1.3
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: home-page
24
+ Dynamic: project-url
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
18
28
 
19
29
  # DuckDB Kernel for Jupyter
20
30
 
@@ -1,13 +1,7 @@
1
1
  import os
2
- import re
3
- from datetime import datetime
4
2
 
5
3
  from setuptools import setup, find_packages
6
4
 
7
- # version
8
- version = os.getenv('PACKAGE_VERSION', '1.0')
9
- version = re.sub(r'[^dev0-9._]', '', version)
10
-
11
5
  # install requires
12
6
  install_requires = [
13
7
  'jupyter',
@@ -25,7 +19,7 @@ with open('README.md', 'r', encoding='utf-8') as file:
25
19
  # main setup call
26
20
  setup(
27
21
  name='jupyter-duckdb',
28
- version=version,
22
+ version=os.getenv('PACKAGE_VERSION', '1.0'),
29
23
  author='Eric Tröbs',
30
24
  author_email='eric.troebs@tu-ilmenau.de',
31
25
  description='a basic wrapper kernel for DuckDB',
@@ -1,3 +1,4 @@
1
+ import csv
1
2
  import json
2
3
  import math
3
4
  import os
@@ -43,6 +44,7 @@ class DuckDBKernel(Kernel):
43
44
  MagicCommand('max_rows').arg('count').on(self._max_rows_magic),
44
45
  MagicCommand('query_max_rows').arg('count').on(self._query_max_rows_magic),
45
46
  MagicCommand('schema').flag('td').opt('only').on(self._schema_magic),
47
+ MagicCommand('store').arg('file').flag('noheader').result(True).on(self._store_magic),
46
48
  MagicCommand('ra').flag('analyze').code(True).on(self._ra_magic),
47
49
  MagicCommand('dc').code(True).on(self._dc_magic)
48
50
  )
@@ -434,6 +436,26 @@ class DuckDBKernel(Kernel):
434
436
 
435
437
  self.print_data(svg)
436
438
 
439
+ def _store_magic(self, silent: bool, result_columns: List[str], result: List[List], file: str, noheader: bool):
440
+ _, ext = file.rsplit('.', 1)
441
+
442
+ # csv
443
+ if ext == 'csv':
444
+ with open(file, 'w', encoding='utf-8') as f:
445
+ writer = csv.writer(f)
446
+
447
+ if not noheader:
448
+ writer.writerow(result_columns)
449
+
450
+ for row in result:
451
+ writer.writerow(row)
452
+
453
+ self.print(f'result stored to {file}', name='stderr')
454
+
455
+ # unsupported
456
+ else:
457
+ raise ValueError(f'extension {ext} not supported')
458
+
437
459
  def _ra_magic(self, silent: bool, code: str, analyze: bool):
438
460
  if self._db is None:
439
461
  raise AssertionError('load a database first')
@@ -20,7 +20,7 @@ class MagicCommandHandler:
20
20
 
21
21
  while True:
22
22
  # ensure code starts with '%' or '%%' but not with '%%%'
23
- match = re.match(r'^%{1,2}([^% ]+?)($| .+?$)', code, re.MULTILINE | re.IGNORECASE)
23
+ match = re.match(r'^%{1,2}([^% ]+?)([ \t]*$| .+?$)', code, re.MULTILINE | re.IGNORECASE)
24
24
 
25
25
  if match is None:
26
26
  break
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: jupyter-duckdb
3
- Version: 1.1.3.1
3
+ Version: 1.1.3.4
4
4
  Summary: a basic wrapper kernel for DuckDB
5
5
  Home-page: https://github.com/erictroebs/jupyter-duckdb
6
6
  Author: Eric Tröbs
@@ -15,6 +15,16 @@ Requires-Dist: jupyter
15
15
  Requires-Dist: graphviz==0.20.3
16
16
  Requires-Dist: checkmarkandcross
17
17
  Requires-Dist: duckdb==1.1.3
18
+ Dynamic: author
19
+ Dynamic: author-email
20
+ Dynamic: classifier
21
+ Dynamic: description
22
+ Dynamic: description-content-type
23
+ Dynamic: home-page
24
+ Dynamic: project-url
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
18
28
 
19
29
  # DuckDB Kernel for Jupyter
20
30