We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Spider texas_roadhouse is broken
During the global build at 2021-08-11-14-42-19, spider **texas_roadhouse** failed with **0 features** and **0 errors**.

Here's [the log](https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/logs/texas_roadhouse.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/output/texas_roadhouse.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/output/texas_roadhouse.geojson))

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `locations/spiders/texas_roadhouse.py`
Content:
```
1 import json
2 import scrapy
3 from locations.items import GeojsonPointItem
4 from locations.hours import OpeningHours
5 
6 
7 class TexasRoadhouseSpider(scrapy.Spider):
8     name = "texas_roadhouse"
9     item_attributes = { 'brand': "Texas Roadhouse", 'brand_wikidata': "Q7707945" }
10     allowed_domains = ["www.texasroadhouse.com"]
11     start_urls = (
12         'https://www.texasroadhouse.com/sitemap.xml',
13     )
14 
15     def parse_hours(self, store_hours):
16         opening_hours = OpeningHours()
17 
18         for weekday in store_hours:
19             # convert day from full Monday to Mo, etc
20             day = weekday.get('day')[:2]
21             open_time = weekday.get('hours').get('openTime')
22             close_time = weekday.get('hours').get('closeTime')
23             opening_hours.add_range(day=day,
24                                     open_time=open_time,
25                                     close_time=close_time,
26                                     time_format='%I:%M%p')
27 
28         return opening_hours.as_opening_hours()
29 
30     def parse(self, response):
31         response.selector.remove_namespaces()
32         city_urls = response.xpath('//url/loc/text()').extract()
33         for path in city_urls:
34             if path.startswith('https://www.texasroadhouse.com/locations/'):
35                 yield scrapy.Request(
36                     path.strip(),
37                     callback=self.parse_store,
38                 )
39 
40     def parse_store(self, response):
41         data = json.loads(response.xpath('//script/text()').extract_first()[22:-1])
42 
43         properties = {
44             'lat': data['latitude'],
45             'lon': data['longitude'],
46             'ref': data['url'],
47             'name': data['name'],
48             'addr_full': data['address1'],
49             'city': data['city'],
50             'state': data['state'],
51             'postcode': data['postalCode'],
52             'country': data['countryCode'],
53             'phone': data['telephone'],
54             'website': response.urljoin(data['url']),
55             'opening_hours': self.parse_hours(data['schedule']),
56         }
57 
58         yield GeojsonPointItem(**properties)
59
```
--- 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()

```

diff --git a/locations/spiders/texas_roadhouse.py b/locations/spiders/texas_roadhouse.py
--- a/locations/spiders/texas_roadhouse.py
+++ b/locations/spiders/texas_roadhouse.py
@@ -6,7 +6,10 @@
 
 class TexasRoadhouseSpider(scrapy.Spider):
     name = "texas_roadhouse"
-    item_attributes = { 'brand': "Texas Roadhouse", 'brand_wikidata': "Q7707945" }
+    item_attributes = {
+        'brand': "Texas Roadhouse",
+        'brand_wikidata': "Q7707945",
+    }
     allowed_domains = ["www.texasroadhouse.com"]
     start_urls = (
         'https://www.texasroadhouse.com/sitemap.xml',

{"golden_diff": "diff --git a/locations/spiders/texas_roadhouse.py b/locations/spiders/texas_roadhouse.py\n--- a/locations/spiders/texas_roadhouse.py\n+++ b/locations/spiders/texas_roadhouse.py\n@@ -6,7 +6,10 @@\n \n class TexasRoadhouseSpider(scrapy.Spider):\n     name = \"texas_roadhouse\"\n-    item_attributes = { 'brand': \"Texas Roadhouse\", 'brand_wikidata': \"Q7707945\" }\n+    item_attributes = {\n+        'brand': \"Texas Roadhouse\",\n+        'brand_wikidata': \"Q7707945\",\n+    }\n     allowed_domains = [\"www.texasroadhouse.com\"]\n     start_urls = (\n         'https://www.texasroadhouse.com/sitemap.xml',\n", "issue": "Spider texas_roadhouse is broken\nDuring the global build at 2021-08-11-14-42-19, spider **texas_roadhouse** failed with **0 features** and **0 errors**.\n\nHere's [the log](https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/logs/texas_roadhouse.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/output/texas_roadhouse.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-08-11-14-42-19/output/texas_roadhouse.geojson))\n", "before_files": [{"content": "import json\nimport scrapy\nfrom locations.items import GeojsonPointItem\nfrom locations.hours import OpeningHours\n\n\nclass TexasRoadhouseSpider(scrapy.Spider):\n    name = \"texas_roadhouse\"\n    item_attributes = { 'brand': \"Texas Roadhouse\", 'brand_wikidata': \"Q7707945\" }\n    allowed_domains = [\"www.texasroadhouse.com\"]\n    start_urls = (\n        'https://www.texasroadhouse.com/sitemap.xml',\n    )\n\n    def parse_hours(self, store_hours):\n        opening_hours = OpeningHours()\n\n        for weekday in store_hours:\n            # convert day from full Monday to Mo, etc\n            day = weekday.get('day')[:2]\n            open_time = weekday.get('hours').get('openTime')\n            close_time = weekday.get('hours').get('closeTime')\n            opening_hours.add_range(day=day,\n                                    open_time=open_time,\n                                    close_time=close_time,\n                                    time_format='%I:%M%p')\n\n        return opening_hours.as_opening_hours()\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        city_urls = response.xpath('//url/loc/text()').extract()\n        for path in city_urls:\n            if path.startswith('https://www.texasroadhouse.com/locations/'):\n                yield scrapy.Request(\n                    path.strip(),\n                    callback=self.parse_store,\n                )\n\n    def parse_store(self, response):\n        data = json.loads(response.xpath('//script/text()').extract_first()[22:-1])\n\n        properties = {\n            'lat': data['latitude'],\n            'lon': data['longitude'],\n            'ref': data['url'],\n            'name': data['name'],\n            'addr_full': data['address1'],\n            'city': data['city'],\n            'state': data['state'],\n            'postcode': data['postalCode'],\n            'country': data['countryCode'],\n            'phone': data['telephone'],\n            'website': response.urljoin(data['url']),\n            'opening_hours': self.parse_hours(data['schedule']),\n        }\n\n        yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/texas_roadhouse.py"}], "after_files": [{"content": "import json\nimport scrapy\nfrom locations.items import GeojsonPointItem\nfrom locations.hours import OpeningHours\n\n\nclass TexasRoadhouseSpider(scrapy.Spider):\n    name = \"texas_roadhouse\"\n    item_attributes = {\n        'brand': \"Texas Roadhouse\",\n        'brand_wikidata': \"Q7707945\",\n    }\n    allowed_domains = [\"www.texasroadhouse.com\"]\n    start_urls = (\n        'https://www.texasroadhouse.com/sitemap.xml',\n    )\n\n    def parse_hours(self, store_hours):\n        opening_hours = OpeningHours()\n\n        for weekday in store_hours:\n            # convert day from full Monday to Mo, etc\n            day = weekday.get('day')[:2]\n            open_time = weekday.get('hours').get('openTime')\n            close_time = weekday.get('hours').get('closeTime')\n            opening_hours.add_range(day=day,\n                                    open_time=open_time,\n                                    close_time=close_time,\n                                    time_format='%I:%M%p')\n\n        return opening_hours.as_opening_hours()\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        city_urls = response.xpath('//url/loc/text()').extract()\n        for path in city_urls:\n            if path.startswith('https://www.texasroadhouse.com/locations/'):\n                yield scrapy.Request(\n                    path.strip(),\n                    callback=self.parse_store,\n                )\n\n    def parse_store(self, response):\n        data = json.loads(response.xpath('//script/text()').extract_first()[22:-1])\n\n        properties = {\n            'lat': data['latitude'],\n            'lon': data['longitude'],\n            'ref': data['url'],\n            'name': data['name'],\n            'addr_full': data['address1'],\n            'city': data['city'],\n            'state': data['state'],\n            'postcode': data['postalCode'],\n            'country': data['countryCode'],\n            'phone': data['telephone'],\n            'website': response.urljoin(data['url']),\n            'opening_hours': self.parse_hours(data['schedule']),\n        }\n\n        yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/texas_roadhouse.py"}]}