From b4512538d87e0c382170d28060776099904184af Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Tue, 4 Nov 2025 23:08:26 -0500 Subject: [PATCH 1/6] Add builtin_items data to whats_left.html --- _data/whats_left/builtin_items.csv | 37 +++++++++++++++++++++++++++++ _layouts/whats_left.html | 16 +++++++++++++ scripts/whats_left_builtin_items.sh | 12 ++++++++++ 3 files changed, 65 insertions(+) create mode 100644 _data/whats_left/builtin_items.csv create mode 100755 scripts/whats_left_builtin_items.sh diff --git a/_data/whats_left/builtin_items.csv b/_data/whats_left/builtin_items.csv new file mode 100644 index 000000000..bf05fdec9 --- /dev/null +++ b/_data/whats_left/builtin_items.csv @@ -0,0 +1,37 @@ +builtin,name,is_inherited +BaseException,BaseException.__getattribute__,(inherited) +BaseException,BaseException.add_note, +NoneType,NoneType.__eq__,(inherited) +NoneType,NoneType.__ge__,(inherited) +NoneType,NoneType.__gt__,(inherited) +NoneType,NoneType.__hash__,(inherited) +NoneType,NoneType.__le__,(inherited) +NoneType,NoneType.__lt__,(inherited) +NoneType,NoneType.__ne__,(inherited) +bool,bool.__invert__,(inherited) +bytearray,bytearray.__buffer__, +bytearray,bytearray.__getattribute__,(inherited) +bytearray,bytearray.__release_buffer__, +bytearray,bytearray.__str__,(inherited) +bytes,bytes.__buffer__, +bytes,bytes.__getattribute__,(inherited) +bytes,bytes.__str__,(inherited) +classmethod,classmethod.__init__,(inherited) +complex,complex.__getattribute__,(inherited) +dict,dict.__getattribute__,(inherited) +dict_items,dict_items.__hash__,(inherited) +enumerate,enumerate.__getattribute__,(inherited) +filter,filter.__getattribute__,(inherited) +int,int.__getattribute__,(inherited) +list,list.__getattribute__,(inherited) +map,map.__getattribute__,(inherited) +memoryview,memoryview.__buffer__, +memoryview,memoryview.__getattribute__,(inherited) +memoryview,memoryview.__release_buffer__, +memoryview,memoryview._from_flags, +property,property.__getattribute__,(inherited) +range,range.__getattribute__,(inherited) +set,set.__getattribute__,(inherited) +slice,slice.__getattribute__,(inherited) +tuple,tuple.__getattribute__,(inherited) +zip,zip.__getattribute__,(inherited) diff --git a/_layouts/whats_left.html b/_layouts/whats_left.html index 2db86387f..93eec3b4e 100644 --- a/_layouts/whats_left.html +++ b/_layouts/whats_left.html @@ -40,4 +40,20 @@ {% endfor %} + +
What's left: Built-in Items
+ {% assign previous_builtin = "" %} + {% comment %}
    {% endcomment %} + {% for item in site.data.whats_left.builtin_items %} + {% if item.builtin != previous_builtin %} + {% if previous_builtin != "" %} +
+ {% endif %} +

{{ item.builtin }}

+
    + {% endif %} +
  1. {{ item.name }} {% if item.is_inherited %}{{ item.is_inherited }}{% endif %}
  2. + {% assign previous_builtin = item.builtin %} + {% endfor %} +
diff --git a/scripts/whats_left_builtin_items.sh b/scripts/whats_left_builtin_items.sh new file mode 100755 index 000000000..cb2f8f5d1 --- /dev/null +++ b/scripts/whats_left_builtin_items.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# create directory if it doesn't exist +mkdir -p ../_data/whats_left + +# start a new csv file for builtin items +echo "builtin,name,is_inherited" > ../_data/whats_left/builtin_items.csv + +# read the temp file +# in awk: +sed -n '/# builtin items/{n;:a;/^$/q;p;n;ba;}' ../_data/whats_left.temp | \ +awk -v OFS=',' '{split($1,a,".");if(index($0,FS)>0){b=substr($0,index($0,FS)+1)}else{b=""};print a[1],$1,b}' >> ../_data/whats_left/builtin_items.csv From 417863874015d67808b0bd4eba8598754a4b7745 Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Tue, 4 Nov 2025 23:37:46 -0500 Subject: [PATCH 2/6] Rework logic to group items by the "builtin" key This obviates the need for the Prettier workaround. --- _layouts/whats_left.html | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/_layouts/whats_left.html b/_layouts/whats_left.html index 93eec3b4e..a067592cf 100644 --- a/_layouts/whats_left.html +++ b/_layouts/whats_left.html @@ -42,18 +42,15 @@
What's left: Built-in Items
- {% assign previous_builtin = "" %} - {% comment %}
    {% endcomment %} - {% for item in site.data.whats_left.builtin_items %} - {% if item.builtin != previous_builtin %} - {% if previous_builtin != "" %} -
- {% endif %} -

{{ item.builtin }}

-
    - {% endif %} -
  1. {{ item.name }} {% if item.is_inherited %}{{ item.is_inherited }}{% endif %}
  2. - {% assign previous_builtin = item.builtin %} + {% assign items_by_builtin = site.data.whats_left.builtin_items | group_by: "builtin" %} + {% for group in items_by_builtin %} +

    {{ group.name }}

    +
    +
      + {% for item in group.items %} +
    1. {{ item.name }} {% if item.is_inherited %}{{ item.is_inherited }}{% endif %}
    2. + {% endfor %} +
    +
    {% endfor %} -
From c621759f56da17e28e7aeaf0dd73179910276666 Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Wed, 5 Nov 2025 21:37:02 -0500 Subject: [PATCH 3/6] Rework script to address review comments --- scripts/whats_left_builtin_items.sh | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/scripts/whats_left_builtin_items.sh b/scripts/whats_left_builtin_items.sh index cb2f8f5d1..e1d5bc576 100755 --- a/scripts/whats_left_builtin_items.sh +++ b/scripts/whats_left_builtin_items.sh @@ -1,12 +1,29 @@ #!/bin/bash +set -euo pipefail # create directory if it doesn't exist mkdir -p ../_data/whats_left -# start a new csv file for builtin items -echo "builtin,name,is_inherited" > ../_data/whats_left/builtin_items.csv +# exit violently if the temp file does not exist +if [ ! -f ../_data/whats_left.temp ]; then + exit 1 +fi -# read the temp file -# in awk: -sed -n '/# builtin items/{n;:a;/^$/q;p;n;ba;}' ../_data/whats_left.temp | \ -awk -v OFS=',' '{split($1,a,".");if(index($0,FS)>0){b=substr($0,index($0,FS)+1)}else{b=""};print a[1],$1,b}' >> ../_data/whats_left/builtin_items.csv +# generate the CSV file for builtin items from the temp file +awk -f - ../_data/whats_left.temp > ../_data/whats_left/builtin_items.csv <<'EOF' +BEGIN { + OFS="," + print "builtin,name,is_inherited" +} +/^# builtin items/ { in_section=1; next } +/^$/ { if (in_section) exit } +in_section { + split($1, a, ".") + rest = "" + idx = index($0, " ") + if (idx > 0) { + rest = substr($0, idx+1) + } + print a[1], $1, rest +} +EOF From 5ac3b5be9c1c12abd4993575447d8022b0b33f93 Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Wed, 5 Nov 2025 21:42:42 -0500 Subject: [PATCH 4/6] Reflow space around conditional in list item --- _layouts/whats_left.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_layouts/whats_left.html b/_layouts/whats_left.html index a067592cf..19d382ee9 100644 --- a/_layouts/whats_left.html +++ b/_layouts/whats_left.html @@ -48,7 +48,7 @@

{{ group.name }}

    {% for item in group.items %} -
  1. {{ item.name }} {% if item.is_inherited %}{{ item.is_inherited }}{% endif %}
  2. +
  3. {{ item.name }}{% if item.is_inherited %} {{ item.is_inherited }}{% endif %}
  4. {% endfor %}
From e46a98755452735118736f967decbc52621dae20 Mon Sep 17 00:00:00 2001 From: fanninpm Date: Wed, 5 Nov 2025 21:48:01 -0500 Subject: [PATCH 5/6] Give reason for early exit in shell script Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- scripts/whats_left_builtin_items.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/whats_left_builtin_items.sh b/scripts/whats_left_builtin_items.sh index e1d5bc576..301917c20 100755 --- a/scripts/whats_left_builtin_items.sh +++ b/scripts/whats_left_builtin_items.sh @@ -6,6 +6,7 @@ mkdir -p ../_data/whats_left # exit violently if the temp file does not exist if [ ! -f ../_data/whats_left.temp ]; then + echo "error: input file ../_data/whats_left.temp not found" >&2 exit 1 fi From fae0be0c795f1c1a1a54b437c7b3577fbc676cc2 Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Wed, 5 Nov 2025 22:08:44 -0500 Subject: [PATCH 6/6] Replace paths relative to execution with paths relative to script --- scripts/whats_left_builtin_items.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/scripts/whats_left_builtin_items.sh b/scripts/whats_left_builtin_items.sh index 301917c20..42550ad5a 100755 --- a/scripts/whats_left_builtin_items.sh +++ b/scripts/whats_left_builtin_items.sh @@ -1,17 +1,26 @@ #!/bin/bash set -euo pipefail +# paths where the script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +DATA_DIR="$PROJECT_ROOT/_data" +TEMP_FILE="$DATA_DIR/whats_left.temp" +OUTPUT_DIR="$DATA_DIR/whats_left" +OUTPUT_FILE="$OUTPUT_DIR/builtin_items.csv" + # create directory if it doesn't exist -mkdir -p ../_data/whats_left +mkdir -p "$OUTPUT_DIR" # exit violently if the temp file does not exist -if [ ! -f ../_data/whats_left.temp ]; then - echo "error: input file ../_data/whats_left.temp not found" >&2 +if [ ! -f "$TEMP_FILE" ]; then + echo "error: input file $TEMP_FILE not found" >&2 exit 1 fi # generate the CSV file for builtin items from the temp file -awk -f - ../_data/whats_left.temp > ../_data/whats_left/builtin_items.csv <<'EOF' +awk -f - "$TEMP_FILE" > "$OUTPUT_FILE" <<'EOF' BEGIN { OFS="," print "builtin,name,is_inherited"