Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: chrome/common/extensions/docs/server2/availability_finder.py

Issue 386443003: Docserver: Add 'deprecated since' message for API nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import posixpath 5 import posixpath
6 6
7 from api_data_source import _NODE_CATEGORIES
7 from api_schema_graph import APISchemaGraph 8 from api_schema_graph import APISchemaGraph
8 from branch_utility import BranchUtility, ChannelInfo 9 from branch_utility import BranchUtility, ChannelInfo
9 from compiled_file_system import CompiledFileSystem, SingleFile, Unicode 10 from compiled_file_system import CompiledFileSystem, SingleFile, Unicode
10 from extensions_paths import API_PATHS, JSON_TEMPLATES 11 from extensions_paths import API_PATHS, JSON_TEMPLATES
11 from features_bundle import FeaturesBundle 12 from features_bundle import FeaturesBundle
12 from file_system import FileNotFoundError 13 from file_system import FileNotFoundError
13 from schema_util import ProcessSchema 14 from schema_util import ProcessSchema
14 from third_party.json_schema_compiler.memoize import memoize 15 from third_party.json_schema_compiler.memoize import memoize
15 from third_party.json_schema_compiler.model import UnixName 16 from third_party.json_schema_compiler.model import UnixName
16 17
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 ''' 196 '''
196 if version < _SVN_MIN_VERSION: 197 if version < _SVN_MIN_VERSION:
197 # SVN data isn't available below this version. 198 # SVN data isn't available below this version.
198 return False 199 return False
199 features_bundle = self._CreateFeaturesBundle(file_system) 200 features_bundle = self._CreateFeaturesBundle(file_system)
200 available_channel = None 201 available_channel = None
201 if version >= _API_FEATURES_MIN_VERSION: 202 if version >= _API_FEATURES_MIN_VERSION:
202 # The _api_features.json file first appears in version 28 and should be 203 # The _api_features.json file first appears in version 28 and should be
203 # the most reliable for finding API availability. 204 # the most reliable for finding API availability.
204 available_channel = _GetChannelFromAPIFeatures(api_name, 205 available_channel = _GetChannelFromAPIFeatures(api_name,
205 features_bundle) 206 features_bundle)
206 if version >= _ORIGINAL_FEATURES_MIN_VERSION: 207 if version >= _ORIGINAL_FEATURES_MIN_VERSION:
207 # The _permission_features.json and _manifest_features.json files are 208 # The _permission_features.json and _manifest_features.json files are
208 # present in Chrome 20 and onwards. Use these if no information could be 209 # present in Chrome 20 and onwards. Use these if no information could be
209 # found using _api_features.json. 210 # found using _api_features.json.
210 available_channel = ( 211 available_channel = (
211 available_channel or 212 available_channel or
212 _GetChannelFromPermissionFeatures(api_name, features_bundle) or 213 _GetChannelFromPermissionFeatures(api_name, features_bundle) or
213 _GetChannelFromManifestFeatures(api_name, features_bundle)) 214 _GetChannelFromManifestFeatures(api_name, features_bundle))
214 if available_channel is not None: 215 if available_channel is not None:
215 return available_channel == 'stable' 216 return available_channel == 'stable'
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 else: 359 else:
359 # Keep track of any new schema elements from this version by adding 360 # Keep track of any new schema elements from this version by adding
360 # them to |availability_graph|. 361 # them to |availability_graph|.
361 # 362 #
362 # Calling |availability_graph|.Lookup() on the nodes being updated 363 # Calling |availability_graph|.Lookup() on the nodes being updated
363 # will return the |annotation| object -- the current |channel_info|. 364 # will return the |annotation| object -- the current |channel_info|.
364 version_graph = APISchemaGraph(self._GetAPISchema(api_name, 365 version_graph = APISchemaGraph(self._GetAPISchema(api_name,
365 file_system, 366 file_system,
366 channel_info.version)) 367 channel_info.version))
367 availability_graph.Update(version_graph.Subtract(availability_graph), 368 availability_graph.Update(version_graph.Subtract(availability_graph),
368 annotation=channel_info) 369 annotation=AvailabilityInfo(channel_info))
369 370
370 previous.stat = version_stat 371 previous.stat = version_stat
371 previous.graph = version_graph 372 previous.graph = version_graph
372 373
373 # Continue looping until there are no longer differences between this 374 # Continue looping until there are no longer differences between this
374 # version and trunk. 375 # version and trunk.
375 return version_stat != trunk_stat 376 return version_stat != trunk_stat
376 377
377 self._file_system_iterator.Ascending( 378 self._file_system_iterator.Ascending(
378 self.GetAPIAvailability(api_name).channel_info, 379 self.GetAPIAvailability(api_name).channel_info,
379 update_availability_graph) 380 update_availability_graph)
380 381
382 # Check if any top-level nodes are scheduled.
not at google - send to devlin 2014/07/17 20:30:06 wait when does this logic kick in?
ahernandez 2014/07/17 20:35:24 This happens right after the graph is constructed.
not at google - send to devlin 2014/07/17 20:47:21 I guess i mean why do you need to add this now
ahernandez 2014/07/17 20:50:01 Oh, did you want that in a separate patch? That pr
not at google - send to devlin 2014/07/17 20:57:31 If you don't need it for this patch then yeah.
383 graph = availability_graph._graph
384 for category in _NODE_CATEGORIES:
385 if category in graph[api_name]:
386 for node in graph[api_name][category].iterkeys():
387 annotation = graph[api_name][category][node]._annotation
388 if annotation.channel_info.channel != 'stable':
389 scheduled = self._FindScheduled('%s.%s' % (api_name, node))
390 if scheduled is not None:
391 # Do not change the existing annotation object, but create
392 # a new one because multiple nodes may share the same old
393 # annotation object.
394 graph[api_name][category][node]._annotation = AvailabilityInfo(
395 annotation.channel_info, scheduled = scheduled)
396
381 self._node_level_object_store.Set(api_name, availability_graph) 397 self._node_level_object_store.Set(api_name, availability_graph)
382 return availability_graph 398 return availability_graph
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698