prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  line_percent.py does not work offline
  We need all examples to work offline. Currently ``line_percent.py`` uses ``pd.read_json`` from a URL.
  
  The example should probably use a URL plus a filter.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `altair/examples/boxplot_max_min.py`
  Content:
  ```
  1 """
  2 Box Plot with Min/Max Whiskers
  3 ------------------------------
  4 This example shows how to make a basic box plot using US Population data from 2000.
  5 """
  6 # category: other charts
  7 import altair as alt
  8 from vega_datasets import data
  9 
  10 source = data.population()
  11 
  12 base = alt.Chart(source)
  13 
  14 # Define aggregate fields
  15 lower_box = 'q1(people):Q'
  16 lower_whisker = 'min(people):Q'
  17 upper_box = 'q3(people):Q'
  18 upper_whisker = 'max(people):Q'
  19 
  20 # Compose each layer individually
  21 lower_plot = base.mark_rule().encode(
  22     y=alt.Y(lower_whisker, title="population"),
  23     y2=lower_box,
  24     x='age:O'
  25 )
  26 
  27 middle_plot = base.mark_bar(size=5.0).encode(
  28     y=lower_box,
  29     y2=upper_box,
  30     x='age:O'
  31 )
  32 
  33 upper_plot = base.mark_rule().encode(
  34     y=upper_whisker,
  35     y2=upper_box,
  36     x='age:O'
  37 )
  38 
  39 middle_tick = base.mark_tick(
  40     color='white',
  41     size=5.0
  42 ).encode(
  43     y='median(people):Q',
  44     x='age:O',
  45 )
  46 
  47 lower_plot + middle_plot + upper_plot + middle_tick
  48
  ```
  
  Path: `altair/examples/line_percent.py`
  Content:
  ```
  1 """
  2 Line Chart with Percent axis
  3 ----------------------------
  4 This example shows how to format the tick labels of the y-axis of a chart as percentages.
  5 """
  6 # category: line charts
  7 import altair as alt
  8 import pandas as pd
  9 from vega_datasets import data
  10 
  11 source = pd.read_json(data.jobs.url)
  12 welders = source[source.job == 'Welder']
  13 
  14 alt.Chart(welders).mark_line().encode(
  15     alt.X('year:O'),
  16     alt.Y('perc:Q', axis=alt.Axis(format='%')),
  17     color='sex:N'
  18 )
  19
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/altair/examples/boxplot_max_min.py b/altair/examples/boxplot_max_min.py
  --- a/altair/examples/boxplot_max_min.py
  +++ b/altair/examples/boxplot_max_min.py
  @@ -7,7 +7,7 @@
   import altair as alt
   from vega_datasets import data
   
  -source = data.population()
  +source = data.population.url
   
   base = alt.Chart(source)
   
  diff --git a/altair/examples/line_percent.py b/altair/examples/line_percent.py
  --- a/altair/examples/line_percent.py
  +++ b/altair/examples/line_percent.py
  @@ -5,14 +5,14 @@
   """
   # category: line charts
   import altair as alt
  -import pandas as pd
   from vega_datasets import data
   
  -source = pd.read_json(data.jobs.url)
  -welders = source[source.job == 'Welder']
  +source = data.jobs.url
   
  -alt.Chart(welders).mark_line().encode(
  +alt.Chart(source).mark_line().encode(
       alt.X('year:O'),
       alt.Y('perc:Q', axis=alt.Axis(format='%')),
       color='sex:N'
  +).transform_filter(
  +    alt.datum.job == 'Welder'
   )
  
verification_info: {"golden_diff": "diff --git a/altair/examples/boxplot_max_min.py b/altair/examples/boxplot_max_min.py\n--- a/altair/examples/boxplot_max_min.py\n+++ b/altair/examples/boxplot_max_min.py\n@@ -7,7 +7,7 @@\n import altair as alt\n from vega_datasets import data\n \n-source = data.population()\n+source = data.population.url\n \n base = alt.Chart(source)\n \ndiff --git a/altair/examples/line_percent.py b/altair/examples/line_percent.py\n--- a/altair/examples/line_percent.py\n+++ b/altair/examples/line_percent.py\n@@ -5,14 +5,14 @@\n \"\"\"\n # category: line charts\n import altair as alt\n-import pandas as pd\n from vega_datasets import data\n \n-source = pd.read_json(data.jobs.url)\n-welders = source[source.job == 'Welder']\n+source = data.jobs.url\n \n-alt.Chart(welders).mark_line().encode(\n+alt.Chart(source).mark_line().encode(\n     alt.X('year:O'),\n     alt.Y('perc:Q', axis=alt.Axis(format='%')),\n     color='sex:N'\n+).transform_filter(\n+    alt.datum.job == 'Welder'\n )\n", "issue": "line_percent.py does not work offline\nWe need all examples to work offline. Currently ``line_percent.py`` uses ``pd.read_json`` from a URL.\r\n\r\nThe example should probably use a URL plus a filter.\n", "before_files": [{"content": "\"\"\"\nBox Plot with Min/Max Whiskers\n------------------------------\nThis example shows how to make a basic box plot using US Population data from 2000.\n\"\"\"\n# category: other charts\nimport altair as alt\nfrom vega_datasets import data\n\nsource = data.population()\n\nbase = alt.Chart(source)\n\n# Define aggregate fields\nlower_box = 'q1(people):Q'\nlower_whisker = 'min(people):Q'\nupper_box = 'q3(people):Q'\nupper_whisker = 'max(people):Q'\n\n# Compose each layer individually\nlower_plot = base.mark_rule().encode(\n    y=alt.Y(lower_whisker, title=\"population\"),\n    y2=lower_box,\n    x='age:O'\n)\n\nmiddle_plot = base.mark_bar(size=5.0).encode(\n    y=lower_box,\n    y2=upper_box,\n    x='age:O'\n)\n\nupper_plot = base.mark_rule().encode(\n    y=upper_whisker,\n    y2=upper_box,\n    x='age:O'\n)\n\nmiddle_tick = base.mark_tick(\n    color='white',\n    size=5.0\n).encode(\n    y='median(people):Q',\n    x='age:O',\n)\n\nlower_plot + middle_plot + upper_plot + middle_tick\n", "path": "altair/examples/boxplot_max_min.py"}, {"content": "\"\"\"\nLine Chart with Percent axis\n----------------------------\nThis example shows how to format the tick labels of the y-axis of a chart as percentages.\n\"\"\"\n# category: line charts\nimport altair as alt\nimport pandas as pd\nfrom vega_datasets import data\n\nsource = pd.read_json(data.jobs.url)\nwelders = source[source.job == 'Welder']\n\nalt.Chart(welders).mark_line().encode(\n    alt.X('year:O'),\n    alt.Y('perc:Q', axis=alt.Axis(format='%')),\n    color='sex:N'\n)\n", "path": "altair/examples/line_percent.py"}], "after_files": [{"content": "\"\"\"\nBox Plot with Min/Max Whiskers\n------------------------------\nThis example shows how to make a basic box plot using US Population data from 2000.\n\"\"\"\n# category: other charts\nimport altair as alt\nfrom vega_datasets import data\n\nsource = data.population.url\n\nbase = alt.Chart(source)\n\n# Define aggregate fields\nlower_box = 'q1(people):Q'\nlower_whisker = 'min(people):Q'\nupper_box = 'q3(people):Q'\nupper_whisker = 'max(people):Q'\n\n# Compose each layer individually\nlower_plot = base.mark_rule().encode(\n    y=alt.Y(lower_whisker, title=\"population\"),\n    y2=lower_box,\n    x='age:O'\n)\n\nmiddle_plot = base.mark_bar(size=5.0).encode(\n    y=lower_box,\n    y2=upper_box,\n    x='age:O'\n)\n\nupper_plot = base.mark_rule().encode(\n    y=upper_whisker,\n    y2=upper_box,\n    x='age:O'\n)\n\nmiddle_tick = base.mark_tick(\n    color='white',\n    size=5.0\n).encode(\n    y='median(people):Q',\n    x='age:O',\n)\n\nlower_plot + middle_plot + upper_plot + middle_tick\n", "path": "altair/examples/boxplot_max_min.py"}, {"content": "\"\"\"\nLine Chart with Percent axis\n----------------------------\nThis example shows how to format the tick labels of the y-axis of a chart as percentages.\n\"\"\"\n# category: line charts\nimport altair as alt\nfrom vega_datasets import data\n\nsource = data.jobs.url\n\nalt.Chart(source).mark_line().encode(\n    alt.X('year:O'),\n    alt.Y('perc:Q', axis=alt.Axis(format='%')),\n    color='sex:N'\n).transform_filter(\n    alt.datum.job == 'Welder'\n)\n", "path": "altair/examples/line_percent.py"}]}