Преглед изворни кода

Add PyTorch v1.5.0 documentation

Peiran Yao пре 5 година
родитељ
комит
c0b94262bf

+ 5 - 0
assets/javascripts/templates/pages/about_tmpl.coffee

@@ -621,6 +621,11 @@ credits = [
     '2001-2020 Python Software Foundation<br>Python is a trademark of the Python Software Foundation.',
     'PSFL',
     'https://docs.python.org/3/license.html'
+  ], [
+    'PyTorch',
+    '2019 Torch Contributors',
+    'BSD',
+    'https://raw.githubusercontent.com/pytorch/pytorch/master/LICENSE'
   ], [
     'Q',
     '2009-2017 Kristopher Michael Kowal',

+ 12 - 0
lib/docs/filters/pytorch/clean_html.rb

@@ -0,0 +1,12 @@
+module Docs
+  class Pytorch
+    class CleanHtmlFilter < Filter
+      def call
+        @doc = at_css('.pytorch-article')
+        # Show katex-mathml nodes and remove katex-html nodes
+        css('.katex-html').remove
+        doc
+      end
+    end
+  end
+end

+ 54 - 0
lib/docs/filters/pytorch/entries.rb

@@ -0,0 +1,54 @@
+module Docs
+  class Pytorch
+    class EntriesFilter < Docs::EntriesFilter
+      def get_name
+        # The id of the container `div.section` indicates the page type.
+        # If the id starts with `module-`, then it's an API reference,
+        # otherwise it is a note or design doc.
+        # After the `sphinx/clean_html` filter, that id is assigned to the second element.
+        if doc.element_children[1]['id']&.starts_with? 'module-'
+          /\Amodule-(.*)/.match(doc.element_children[1]['id'])[1]
+        else
+          at_css('h1').content
+        end
+      end
+
+      def get_type
+        name
+      end
+
+      def include_default_entry?
+        # If the page is not an API reference, we only include it in the index when it
+        # contains additional entries. See the doc for `get_name`.
+        doc.element_children[1]['id']&.starts_with? 'module-'
+      end
+
+      def additional_entries
+        return [] if root_page?
+
+        entries = []
+
+        css('dt').each do |node|
+          name = node['id']
+          if name == self.name or name == nil
+            next
+          end
+
+          case node.parent['class']
+          when 'method', 'function'
+            if node.at_css('code').content.starts_with? 'property '
+              # this instance method is a property, so treat it as an attribute
+              entries << [name, node['id']]
+            else
+              entries << [name + '()', node['id']]
+            end
+          when 'class', 'attribute'
+            entries << [name, node['id']]
+          end
+        end
+
+        entries
+      end
+    end
+  end
+end

+ 37 - 0
lib/docs/scrapers/pytorch.rb

@@ -0,0 +1,37 @@
+module Docs
+  class Pytorch < UrlScraper
+    self.name = 'PyTorch'
+    self.slug = 'pytorch'
+    self.type = 'sphinx'
+    self.release = '1.5.0'
+    self.base_url = 'https://pytorch.org/docs/stable/'
+    self.force_gzip = true
+    self.links = {
+      home: 'https://pytorch.org/',
+      code: 'https://github.com/pytorch/pytorch'
+    }
+
+    html_filters.push 'pytorch/clean_html', 'sphinx/clean_html', 'pytorch/entries'
+
+    options[:skip] = ['cpp_index.html', 'packages.html', 'py-modindex.html', 'genindex.html']
+    options[:skip_patterns] = [/\Acommunity/, /\A_modules/, /\Anotes/, /\Aorg\/pytorch\//]
+    options[:max_image_size] = 256_000
+
+    options[:attribution] = <<-HTML
+    &copy; 2019 Torch Contributors<br>
+    Licensed under the 3-clause BSD License.<br>
+    <a href="https://raw.githubusercontent.com/pytorch/pytorch/master/LICENSE" class="_attribution-link">Read the full license.</a>
+    HTML
+
+    def get_latest_version(opts)
+      doc = fetch_doc('https://pytorch.org/docs/versions.html', opts)
+      doc.css('li.toctree-l1').each do |node|
+        match = /v(.+?) \(stable release\)/.match(node.content)
+        if match
+          return match[1]
+        end
+      end
+    end
+  end
+end
+  

BIN
public/icons/docs/pytorch/16.png


BIN
public/icons/docs/pytorch/16@2x.png


+ 1 - 0
public/icons/docs/pytorch/SOURCE

@@ -0,0 +1 @@
+https://pytorch.org/favicon.ico