(self, filename, modified, deleted)
| 2231 | |
| 2232 | # noinspection PyProtectedMember |
| 2233 | def _on_assets_change(self, filename, modified, deleted): |
| 2234 | _reload = self._hot_reload |
| 2235 | with _reload.lock: |
| 2236 | _reload.hard = True |
| 2237 | _reload.hash = generate_hash() |
| 2238 | |
| 2239 | if self.config.assets_folder in filename: |
| 2240 | asset_path = ( |
| 2241 | os.path.relpath( |
| 2242 | filename, |
| 2243 | os.path.commonprefix([self.config.assets_folder, filename]), |
| 2244 | ) |
| 2245 | .replace("\\", "/") |
| 2246 | .lstrip("/") |
| 2247 | ) |
| 2248 | |
| 2249 | _reload.changed_assets.append( |
| 2250 | { |
| 2251 | "url": self.get_asset_url(asset_path), |
| 2252 | "modified": int(modified), |
| 2253 | "is_css": filename.endswith("css"), |
| 2254 | } |
| 2255 | ) |
| 2256 | |
| 2257 | if filename not in self._assets_files and not deleted: |
| 2258 | res = self._add_assets_resource(asset_path, filename) |
| 2259 | if filename.endswith("js"): |
| 2260 | self.scripts.append_script(res) |
| 2261 | elif filename.endswith("css"): |
| 2262 | self.css.append_css(res) # type: ignore[reportArgumentType] |
| 2263 | |
| 2264 | if deleted: |
| 2265 | if filename in self._assets_files: |
| 2266 | self._assets_files.remove(filename) |
| 2267 | |
| 2268 | def delete_resource(resources): |
| 2269 | to_delete = None |
| 2270 | for r in resources: |
| 2271 | if r.get("asset_path") == asset_path: |
| 2272 | to_delete = r |
| 2273 | break |
| 2274 | if to_delete: |
| 2275 | resources.remove(to_delete) |
| 2276 | |
| 2277 | if filename.endswith("js"): |
| 2278 | # pylint: disable=protected-access |
| 2279 | delete_resource(self.scripts._resources._resources) |
| 2280 | elif filename.endswith("css"): |
| 2281 | # pylint: disable=protected-access |
| 2282 | delete_resource(self.css._resources._resources) |
| 2283 | |
| 2284 | # pylint: disable=too-many-branches |
| 2285 | def run( |
nothing calls this directly
no test coverage detected