jupyter / notebook

Jupyter Interactive Notebook
https://jupyter-notebook.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
11.76k stars 4.99k forks source link

Bad case with .ipynb and proposal for .jnb extensions files as new type standard #6977

Closed ManPython closed 1 year ago

ManPython commented 1 year ago

Problem

Proposed Solution

config = [
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1968473cdaee46cbb4dda2f214759397",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
  1. New option can be as .jnb not .ipynb to differentiate solutions for Jupyter
  2. We can more easy convert nomal python code to jupyter then and vice versa
  3. Jupyter/Lab can conver old style .ipynb to .jnb or .inb

Additional context

But the important is to have normal python cone without quotes..

What about asign code to the cel? Wel.. decorator can be for this above comment..

@jupyter_cell = 1
# This program prints Hello, world!

print('Hello, world!')
@cell = 1
# Python Program to find the area of triangle

a = 5
b = 6
c = 7
@cell = 2
# Uncomment below to take inputs from the user
# a = float(input('Enter first side: '))
# b = float(input('Enter second side: '))
# c = float(input('Enter third side: '))

@cell = 3 # note about 2 lines enter, it's mind next cell and not need decorator @cell 
# calculate the semi-perimeter
s = (a + b + c) / 2

@cell = 4
# calculate the area
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('The area of the triangle is %0.2f' %area)

or with comment as philosophy, that if no decorator as @cell or @jupyter_cell then code is still in this same cell

# @cell = 4
# calculate the area
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('The area of the triangle is %0.2f' %area)

Soo.. all is about to move config json to object and steering this data by class/objects. In some configs user can call decaorator to operate around by object eg.

test_object  = {"@cell" : "4"} #kill or reset, execute cyclical etc.

The decorator is not really required, eg. convention can be that 2 lines betwen rows mind that is opened next cell Is some var are reserved for jupyter then decorator can be above as @jupyter or @ipynb to proxing var as free to solve conflicts.

Forward to community that evolution is coming ; )

### Tasks
- [ ] move config vars to normal python format code
- [ ] implement decorator for vars, cels
- [ ] implement 2 rows as next cells
- [ ] recognize new extension and standard as .jnb
- [ ] @cell = 1 as id for cells
- [ ] comment # @cell = 1 as id for cells
- [ ] call cell as: test_object  = {"@cell" : "4"}
jtpio commented 1 year ago

Thanks @ManPython for opening the issue.

Since this issue is more about the Notebook format and not necessarily related to the Notebook user interface, maybe the discussion could be moved to a different place so it gets more visibility from other folks working with notebooks?

For example this issue in the Jupyter Enhancement Proposal repo might be relevant: https://github.com/jupyter/enhancement-proposals/issues/102

JasonWeill commented 1 year ago

Per @jtpio, this would be better submitted as a Jupyter Enhancement Proposal, either as a new JEP or as a comment to an existing JEP.