• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Python uritemplate.expand函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中uritemplate.expand函数的典型用法代码示例。如果您正苦于以下问题:Python expand函数的具体用法?Python expand怎么用?Python expand使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了expand函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_HALNavigator__getitem_gauntlet

def test_HALNavigator__getitem_gauntlet():
    with httprettify():
        index_uri = 'http://www.example.com/'
        index_regex = re.compile(index_uri + '.*')
        template_href = 'http://www.example.com/{?max,page}'
        index_links = {'first': {
            'href': template_href,
            'templated': True
        }}
        register_hal(index_regex, index_links)

        N = HN.HALNavigator(index_uri)
        expanded_nav = N['first', 'page':0, 'max':1]
        assert expanded_nav.uri == uritemplate.expand(template_href,
                                                      {'max': 1, 'page': '0'})
        assert N['first'].expand(page=0, max=1) == expanded_nav
        assert N['first']['page': 0].uri == uritemplate \
            .expand(template_href, {'page': '0'})
        assert N['first', :].uri == uritemplate.expand(
            template_href, variables={})

        first_page_expanded = uritemplate.expand(template_href, {'page': '0'})
        first_null_expanded = uritemplate.expand(template_href, {})
        first_both_expanded = uritemplate.expand(
            template_href, {'page': '0', 'max': 4})
        # (somewhat) exhaustive combinations
        N_first = N['first']
        with pytest.raises(TypeError):
            assert N['page': 0]
        assert N_first['page':0].uri == first_page_expanded
        assert N[...].uri == N.uri
        with pytest.raises(TypeError):
            assert N['page': 0, ...]
        assert N_first['page':0, ...].uri == first_page_expanded
        assert N_first['page':0, ...].templated
        with pytest.raises(TypeError):
            assert N[:]
        assert N_first[:].uri == first_null_expanded
        with pytest.raises(TypeError):
            assert N['page':0, :]
        assert N_first['page':0, :].uri == first_page_expanded
        assert not N_first['page':0, :].templated
        with pytest.raises(SyntaxError):
            assert N[:, ...]
        with pytest.raises(SyntaxError):
            assert N['page':0, :, ...]
        assert N['first'].template_uri == template_href
        assert N['first', 'page': 0].uri == first_page_expanded
        assert N['first', ...].template_uri == template_href
        assert N['first', 'page':0, ...].template_uri == template_href
        assert N['first', 'page':0, ...].templated
        assert N['first', 'page':0, ...]['max': 4].uri == first_both_expanded
        assert N['first', :].uri == first_null_expanded
        assert not N['first', :].templated
        assert N['first', 'page':0, :].uri == first_page_expanded
        assert not N['first', 'page':0, :].templated
        with pytest.raises(SyntaxError):
            assert N['first', :, ...]
        with pytest.raises(SyntaxError):
            assert N['first', 'page': 0, :, ...]
开发者ID:dudycooly,项目名称:rest_navigator,代码行数:60,代码来源:test_hal_nav.py


示例2: get_touched_branch_files

def get_touched_branch_files(payload, github_auth):
    ''' Return a set of files modified between master and payload head.
    '''
    branch_sha = payload['head_commit']['id']

    compare1_url = payload['repository']['compare_url']
    compare1_url = expand(compare1_url, dict(base='master', head=branch_sha))
    current_app.logger.debug('Compare URL 1 {}'.format(compare1_url))
    
    compare1 = get(compare1_url, auth=github_auth).json()
    merge_base_sha = compare1['merge_base_commit']['sha']
    
    # That's no branch.
    if merge_base_sha == branch_sha:
        return set()

    compare2_url = payload['repository']['compare_url']
    compare2_url = expand(compare2_url, dict(base=merge_base_sha, head=branch_sha))
    current_app.logger.debug('Compare URL 2 {}'.format(compare2_url))
    
    compare2 = get(compare2_url, auth=github_auth).json()
    touched = set([file['filename'] for file in compare2['files']])
    current_app.logger.debug('Touched files {}'.format(', '.join(touched)))
    
    return touched
开发者ID:kreed,项目名称:machine,代码行数:25,代码来源:__init__.py


示例3: __init__

 def __init__(self, bb, mode='fetch', **kwargs):
     self.bb = bb
     if mode:
         self.url = [uritemplate.expand(x, **kwargs) for x in self.uri]
     self.data = {}
     if mode == 'fetch':
         for arg in kwargs:
             setattr(self, arg, kwargs[arg])
         self.data = {}
         for url in self.url:
             self.data.update(self.get(url))
     elif mode == 'list':
         self.instances = []
         for instance in self.get(self.url[0]):
             kw = kwargs.copy()
             kw.update(instance)
             instance = type(self)(self.bb, mode=None, **kw)
             instance.url = [uritemplate.expand(x, **kw) for x in instance.uri]
             self.instances.append(instance)
     else:
         self.data = kwargs
     for datum in self.data:
         if datum == 'data':
             setattr(self, '_' + datum, self.data[datum])
         else:
             setattr(self, datum, self.data[datum])
开发者ID:RomanKonovalov,项目名称:git-spindle,代码行数:26,代码来源:bbapi.py


示例4: get_route_from_fk

def get_route_from_fk(resource_type, pk=None):
    """Gets a fully qualified URL for a given resource_type, pk"""
    routes = requests.get(zc_settings.GATEWAY_ROOT_PATH).json()

    for route in routes.iterkeys():
        if 'resource_type' in routes[route] and routes[route]['resource_type'] == resource_type:
            if isinstance(pk, (list, set)):
                expanded = '{}?filter[id__in]={}'.format(expand(route, {}), ','.join([str(x) for x in pk]))
            else:
                expanded = expand(route, {'id': pk})
            return '{0}{1}'.format(routes[route]['domain'], expanded)

    raise RouteNotFoundException('No route for resource_type: "{0}"'.format(resource_type))
开发者ID:ZeroCater,项目名称:zc_common,代码行数:13,代码来源:request.py


示例5: build

def build(serviceName, version,
    http=None,
    discoveryServiceUrl=DISCOVERY_URI,
    developerKey=None,
    model=JsonModel(),
    requestBuilder=HttpRequest):
  params = {
      'api': serviceName,
      'apiVersion': version
      }

  if http is None:
    http = httplib2.Http()
  requested_url = uritemplate.expand(discoveryServiceUrl, params)
  logging.info('URL being requested: %s' % requested_url)
  resp, content = http.request(requested_url)
  service = simplejson.loads(content)

  fn = os.path.join(os.path.dirname(__file__), "contrib",
      serviceName, "future.json")
  try:
    f = file(fn, "r")
    d = simplejson.load(f)
    f.close()
    future = d['resources']
    auth_discovery = d['auth']
  except IOError:
    future = {}
    auth_discovery = {}

  base = urlparse.urljoin(discoveryServiceUrl, service['restBasePath'])
  resources = service['resources']

  class Service(object):
    """Top level interface for a service"""

    def __init__(self, http=http):
      self._http = http
      self._baseUrl = base
      self._model = model
      self._developerKey = developerKey
      self._requestBuilder = requestBuilder

    def auth_discovery(self):
      return auth_discovery

  def createMethod(theclass, methodName, methodDesc, futureDesc):

    def method(self):
      return createResource(self._http, self._baseUrl, self._model,
                            self._requestBuilder, methodName,
                            self._developerKey, methodDesc, futureDesc)

    setattr(method, '__doc__', 'A description of how to use this function')
    setattr(method, '__is_resource__', True)
    setattr(theclass, methodName, method)

  for methodName, methodDesc in resources.iteritems():
    createMethod(Service, methodName, methodDesc, future.get(methodName, {}))
  return Service()
开发者ID:adewale,项目名称:oauthstarter,代码行数:60,代码来源:discovery.py


示例6: __get_discovery_doc

  def __get_discovery_doc(self, service_name, version, http=None,
                            discovery_service_url=DISCOVERY_URI):
    # Returned a cached copy if we have it.
    cached = memcache.get("discovery_doc")
    if cached:
      return cached
    logging.info("Cache miss in discovery document.")

    params = {'api': service_name, 'apiVersion': version}
    requested_url = uritemplate.expand(discovery_service_url, params)

    # REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment
    # variable that contains the network address of the client sending the
    # request. If it exists then add that to the request for the discovery
    # document to avoid exceeding the quota on discovery requests.
    if 'REMOTE_ADDR' in os.environ:
      requested_url = _add_query_parameter(requested_url, 'userIp',
                                          os.environ['REMOTE_ADDR'])

    http = http or httplib2.Http()
    resp, content = http.request(requested_url)
    if resp.status >= 400:
      raise HttpError(resp, content, uri=requested_url)

    # Store it in the memcache.
    memcache.set("discovery_doc", content, time=60 * 60 * 24)

    return content
开发者ID:djpetti,项目名称:hd-domain,代码行数:28,代码来源:domain.py


示例7: widget

def widget():
    """
    Finds issues based on the given label. Render them in the widget
    """
    # Get optional parameters
    labels = request.args.get("labels", None)
    org_name = request.args.get("organization_name")
    org_type = request.args.get("org_type")
    number = request.args.get("number")
    tracking_status = request.args.get("tracking")

    # Build the url
    if org_name and labels:
        issues_path_template = "organizations{/org_name}/issues/labels{/labels}{?query*}"
    elif org_name:
        issues_path_template = "organizations{/org_name}/issues{?query*}"
    elif labels:
        issues_path_template = "issues/labels{/labels}{?query*}"
    else:
        issues_path_template = "issues{?query*}"

    issues_url_template = urljoin(CFAPI_BASE, issues_path_template)
    issues_url_kwargs = ("organization_type", org_type), ("per_page", number)

    url_args = dict(org_name=org_name, labels=labels, query={k: v for (k, v) in issues_url_kwargs if v})

    issues_url = expand(issues_url_template, url_args)

    # Get the actual issues from the API
    try:
        issues_response = get(issues_url, timeout=5)
    except Timeout:
        return render_template("widget.html", error=True)
    except ConnectionError, e:
        return render_template("widget.html", error=True)
开发者ID:eunicekokor,项目名称:civic-issue-finder,代码行数:35,代码来源:app.py


示例8: main

def main():
    '''Main logic'''
    import argparse
    parser = argparse.ArgumentParser('Create GitHub relase')
    parser.add_argument('--token', '-t', required=True,
                        help='GitHub authentication token')
    parser.add_argument('--user', '-u', required=True,
                        help='GitHub user account')
    parser.add_argument('--repo', '-r', required=True,
                        help='GitHub repo name')
    parser.add_argument('--version', '-v', required=True,
                        help='Version to create')
    parser.add_argument('--file', '-f',
                        help='File to upload to release')
    parser.add_argument('--content-type', '-c',
                        help='Content type of file')

    args = parser.parse_args()

    api_url = 'https://api.github.com/repos/{user}/{repo}/releases'
    api_url = api_url.format(user=args.user, repo=args.repo)

    # Create release
    release_json = create_release(api_url, args.token, args.version)

    # Upload file
    if args.file:
        upload_url = expand(release_json['upload_url'],
                            {'name': os.path.basename(args.file)})
        upload_file(upload_url, args.token, args.file, args.content_type)
开发者ID:SyniGuo,项目名称:pentadactyl-signed,代码行数:30,代码来源:github_release.py


示例9: RelativeName

  def RelativeName(self, url_escape=False):
    """Relative resource name.

    A URI path ([path-noscheme](http://tools.ietf.org/html/rfc3986#appendix-A))
    without the leading "/". It identifies a resource within the API service.
    For example:
      "shelves/shelf1/books/book2"

    Args:
      url_escape: bool, if true would url escape each parameter.
    Returns:
       Unescaped part of SelfLink which is essentially base_url + relative_name.
       For example if SelfLink is
         https://pubsub.googleapis.com/v1/projects/myprj/topics/mytopic
       then relative name is
         projects/myprj/topics/mytopic.
    """
    escape_func = urllib.parse.quote if url_escape else lambda x, safe: x

    effective_params = dict(
        [(k, escape_func(getattr(self, k), safe=''))
         for k in self._params])

    return urllib.parse.unquote(
        uritemplate.expand(self._path, effective_params))
开发者ID:gyaresu,项目名称:dotfiles,代码行数:25,代码来源:resources.py


示例10: retrieve_discovery_doc

def retrieve_discovery_doc(serviceName, version,
                           discoveryServiceUrl=DISCOVERY_URI):
    params = {'api': serviceName, 'apiVersion': version}
    requested_url = uritemplate.expand(discoveryServiceUrl, params)

    # REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment
    # variable that contains the network address of the client sending the
    # request. If it exists then add that to the request for the discovery
    # document to avoid exceeding the quota on discovery requests.
    if 'REMOTE_ADDR' in os.environ:
        requested_url = _add_query_parameter(requested_url, 'userIp',
                                             os.environ['REMOTE_ADDR'])

    http = httplib2.Http()
    resp, content = http.request(requested_url)
    if resp.status >= 400:
        raise HttpError(resp, content, uri=requested_url)

    try:
        service = json.loads(content)
    except ValueError:
        raise InvalidJsonError(
            'Bad JSON: %s from %s.' % (content, requested_url))

    # We return content instead of the JSON deserialized service because
    # build_from_document() consumes a string rather than a dictionary.
    return content
开发者ID:slackpad,项目名称:hashtagtodo-open,代码行数:27,代码来源:client.py


示例11: expand_uri

    def expand_uri(self, name, **kwargs):
        link = self.schema.get_link(name)
        href = link.get('href', '')

        context = dict(self.data, **kwargs)

        return uritemplate.expand(href, context)
开发者ID:wpjunior,项目名称:pluct,代码行数:7,代码来源:resource.py


示例12: _delete

    def _delete(self, **kwargs):
        # TODO: Refactor to resolve circular dependency.
        from pluct import resource

        self.href = expand(self.href, self.resource.data)
        response = requests.delete(url=self.href, headers=self.get_headers())
        return resource.from_response(response)
开发者ID:luizgpsantos,项目名称:pluct,代码行数:7,代码来源:request.py


示例13: _refresh

  def _refresh(self, http_request):
    """Refreshes the access_token.

    Skip all the storage hoops and just refresh using the API.

    Args:
      http_request: callable, a callable that matches the method signature of
        httplib2.Http.request, used to make the refresh request.

    Raises:
      AccessTokenRefreshError: When the refresh fails.
    """
    uri = uritemplate.expand(META, {'scope': self.scope})
    response, content = http_request(uri)
    if response.status == 200:
      try:
        d = simplejson.loads(content)
      except Exception as e:
        raise AccessTokenRefreshError(str(e))
      self.access_token = d['accessToken']
    else:
      if response.status == 404:
        content = content + (' This can occur if a VM was created'
            ' with no service account or scopes.')
      raise AccessTokenRefreshError(content)
开发者ID:ianjosephwilson,项目名称:oauth2client,代码行数:25,代码来源:gce.py


示例14: get_odes_extracts

def get_odes_extracts(db, api_key):
    '''
    '''
    odeses, extracts = list(), list()
    
    vars = dict(api_key=api_key)
    extracts_url = uritemplate.expand(odes_extracts_url, vars)
    resp = requests.get(extracts_url)

    if resp.status_code in range(200, 299):
        odeses.extend([data.ODES(str(oj['id']), status=oj['status'], bbox=oj['bbox'],
                                 links=oj.get('download_links', {}),
                                 processed_at=(parse_datetime(oj['processed_at']) if oj['processed_at'] else None),
                                 created_at=(parse_datetime(oj['created_at']) if oj['created_at'] else None))
                       for oj in resp.json()])
    
    for odes in sorted(odeses, key=attrgetter('created_at'), reverse=True):
        extract = data.get_extract(db, odes=odes)
        
        if extract is None:
            extract = data.Extract(None, None, None, odes, None, None, None)
        
        extracts.append(extract)

    return extracts
开发者ID:mapzen,项目名称:metro-extracts,代码行数:25,代码来源:odes.py


示例15: get_odes_extract

def get_odes_extract(db, id, api_key):
    '''
    '''
    extract, odes = data.get_extract(db, extract_id=id), None
    
    if extract is None:
        # Nothing by that name in the database, so ask the ODES API.
        vars = dict(id=id, api_key=api_key)
        extract_url = uritemplate.expand(odes_extracts_url, vars)
        resp = requests.get(extract_url)

        if resp.status_code in range(200, 299):
            oj = resp.json()
            odes = data.ODES(str(oj['id']), status=oj['status'], bbox=oj['bbox'],
                             links=oj.get('download_links', {}),
                             processed_at=(parse_datetime(oj['processed_at']) if oj['processed_at'] else None),
                             created_at=(parse_datetime(oj['created_at']) if oj['created_at'] else None))
    
        if odes is None:
            # Nothing at all for this ID anywhere.
            return None
    
    if odes is None:
        # A DB extract was found, but nothing in ODES - very weird!
        return get_odes_extract(db, extract.odes.id, api_key)
    
    # We have a known ODES, so look for it in the database.
    extract = data.get_extract(db, odes=odes)
    
    if extract is None:
        # Known ODES, but nothing in the DB so make one up.
        return data.Extract(None, None, None, odes, None, None, None)
    
    return extract
开发者ID:mapzen,项目名称:metro-extracts,代码行数:34,代码来源:odes.py


示例16: build

def build(service, version, http=httplib2.Http(),
    discoveryServiceUrl = DISCOVERY_URI, auth = None, model = JsonModel()):
  params = {
      'api': service,
      'apiVersion': version
      }
  resp, content = http.request(uritemplate.expand(discoveryServiceUrl, params))
  d = simplejson.loads(content)
  service = d['data'][service][version]
  base = service['baseUrl']
  resources = service['resources']

  class Service(object):
    """Top level interface for a service"""

    def __init__(self, http=http):
      self._http = http
      self._baseUrl = base
      self._model = model

  def createMethod(theclass, methodName, methodDesc):
    def method(self, **kwargs):
      return createResource(self._http, self._baseUrl, self._model,
          methodName, methodDesc)

    setattr(method, '__doc__', 'A description of how to use this function')
    setattr(theclass, methodName, method)

  for methodName, methodDesc in resources.iteritems():
    createMethod(Service, methodName, methodDesc)
  return Service()
开发者ID:dekom,项目名称:threepress-bookworm-read-only,代码行数:31,代码来源:apiclient.py


示例17: request_odes_extract

def request_odes_extract(extract, request, url_for, api_key):
    '''
    '''
    env = Environment(loader=PackageLoader(__name__, 'templates'))
    args = dict(
        name = extract.name or extract.wof.name or 'an unnamed place',
        link = urljoin(util.get_base_url(request), url_for('ODES.get_extract', extract_id=extract.id)),
        extracts_link = urljoin(util.get_base_url(request), url_for('ODES.get_extracts')),
        created = extract.created
        )

    email = dict(
        email_subject=env.get_template('email-subject.txt').render(**args),
        email_body_text=env.get_template('email-body.txt').render(**args),
        email_body_html=env.get_template('email-body.html').render(**args)
        )

    params = {key: extract.envelope.bbox[i] for (i, key) in enumerate(('bbox_w', 'bbox_s', 'bbox_e', 'bbox_n'))}
    params.update(email)

    post_url = uritemplate.expand(odes_extracts_url, dict(api_key=api_key))
    resp = requests.post(post_url, data=params)
    oj = resp.json()
    
    if 'error' in oj:
        raise util.KnownUnknown("Error: {}".format(oj['error']))
    elif resp.status_code != 200:
        raise Exception("Bad ODES status code: {}".format(resp.status_code))
    
    return data.ODES(str(oj['id']), status=oj['status'], bbox=oj['bbox'],
                     links=oj.get('download_links', {}),
                     processed_at=(parse_datetime(oj['processed_at']) if oj['processed_at'] else None),
                     created_at=(parse_datetime(oj['created_at']) if oj['created_at'] else None))
开发者ID:mapzen,项目名称:metro-extracts,代码行数:33,代码来源:odes.py


示例18: test_pagination

    def test_pagination(self):
        self.client.auto_paginate = True
        url = uritemplate.expand(self.client.url, {'param': 'foo'})

        h1 = {
            'Link': '<'+url+'?page=2&per_page=100>; rel="next"',
            'X-RateLimit-Remaining': '56',
            'X-RateLimit-Reset': '1446804464',
            'X-RateLimit-Limit': '60'
        }
        h2 = {
            'Link': '<'+url+'?page=3&per_page=100>; rel="next"',
            'X-RateLimit-Remaining': '56',
            'X-RateLimit-Reset': '1446804464',
            'X-RateLimit-Limit': '60'
        }
        h3 = {
            'X-RateLimit-Remaining': '56',
            'X-RateLimit-Reset': '1446804464',
            'X-RateLimit-Limit': '60'
        }
        res1 = '["a","b"]'
        res2 = '["c","d"]'
        res3 = '["e","f"]'

        self.adapter.register_uri('GET', url, headers=h1, text=res1)
        self.adapter.register_uri('GET', url+'?page=2', headers=h2, text=res2)
        self.adapter.register_uri('GET', url+'?page=3', headers=h3, text=res3)

        response = self.client.paginate(param='foo')
        resultSchema = [r.schema for r in response.schema]
        expectedSchema = ['a', 'b', 'c', 'd', 'e', 'f']

        self.assertEqual(resultSchema, expectedSchema)
开发者ID:Jfach,项目名称:octokit.py,代码行数:34,代码来源:test_pagination.py


示例19: build

def build(
    serviceName,
    version,
    http=None,
    discoveryServiceUrl=DISCOVERY_URI,
    developerKey=None,
    model=None,
    requestBuilder=HttpRequest,
):
    """Construct a Resource for interacting with an API.

  Construct a Resource object for interacting with
  an API. The serviceName and version are the
  names from the Discovery service.

  Args:
    serviceName: string, name of the service
    version: string, the version of the service
    discoveryServiceUrl: string, a URI Template that points to
      the location of the discovery service. It should have two
      parameters {api} and {apiVersion} that when filled in
      produce an absolute URI to the discovery document for
      that service.
    developerKey: string, key obtained
      from https://code.google.com/apis/console
    model: apiclient.Model, converts to and from the wire format
    requestBuilder: apiclient.http.HttpRequest, encapsulator for
      an HTTP request

  Returns:
    A Resource object with methods for interacting with
    the service.
  """
    params = {"api": serviceName, "apiVersion": version}

    if http is None:
        http = httplib2.Http()

    requested_url = uritemplate.expand(discoveryServiceUrl, params)

    # REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment
    # variable that contains the network address of the client sending the
    # request. If it exists then add that to the request for the discovery
    # document to avoid exceeding the quota on discovery requests.
    if "REMOTE_ADDR" in os.environ:
        requested_url = _add_query_parameter(requested_url, "userIp", os.environ["REMOTE_ADDR"])
    logging.info("URL being requested: %s" % requested_url)

    resp, content = http.request(requested_url)

    if resp.status == 404:
        raise UnknownApiNameOrVersion("name: %s  version: %s" % (serviceName, version))
    if resp.status >= 400:
        raise HttpError(resp, content, requested_url)

    try:
        service = simplejson.loads(content)
    except ValueError, e:
        logging.error("Failed to parse as JSON: " + content)
        raise InvalidJsonError()
开发者ID:Poorvak,项目名称:twitter_clone,代码行数:60,代码来源:discovery.py


示例20: expand_uri

 def expand_uri(template, args):
     '''
     '''
     new_args = {k: v for (k, v) in args.items() if not hasattr(v, 'encode')}
     new_args.update({k: v.encode('utf8') for (k, v) in args.items() if hasattr(v, 'encode')})
     
     return uritemplate.expand(template, new_args)
开发者ID:cequencer,项目名称:machine,代码行数:7,代码来源:compat.py



注:本文中的uritemplate.expand函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python uritemplate.URITemplate类代码示例发布时间:2022-05-27
下一篇:
Python singletonURIHelperInstance.getUri函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap