jupyter-duckdb 1.1.2.1__tar.gz → 1.1.2.3__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.2.1 → jupyter_duckdb-1.1.2.3}/PKG-INFO +1 -1
  2. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/Column.py +2 -1
  3. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/duckdb/Connection.py +5 -4
  4. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/postgres/Connection.py +4 -3
  5. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/sqlite/Connection.py +4 -3
  6. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/util/RenamableColumn.py +1 -1
  7. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/visualization/SchemaDrawer.py +3 -0
  8. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/jupyter_duckdb.egg-info/PKG-INFO +1 -1
  9. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/README.md +0 -0
  10. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/setup.cfg +0 -0
  11. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/setup.py +0 -0
  12. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/__init__.py +0 -0
  13. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/__main__.py +0 -0
  14. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/Connection.py +0 -0
  15. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/Constraint.py +0 -0
  16. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/DatabaseError.py +0 -0
  17. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/ForeignKey.py +0 -0
  18. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/Table.py +0 -0
  19. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/__init__.py +0 -0
  20. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/error/EmptyResultError.py +0 -0
  21. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/error/__init__.py +0 -0
  22. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/duckdb/__init__.py +0 -0
  23. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/postgres/__init__.py +0 -0
  24. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/postgres/util.py +0 -0
  25. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/db/implementation/sqlite/__init__.py +0 -0
  26. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/kernel.json +0 -0
  27. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/kernel.py +0 -0
  28. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/magics/MagicCommand.py +0 -0
  29. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/magics/MagicCommandCallback.py +0 -0
  30. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/magics/MagicCommandException.py +0 -0
  31. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/magics/MagicCommandHandler.py +0 -0
  32. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/magics/__init__.py +0 -0
  33. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/DCParser.py +0 -0
  34. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/LogicParser.py +0 -0
  35. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/RAParser.py +0 -0
  36. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/__init__.py +0 -0
  37. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/DCOperand.py +0 -0
  38. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/LogicElement.py +0 -0
  39. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/LogicOperand.py +0 -0
  40. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/LogicOperator.py +0 -0
  41. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/RABinaryOperator.py +0 -0
  42. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/RAElement.py +0 -0
  43. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/RAOperand.py +0 -0
  44. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/RAOperator.py +0 -0
  45. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/RAUnaryOperator.py +0 -0
  46. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/__init__.py +0 -0
  47. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Add.py +0 -0
  48. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/And.py +0 -0
  49. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/ArrowLeft.py +0 -0
  50. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/ConditionalSet.py +0 -0
  51. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Cross.py +0 -0
  52. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Difference.py +0 -0
  53. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Divide.py +0 -0
  54. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Division.py +0 -0
  55. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Equal.py +0 -0
  56. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/GreaterThan.py +0 -0
  57. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/GreaterThanEqual.py +0 -0
  58. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Intersection.py +0 -0
  59. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Join.py +0 -0
  60. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/LessThan.py +0 -0
  61. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/LessThanEqual.py +0 -0
  62. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Minus.py +0 -0
  63. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Multiply.py +0 -0
  64. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Or.py +0 -0
  65. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Unequal.py +0 -0
  66. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/Union.py +0 -0
  67. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/binary/__init__.py +0 -0
  68. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/unary/Not.py +0 -0
  69. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/unary/Projection.py +0 -0
  70. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/unary/Rename.py +0 -0
  71. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/unary/Selection.py +0 -0
  72. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/elements/unary/__init__.py +0 -0
  73. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/tokenizer/Token.py +0 -0
  74. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/tokenizer/Tokenizer.py +0 -0
  75. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/tokenizer/__init__.py +0 -0
  76. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/util/RenamableColumnList.py +0 -0
  77. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/parser/util/__init__.py +0 -0
  78. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/util/ResultSetComparator.py +0 -0
  79. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/util/__init__.py +0 -0
  80. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/util/formatting.py +0 -0
  81. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/visualization/Drawer.py +0 -0
  82. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/visualization/RATreeDrawer.py +0 -0
  83. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/duckdb_kernel/visualization/__init__.py +0 -0
  84. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/jupyter_duckdb.egg-info/SOURCES.txt +0 -0
  85. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/jupyter_duckdb.egg-info/dependency_links.txt +0 -0
  86. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/jupyter_duckdb.egg-info/requires.txt +0 -0
  87. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/src/jupyter_duckdb.egg-info/top_level.txt +0 -0
  88. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/test/test_dc.py +0 -0
  89. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/test/test_ra.py +0 -0
  90. {jupyter_duckdb-1.1.2.1 → jupyter_duckdb-1.1.2.3}/test/test_result_comparison.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jupyter-duckdb
3
- Version: 1.1.2.1
3
+ Version: 1.1.2.3
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
@@ -4,10 +4,11 @@ from .Table import Table
4
4
 
5
5
 
6
6
  class Column:
7
- def __init__(self, table: Table, name: str, data_type: str):
7
+ def __init__(self, table: Table, name: str, data_type: str, null: bool):
8
8
  self.table: Table = table
9
9
  self.name: str = name
10
10
  self.data_type: str = data_type
11
+ self.null: bool = null
11
12
 
12
13
  def __hash__(self):
13
14
  return self.name.__hash__()
@@ -48,7 +48,7 @@ class Connection(Base):
48
48
 
49
49
  def analyze(self) -> Dict[str, Table]:
50
50
  tables: Dict[str, Table] = {}
51
- constraints: Dict[int, Constraint] = {}
51
+ constraints: Dict[Tuple, Constraint] = {}
52
52
 
53
53
  # Get table names first. In the columns table we can not filter
54
54
  # for base tables and some of the tables might not be contained
@@ -62,18 +62,19 @@ class Connection(Base):
62
62
  tables[table_name] = table
63
63
 
64
64
  # Get column names and data types for each table.
65
- for table_name, column_name, data_type in self.con.execute('''
65
+ for table_name, column_name, data_type, is_nullable in self.con.execute('''
66
66
  SELECT
67
67
  table_name,
68
68
  column_name,
69
- data_type
69
+ data_type,
70
+ is_nullable
70
71
  FROM information_schema.columns
71
72
  ORDER BY ordinal_position ASC
72
73
  ''').fetchall():
73
74
  if table_name in tables:
74
75
  table = tables[table_name]
75
76
 
76
- column = Column(table, column_name, data_type)
77
+ column = Column(table, column_name, data_type, is_nullable == 'YES')
77
78
  table.columns.append(column)
78
79
 
79
80
  # Find primary keys.
@@ -91,18 +91,19 @@ class Connection(Base):
91
91
  tables[table_name] = table
92
92
 
93
93
  # Get column names and data types for each table.
94
- for table_name, column_name, data_type in self.con.execute('''
94
+ for table_name, column_name, data_type, is_nullable in self.con.execute('''
95
95
  SELECT
96
96
  table_name,
97
97
  column_name,
98
- data_type
98
+ data_type,
99
+ is_nullable
99
100
  FROM information_schema.columns
100
101
  ORDER BY ordinal_position ASC
101
102
  ''').fetchall():
102
103
  if table_name in tables:
103
104
  table = tables[table_name]
104
105
 
105
- column = Column(table, column_name, data_type)
106
+ column = Column(table, column_name, data_type, is_nullable == 'YES')
106
107
  table.columns.append(column)
107
108
 
108
109
  # Find primary keys.
@@ -8,6 +8,7 @@ from ...Connection import Connection as Base
8
8
 
9
9
  class Connection(Base):
10
10
  def __init__(self, path: str):
11
+ self.path: str = path
11
12
  self.con: sqlite3.Connection = sqlite3.connect(path)
12
13
  self.con.execute('PRAGMA foreign_keys = ON')
13
14
 
@@ -64,11 +65,11 @@ class Connection(Base):
64
65
 
65
66
  # Get column names and data types for each table.
66
67
  for table_name, table in tables.items():
67
- for column_name, data_type in self.con.execute(f'''
68
- SELECT name, type
68
+ for column_name, data_type, not_null in self.con.execute(f'''
69
+ SELECT name, type, "notnull"
69
70
  FROM pragma_table_info('{table_name}')
70
71
  '''):
71
- column = Column(table, column_name, data_type)
72
+ column = Column(table, column_name, data_type, not_null == 0)
72
73
  table.columns.append(column)
73
74
 
74
75
  # Find primary keys.
@@ -5,7 +5,7 @@ from duckdb_kernel.db import Column
5
5
 
6
6
  class RenamableColumn(Column):
7
7
  def __init__(self, c: Column):
8
- super().__init__(c.table, c.name, c.data_type)
8
+ super().__init__(c.table, c.name, c.data_type, c.null)
9
9
  self.current_name: str = c.name
10
10
 
11
11
  @property
@@ -56,7 +56,10 @@ class SchemaDrawer(Drawer):
56
56
  @staticmethod
57
57
  def __column_to_html(table: Table, column: Column, fk_counter: Dict[str, int]):
58
58
  name = column.name
59
+
59
60
  data_type = column.data_type
61
+ if column.null:
62
+ data_type += ' (NULL)'
60
63
 
61
64
  # extract and style column name
62
65
  if table.primary_key is not None and column in table.primary_key.columns:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jupyter-duckdb
3
- Version: 1.1.2.1
3
+ Version: 1.1.2.3
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