diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 51b9aa62..2b76a732 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -626,6 +626,11 @@ credits = [ '2001-2020 Python Software Foundation
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', diff --git a/lib/docs/filters/pytorch/clean_html.rb b/lib/docs/filters/pytorch/clean_html.rb new file mode 100644 index 00000000..dd19c3e0 --- /dev/null +++ b/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 diff --git a/lib/docs/filters/pytorch/entries.rb b/lib/docs/filters/pytorch/entries.rb new file mode 100644 index 00000000..f63926b4 --- /dev/null +++ b/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 diff --git a/lib/docs/scrapers/pytorch.rb b/lib/docs/scrapers/pytorch.rb new file mode 100644 index 00000000..f370502a --- /dev/null +++ b/lib/docs/scrapers/pytorch.rb @@ -0,0 +1,32 @@ +module Docs + class Pytorch < UrlScraper + self.name = 'PyTorch' + self.slug = 'pytorch' + self.type = 'sphinx' + 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 + © 2019 Torch Contributors
+ Licensed under the 3-clause BSD License. + HTML + + version do + self.release = '1.7.0' + self.base_url = "https://pytorch.org/docs/#{release}/" + end + + def get_latest_version(opts) + get_latest_github_release('pytorch', 'pytorch', opts) + end + end +end diff --git a/public/icons/docs/pytorch/16.png b/public/icons/docs/pytorch/16.png new file mode 100644 index 00000000..a0104d59 Binary files /dev/null and b/public/icons/docs/pytorch/16.png differ diff --git a/public/icons/docs/pytorch/16@2x.png b/public/icons/docs/pytorch/16@2x.png new file mode 100644 index 00000000..b417ee98 Binary files /dev/null and b/public/icons/docs/pytorch/16@2x.png differ diff --git a/public/icons/docs/pytorch/SOURCE b/public/icons/docs/pytorch/SOURCE new file mode 100644 index 00000000..9863ff2e --- /dev/null +++ b/public/icons/docs/pytorch/SOURCE @@ -0,0 +1 @@ +https://pytorch.org/favicon.ico \ No newline at end of file