📘 OpenAPI/Swagger-generated API Reference Documentation

Overview
Redoc logo

Generate interactive API documentation from OpenAPI definitions

Build Status Coverage Status npm License

bundle size npm Docker Build Status

This is the README for the 2.x version of Redoc (React-based). The README for the 1.x version is on the v1.x branch

About Redoc

Redoc is an open-source tool for generating documentation from OpenAPI (fka Swagger) definitions.

By default Redoc offers a three-panel, responsive layout:

  • The left panel contains a search bar and navigation menu.
  • The central panel contains the documentation.
  • The right panel contains request and response examples.

Redoc demo

Live demo

If you want to see how Redoc will render your OpenAPI definition, you can try it out online at https://redocly.github.io/redoc/.

A version of the Swagger Petstore API is displayed by default. To test it with your own OpenAPI definition, enter the URL for your definition and select TRY IT.

Redoc vs. Reference vs. Portals

Redoc is Redocly's community-edition product. Looking for something more? Checkout the following feature comparison of Redocly's premium products versus Redoc:

Features Redoc Reference Portals
Specs
Swagger 2.0
OpenAPI 3.0
OpenAPI 3.1 √ (basic)
Theming
Fonts/colors
Extra theme options
Performance
Pagination
Search (enhanced)
Search (server-side)
Multiple APIs
Multiple versions
Multiple APIs
API catalog
Additional features
Try-it console
Automated code samples
Deep links
More SEO control
Contextual docs
Landing pages
React hooks for more control
Personalization
Analytics integrations
Feedback Coming Soon

Refer to the Redocly's documentation for more information on these products:

Features

Customization options

Customization services

  • High-level grouping in side-menu with the x-tagGroups specification extension
  • Branding/customizations using the theme option

Support

  • OpenAPI v3.0 support
  • Basic OpenAPI v3.1 support
  • Broad OpenAPI v2.0 feature support (yes, it supports even discriminator)
  • Code samples support (via vendor extension)

Releases

Important: all the 2.x releases are deployed to npm and can be used with jsdeliver:

Additionally, all the 1.x releases are hosted on our GitHub Pages-based CDN (deprecated):

Version Guidance

Redoc Release OpenAPI Specification
2.0.0-alpha.54 3.1, 3.0.x, 2.0
2.0.0-alpha.x 3.0, 2.0
1.19.x 2.0
1.18.x 2.0
1.17.x 2.0

Showcase

Lint OpenAPI definitions

Redocly's OpenAPI CLI is an open source command-line tool that you can use to lint your OpenAPI definition. Linting helps you to catch errors and inconsistencies in your OpenAPI definition before publishing.

Refer to Lint configuration in the OpenAPI documentation for more information.

Deployment

TL;DR final code example

To render your OpenAPI definition using Redoc, use the following HTML code sample and replace the spec-url attribute with the url or local file address to your definition.

<!DOCTYPE html>
<html>
  <head>
    <title>Redoc</title>
    <!-- needed for adaptive design -->
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">

    <!--
    Redoc doesn't change outer page styles
    -->
    <style>
      body {
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <redoc spec-url='http://petstore.swagger.io/v2/swagger.json'></redoc>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/bundles/redoc.standalone.js"> </script>
  </body>
</html>

For step-by-step instructions for how to get started using Redoc to render your OpenAPI definition, refer to the Redoc quickstart guide.

See IE11 Support Notes for information on IE support for Redoc.

Redoc CLI

For more information on Redoc's commmand-line interface, refer to Using the Redoc CLI.

Configuration

Security Definition location

You can inject the Security Definitions widget into any place in your definition description. For more information, refer to Security definitions injection.

OpenAPI specification extensions

Redoc uses the following specification extensions:

  • x-logo - is used to specify API logo
  • x-traitTag - useful for handling out common things like Pagination, Rate-Limits, etc
  • x-codeSamples - specify operation code samples
  • x-examples - specify JSON example for requests
  • x-nullable - mark schema param as a nullable
  • x-displayName - specify human-friendly names for the menu categories
  • x-tagGroups - group tags by categories in the side menu
  • x-servers - ability to specify different servers for API (backported from OpenAPI 3.0)
  • x-ignoredHeaderParameters - ability to specify header parameter names to ignore
  • x-additionalPropertiesName - ability to supply a descriptive name for the additional property keys
  • x-summary - For Response object, use as the response button text, with description rendered under the button
  • x-extendedDiscriminator - In Schemas, uses this to solve name-clash issues with the standard discriminator
  • x-explicitMappingOnly - In Schemas, display a more descriptive property name in objects with additionalProperties when viewing the property list with an object

<redoc> options object

You can use all of the following options with the standalone version of the tag by kebab-casing them. For example, scrollYOffset becomes scroll-y-offset, and expandResponses becomes expand-responses.

  • disableSearch - disable search indexing and search box.
  • expandDefaultServerVariables - enable expanding default server variables, default false.
  • expandResponses - specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. expandResponses="200,201". Special value "all" expands all responses by default. Be careful: this option can slow-down documentation rendering time.
  • generatedPayloadSamplesMaxDepth - set the maximum render depth for JSON payload samples (responses and request body). The default value is 10.
  • maxDisplayedEnumValues - display only specified number of enum values. hide rest values under spoiler.
  • hideDownloadButton - do not show "Download" spec button. THIS DOESN'T MAKE YOUR SPEC PRIVATE, it just hides the button.
  • hideHostname - if set, the protocol and hostname is not shown in the operation definition.
  • hideLoading - do not show loading animation. Useful for small docs.
  • hideSchemaPattern - if set, the pattern is not shown in the schema.
  • hideSingleRequestSampleTab - do not show the request sample tab for requests with only one sample.
  • expandSingleSchemaField - automatically expand single field in a schema
  • jsonSampleExpandLevel - set the default expand level for JSON payload samples (responses and request body). Special value "all" expands all levels. The default value is 2.
  • hideSchemaTitles - do not display schema title next to to the type
  • simpleOneOfTypeLabel - show only unique oneOf types in the label without titles
  • lazyRendering - Not implemented yet if set, enables lazy rendering mode in ReDoc. This mode is useful for APIs with big number of operations (e.g. > 50). In this mode ReDoc shows initial screen ASAP and then renders the rest operations asynchronously while showing progress bar on the top. Check out the demo for the example.
  • menuToggle - if true clicking second time on expanded menu item will collapse it, default true.
  • nativeScrollbars - use native scrollbar for sidemenu instead of perfect-scroll (scrolling performance optimization for big specs).
  • noAutoAuth - do not inject Authentication section automatically.
  • onlyRequiredInSamples - shows only required fields in request samples.
  • pathInMiddlePanel - show path link and HTTP verb in the middle panel instead of the right one.
  • requiredPropsFirst - show required properties first ordered in the same order as in required array.
  • scrollYOffset - If set, specifies a vertical scroll-offset. This is often useful when there are fixed positioned elements at the top of the page, such as navbars, headers etc; scrollYOffset can be specified in various ways:
    • number: A fixed number of pixels to be used as offset.
    • selector: selector of the element to be used for specifying the offset. The distance from the top of the page to the element's bottom will be used as offset.
    • function: A getter function. Must return a number representing the offset (in pixels).
  • showExtensions - show vendor extensions ("x-" fields). Extensions used by ReDoc are ignored. Can be boolean or an array of string with names of extensions to display.
  • sortPropsAlphabetically - sort properties alphabetically.
  • payloadSampleIdx - if set, payload sample will be inserted at this index or last. Indexes start from 0.
  • theme - ReDoc theme. For details check theme docs.
  • untrustedSpec - if set, the spec is considered untrusted and all HTML/markdown is sanitized to prevent XSS. Disabled by default for performance reasons. Enable this option if you work with untrusted user data!
  • sideNavStyle - can be specified in various ways:
    • summary-only: displays a summary in the sidebar navigation item. (default)
    • path-only: displays a path in the sidebar navigation item.

<redoc> theme object

  • spacing
    • unit: 5 # main spacing unit used in autocomputed theme values later
    • sectionHorizontal: 40 # Horizontal section padding. COMPUTED: spacing.unit * 8
    • sectionVertical: 40 # Horizontal section padding. COMPUTED: spacing.unit * 8
  • breakpoints # breakpoints for switching three/two and mobile view layouts
    • small: '50rem'
    • medium: '85rem'
    • large: '105rem'
  • colors
    • tonalOffset: 0.3 # default tonal offset used in computations
  • typography
    • fontSize: '14px'
    • lineHeight: '1.5em'
    • fontWeightRegular: '400'
    • fontWeightBold: '600'
    • fontWeightLight: '300'
    • fontFamily: 'Roboto, sans-serif'
    • smoothing: 'antialiased'
    • optimizeSpeed: true
    • headings
      • fontFamily: 'Montserrat, sans-serif'
      • fontWeight: '400'
      • lineHeight: '1.6em'
    • code # inline code styling
      • fontSize: '13px'
      • fontFamily: 'Courier, monospace'
      • lineHeight: # COMPUTED: typography.lineHeight
      • fontWeight: # COMPUTED: typography.fontWeightRegular
      • color: '#e53935'
      • backgroundColor: 'rgba(38, 50, 56, 0.05)'
      • wrap: false # whether to break word for inline blocks (otherwise they can overflow)
    • links
      • color: # COMPUTED: colors.primary.main
      • visited: # COMPUTED: typography.links.color
      • hover: # COMPUTED: lighten(0.2 typography.links.color)
  • menu
    • width: '260px'
    • backgroundColor: '#fafafa'
    • textColor: '#333333'
    • activeTextColor: # COMPUTED: theme.menu.textColor (if set by user) or theme.colors.primary.main
    • groupItems # Group headings
      • textTransform: 'uppercase'
    • level1Items # Level 1 items like tags or section 1st level items
      • textTransform: 'none'
    • arrow # menu arrow
      • size: '1.5em'
      • color: # COMPUTED: theme.menu.textColor
  • logo
    • maxHeight: # COMPUTED: menu.width
    • maxWidth: # COMPUTED: menu.width
    • gutter: '2px' # logo image padding
  • rightPanel
    • backgroundColor: '#263238'
    • width: '40%'
    • textColor: '#ffffff'

Development

see CONTRIBUTING.md

Comments
  • Tags side menu with markdown and object description

    Tags side menu with markdown and object description

    Pretty quick workaround to be able to add additional side menu sections to tags, in the same manner it is done in the info description object.

    Also an component was added which prints a referenced object/schema, and optionally a referenced example.

    Combining both one may achieve similar structure to the one Stripe uses for their own documentation.

    opened by nanov 75
  • Migrate ReDoc to React

    Migrate ReDoc to React

    Hey, ReDoc community!

    To support OpenAPI 3.0 I am working on a major refactor of the codebase. As part of this refactor I am considering rewriting ReDoc view layer completely to React.

    Why? I've been working with React on a few side project for the last 5-6 month and I really loved working with it comparing to Angular:

    • much much simpler, no magic
    • more performant (especially since React 16 release aka Fiber)
    • the community is healthier - much more stable ready-to use modules (there are lots in Angular too, but usually they are part of some huge UI-packs)
    • smaller bundle size
    • simpler to build-in live updates
    • server-side rendering actually working
    • I love styled-components

    Also, I often hear in the issues or PRs that "I don't know Angular but I will try". Probably React can lower the barrier for new contributors.

    I will try to achieve fully backward compatibility with the Angular version.

    Now I want to hear the voice of community! What do you think? Do you find this idea is good or bad! Any concerns! Or just vote 👍 or 👎

    Thanks in advance!

    cc contributors (sorry for bothering): @bfirsh @brendo @adamaltman @cesarlevel @IvanGoncharov @amanganiello @kedashoe @alairock @Joe-noh @gierschv @jsmartfo @jaingaurav @agallou @jacobbaskin @MikeRalphson @bennyn @adamd @LeFnord @wilsonge @philsturgeon @khorolets @pgolm @jfeltesse-mdsol @Alfaspider @oblakeerickson @Jean-Daniel @KtorZ @jimmyjames @bioball

    question 
    opened by RomanHotsiy 56
  • Render model definitions? (feature support)

    Render model definitions? (feature support)

    Hello all,

    Thanks for this amazing project! ;) It is now our default view engine of our Swagger spec.

    As you can see in swagger-ui repo, there is a popular issue where people are asking for Models rendering, just like swagger-editor does. This would be great if it could be added to ReDoc! ;)

    Thanks!

    Type: Enhancement feature 
    opened by PedroMD 35
  • redoc-cli: ReferenceError: URL is not defined

    redoc-cli: ReferenceError: URL is not defined

    Hi there!

    There seems to be an issue with redoc-cli ATM.

    Noticed it with one of our docs, but can be reproduced using the demo/swagger.yaml file from this repository:

    $> yarn add redoc-cli
    $> ./node_modules/.bin/redoc-cli bundle -o './redoc-test' demo/swagger.yaml
    [ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0
    Prerendering docs
    ReferenceError: URL is not defined
        at removeQueryString (/tmp/node_modules/redoc/bundles/redoc.lib.js:6940:15)
        at /tmp/node_modules/redoc/bundles/redoc.lib.js:11055:137
        at Array.map (<anonymous>)
        at Object.children (/tmp/node_modules/redoc/bundles/redoc.lib.js:11051:104)
        at ReactDOMServerRenderer.render (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3412:55)
        at ReactDOMServerRenderer.read (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3161:29)
        at Object.renderToString (/tmp/node_modules/react-dom/cjs/react-dom-server.node.development.js:3646:27)
        at /tmp/node_modules/redoc-cli/index.js:189:29
        at Generator.next (<anonymous>)
        at fulfilled (/tmp/node_modules/redoc-cli/index.js:5:58)
    
    $> nodejs --version
    v8.10.0
    $> yarn --version
    1.13.0
    
    opened by srats 30
  • Webpack 5 `Cant Resolve` errors in `v2.0.0-rc.58`

    Webpack 5 `Cant Resolve` errors in `v2.0.0-rc.58`

    Describe the bug Running Redoc Standalone in Docusaurus 2.0.0-beta.9 and getting webpack issues stemming from the redoc openapi-core library, which does not seem to be open source

    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/config'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/redocly'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'os' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib/redocly'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "os": require.resolve("os-browserify/browser") }'
    	- install 'os-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "os": false }
    
    Module not found: Error: Can't resolve 'path' in '/Users/mySite/site/node_modules/@redocly/openapi-core/lib'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    	- install 'path-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "path": false }
    
    Module not found: Error: Can't resolve 'tty' in '/Users/mySite/site/node_modules/@redocly/openapi-core/node_modules/colorette'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "tty": require.resolve("tty-browserify") }'
    	- install 'tty-browserify'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "tty": false }
    
    Module not found: Error: Can't resolve 'buffer' in '/Users/mySite/site/node_modules/yaml/browser/dist'
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
    This is no longer the case. Verify if you need this module and configure a polyfill for it.
    
    If you want to include a polyfill, you need to:
    	- add a fallback 'resolve.fallback: { "buffer": require.resolve("buffer/") }'
    	- install 'buffer'
    If you don't want to include a polyfill, you can use an empty module like this:
    	resolve.fallback: { "buffer": false }
    client (webpack 5.65.0) compiled with 6 errors and 1 warning
    

    Expected behavior Page should render without Webpack/polyfill issues

    Type: Bug p1 
    opened by ajrice6713 27
  • Can't fetch local file

    Can't fetch local file

    My apologies if this is spelled out somewhere -- I looked through the issues.

    I can't seem to direct ReDoc to load my OpenAPI spec from the local filesystem -- only via http. I have tried the following:

    <redoc spec-url='swagger.json'></redoc>
    <redoc spec-url='file:///Full/Path/swagger.json'></redoc>
    

    in addition to other permutations. However, they all result in this error:

    Unable to resolve $ref pointer "file:///<pathname to my spec file>"

    Is there any way to have ReDoc load the spec locally?

    Type: Enhancement add-to-faq 
    opened by yspotts 26
  • False positive recursion

    False positive recursion

    Hello there, wrestling following issue.

    Imagine I want to reuse some schema, let's say ID – I have following in ./helpers/id.yaml:

    properties:
      id:
        type: number
    required:
      - id
    

    And here is a simple OpenAPI, which should result in a simple structure of three nested objects, which all wants to reference the id helper.

    openapi: 3.0.0
    info:
      title: False positive recursion
      version: '3.0'
    paths:
      /documents:
        get:
          summary: Example
          responses:
            '200':
              description: OK
              content:
                application/json:
                  schema:
                    allOf:
                      - $ref: ./helpers/id.yaml
                      - properties:
                          second:
                            allOf:
                              - $ref: ./helpers/id.yaml
                              - properties:
                                  third:
                                    allOf:
                                      - $ref: ./helpers/id.yaml
                                      - properties:
                                          something:
                                            type: string
    

    Whereas the first and second object are correctly rendered with required id attribute, the third object is flagged as recursive:

    image

    Any idea? Is it a bug or am I missing something?

    Type: Bug p2 
    opened by krystof-k 22
  • Properties on the same level as anyOf/oneOf/... are missing and anyOf merge is illogical

    Properties on the same level as anyOf/oneOf/... are missing and anyOf merge is illogical

    If I specify a schema for an object, which has properties and in addition some optional schemas it could conform to, the properties are not shown.

    Example:

    openapi: 3.0.2
    info:
      title: Example
      version: 0.4.0
    paths:
      '/example':
        get:
          responses:
            '200':
              description: 'cube:properties is not shown in the schema'
              content:
                application/json:
                  schema:
                    type: object
                    required:
                      - 'cube:dimensions'
                    properties:
                      'cube:dimensions':
                        type: object
                        oneOf:
                          - title: Spatial Dimension
                            type: object
                          - title: Temporal Dimension
                            type: object
                    anyOf:
                      - $ref: '#/components/schemas/collection_eo'
                      - $ref: '#/components/schemas/collection_sar'
                      - $ref: '#/components/schemas/collection_sci'
    components:
      schemas:
        collection_eo:
          type: object
          format: eo
        collection_sar:
          type: object
          format: sar
        collection_sci:
          type: object
          format: sci
    

    I would cube:dimensions expect to show up in ReDoc as it does in Swagger Editor: image

    Tested with ReDoc standalone version 2.0.0-rc.2

    opened by m-mohr 20
  • Regression: Double slashes added to full URL display

    Regression: Double slashes added to full URL display

    Attempted to upgrade to [email protected] this morning and noticed that it is inserting double slashes in the full url for a route:

    image

    Minimal reproduction.

    openapi: 3.0.2
    
    info:
      title: Double Slash
      version: v1
    servers:
      - url: https://api.test.invalid
    
    paths:
      /v1:
        get:
          summary: Double slash bug
          responses:
            200:
              description: OK
    
    opened by mramato 19
  • Error: Incompatible types in allOf at

    Error: Incompatible types in allOf at "undefined"

    Using 2.0.0-rc.4 with an OpenAPI spec 3.0.2 file, parsing fails and I'm getting the following error in the browser console:

    redoc.standalone.js:26397 Error: Incompatible types in allOf at "undefined" at e.mergeAllOf (redoc.standalone.js:38564) at redoc.standalone.js:38614 at Array.map () at r (redoc.standalone.js:38613) at e.hoistOneOfs (redoc.standalone.js:38625) at e.mergeAllOf (redoc.standalone.js:38537) at e.mergeAllOf (redoc.standalone.js:38568) at redoc.standalone.js:38861 at Array.map () at e.initOneOf (redoc.standalone.js:38859)

    I'm not able to understand the point in which fails.

    My OpenAPI spec 3.0.2 json file validates correctly using a tool like oas-validate from https://github.com/Mermade/oas-kit

    Type: Bug 
    opened by pintux 19
  • Is there any option to load multiple swaggers in SpecUrl

    Is there any option to load multiple swaggers in SpecUrl

    Hi, I am loading the Swagger in the below format,

    <RedocStandalone
            specUrl = 'https://....../datafile.json'
            />
    

    can anyone please let me know if there's any option to load multiple Swaggers in this context.

    opened by binobose 18
  • The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    The SLM OAS YAML file cannot be loaded by Redoc (an open source tool), which results in a browser crash and Out Of Memory error.

    We would like to render the SLM OAS YAML file on the Redoc open-source tool. Redoc cannot render SLM OAS YAML because of the nested or circular schema definition. We have around 200 APIs that use schema definition often, which causes the rendering issues.

    Here is an example of a circular reference in the SLM YAML file. SampleEndpoint   --> SchemaA     --> SchemaB       --> SchemaC         --> SchemaA       --> SchemaD         --> SchemaB

    NOTE: I ran it locally using the "redocly preview-docs" command. I tried pagination, which works fine in Redocly's premium version. Can it be supported in Redoc?

    opened by sagayakwad26 0
  • Remove path aliases from Documentation

    Remove path aliases from Documentation

    Describe the problem to be solved

    When you have path aliases in openapi.yaml with $ref, for example

    paths:
      /municipios/{municipio}:
        get:
          operationId: getMunicipality
          summary: Detalhes sobre Município  
          parameters:
            - in: path
              name: municipio
              required: true
              schema:
                type: string
                example: évora
              allowReserved: true
              description: Município
            - $ref: '#/components/parameters/json'
          responses:
            '200':
              description: Detalhes do Município
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/municipio'
    
      /municipio/{municipio}:
        $ref: '#/paths/~1municipios~1%7Bmunicipio%7D'
    

    /municipio/{municipio} is de facto merely a path alias of /municipios/{municipio}

    In the documentation both paths rules and response samples are shown in duplicate.

    Describe the solution you'd like

    I would like to remove path aliases from documentation, that is, basically remove these duplicates, since I just use them due to backward compatibility.

    Describe alternatives you've considered

    I realized this might work in client-side, but I still need to understand how

    document.querySelectorAll('div[data-section-id]').forEach(el=> {
        const attr = el.getAttribute('data-section-id'))
        // ...
    })
    
    Type: Enhancement 
    opened by jfoclpf 0
  • Command-line interface to bundle my docs into a zero-dependency HTML file

    Command-line interface to bundle my docs into a zero-dependency HTML file

    Hello, I'm sorry for my bad English. When I use redoc-cli to generate a zero-dependency HTML file,I encounter a strange problem. In the zero-dependency HTML file, I found that my request body lost some properties, but if I use command openapi preview-docs it is ok. Then I try to lint, it reports some error like this 'Expected type Schema (object) but got string. But I'm sure there's nothing wrong with what I wrote. So I lint over and over again. It still reports me the same error. Suddenly I had an epiphany, I added the .yaml suffix to the file. It actually worked!!!!! I wonder why this is, I just added the suffix to the file. Thank you very much!

    opened by Zacama 0
  • redocli docker to build html file

    redocli docker to build html file

    Describe the problem to be solved For now, the only choice to use redocli is to install via npm/yarn and build with that.

    npm i -g redoc-cli

    redoc-cli build -o openapi/test.html openapi/test.yml

    Describe the solution you'd like

    docker run -it -v $PWD:/spec redoc-cli build -o output.html swagger.yml

    Describe alternatives you've considered Use npm/yarn install is an alternative. But in the CI/CD spirit, we don't want install/build tools each time CI is triggered..

    Thanks to taking time.

    Additional context Environnement: MacOS Ventura 13.1 CI/CD: GitlabCI. Docker: Docker version 20.10.20, build 9fdeb9c.

    Type: Enhancement 
    opened by Itarix 0
  • Redoc.init callback not working on error

    Redoc.init callback not working on error

    Describe the bug Callback function registered on Redoc.init is not called on error while rendering redoc.

    Redoc.init(
      event.data,
      config,
      document.getElementById('redoc-container'),
      callback ---> doesn't seem to be called.
    );
    

    If something's wrong in my code, please tell me how to apply callback function on error.

    Expected behavior Callback function should be called on error. image

    Minimal reproducible OpenAPI snippet(if possible)

    Screenshots image

    Additional context Add any other context about the problem here.

    Type: Bug help wanted 
    opened by broccolism 4
  • Can't build on windows 10

    Can't build on windows 10

    Describe the bug Cannot build on windows 10 system

    Expected behavior A running local version

    System: OS: Windows 10 10.0.19044 CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Memory: 4.51 GB / 15.86 GB Binaries: Node: 16.14.0 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.17 - ~\AppData\Roaming\npm\yarn.CMD npm: 8.5.1 - C:\Program Files\nodejs\npm.CMD Browsers: Edge: Spartan (44.19041.1266.0), Chromium (108.0.1462.42) Internet Explorer: 11.0.19041.1566

    Additional context

    ERROR in ./src/utils/helpers.ts 137:15-35

    Module not found: Error: Can't resolve 'url' in 'D:\Weblabs\nodejs\redoc\src\utils'

    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it.

    If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }' - install 'url' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "url": false }

    ERROR in ./src/utils/helpers.ts 137:15-35

    Module not found: Error: Can't resolve 'url' in 'D:\Weblabs\nodejs\redoc\src\utils'

    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it.

    If you want to include a polyfill, you need to: - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }' - install 'url' If you don't want to include a polyfill, you can use an empty module like this: resolve.fallback: { "url": false }

    ERROR in cli/index.ts:4:33

    TS2307: Cannot find module 'update-notifier' or its corresponding type declarations. 2 | /* tslint:disable:no-implicit-dependencies */ 3 | import * as React from 'react';

    4 | import * as updateNotifier from 'update-notifier'; | ^^^^^^^^^^^^^^^^^ 5 | import { renderToString } from 'react-dom/server'; 6 | import { ServerStyleSheet } from 'styled-components'; 7 |

    ERROR in cli/index.ts:8:25

    TS2307: Cannot find module 'handlebars' or its corresponding type declarations. 6 | import { ServerStyleSheet } from 'styled-components'; 7 |

    8 | import { compile } from 'handlebars'; | ^^^^^^^^^^^^ 9 | import { createServer, IncomingMessage, ServerResponse } from 'http'; 10 | import { dirname, join, resolve, extname as getExtName } from 'path'; 11 |

    ERROR in cli/index.ts:17:23

    TS2307: Cannot find module 'chokidar' or its corresponding type declarations. 15 | import { createStore, loadAndBundleSpec, Redoc } from 'redoc'; 16 |

    17 | import { watch } from 'chokidar'; | ^^^^^^^^^^ 18 | import { 19 | createReadStream, 20 | existsSync,

    ERROR in cli/index.ts:26:25

    TS2307: Cannot find module 'mkdirp' or its corresponding type declarations. 24 | writeFileSync, 25 | } from 'fs';

    26 | import * as mkdirp from 'mkdirp'; | ^^^^^^^^ 27 | 28 | import * as YargsParser from 'yargs'; 29 | // eslint-disable-next-line import/no-extraneous-dependencies

    ERROR in cli/index.ts:122:1

    TS2769: No overload matches this call. Overload 1 of 7, '(command: string | readonly string[], showInHelp: false, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '"start the server"' is not assignable to parameter of type 'false'. Overload 2 of 7, '(command: string | readonly string[], description: string, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Type '(res: { [argName: string]: unknown; _: (string | number)[]; $0: string; }) => { [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'MiddlewareFunction<{}>'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'void | Promise'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is missing the following properties from type 'Promise': then, catch, [Symbol.toStringTag], finally Overload 3 of 7, '(command: string | readonly string[], description: string, builder?: { [key: string]: Options; } | undefined, handler?: ((args: ArgumentsCamelCase<InferredOptionTypes<{ [key: string]: Options; }>>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '(yargs: Argv<{}>) => Argv<{}>' is not assignable to parameter of type '{ [key: string]: Options; }'. Index signature is missing in type '(yargs: Argv<{}>) => Argv<{}>'. 120 | }; 121 |

    122 | YargsParser.command( | ^^^^^^^^^^^^^^^^^^^^ 123 | 'serve ', | ^^^^^^^^^^^^^^^^^ 124 | 'start the server', | ^^^^^^^^^^^^^^^^^ 125 | yargs => { | ^^^^^^^^^^^^^^^^^ 126 | yargs.positional('spec', { | ^^^^^^^^^^^^^^^^^ 127 | describe: 'path or URL to your spec', | ^^^^^^^^^^^^^^^^^ 128 | }); | ^^^^^^^^^^^^^^^^^ 129 | | ^^^^^^^^^^^^^^^^^ 130 | yargs.options('title', { | ^^^^^^^^^^^^^^^^^ 131 | describe: 'Page Title', | ^^^^^^^^^^^^^^^^^ 132 | type: 'string', | ^^^^^^^^^^^^^^^^^ 133 | }); | ^^^^^^^^^^^^^^^^^ 134 | | ^^^^^^^^^^^^^^^^^ 135 | yargs.option('s', { | ^^^^^^^^^^^^^^^^^ 136 | alias: 'ssr', | ^^^^^^^^^^^^^^^^^ 137 | describe: 'Enable server-side rendering', | ^^^^^^^^^^^^^^^^^ 138 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 139 | }); | ^^^^^^^^^^^^^^^^^ 140 | | ^^^^^^^^^^^^^^^^^ 141 | yargs.option('h', { | ^^^^^^^^^^^^^^^^^ 142 | alias: 'host', | ^^^^^^^^^^^^^^^^^ 143 | type: 'string', | ^^^^^^^^^^^^^^^^^ 144 | default: '127.0.0.1', | ^^^^^^^^^^^^^^^^^ 145 | }); | ^^^^^^^^^^^^^^^^^ 146 | | ^^^^^^^^^^^^^^^^^ 147 | yargs.option('p', { | ^^^^^^^^^^^^^^^^^ 148 | alias: 'port', | ^^^^^^^^^^^^^^^^^ 149 | type: 'number', | ^^^^^^^^^^^^^^^^^ 150 | default: 8080, | ^^^^^^^^^^^^^^^^^ 151 | }); | ^^^^^^^^^^^^^^^^^ 152 | | ^^^^^^^^^^^^^^^^^ 153 | yargs.option('w', { | ^^^^^^^^^^^^^^^^^ 154 | alias: 'watch', | ^^^^^^^^^^^^^^^^^ 155 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 156 | }); | ^^^^^^^^^^^^^^^^^ 157 | | ^^^^^^^^^^^^^^^^^ 158 | yargs.options('disable-google-font', { | ^^^^^^^^^^^^^^^^^ 159 | describe: 'Disable Google Font', | ^^^^^^^^^^^^^^^^^ 160 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 161 | default: false, | ^^^^^^^^^^^^^^^^^ 162 | }); | ^^^^^^^^^^^^^^^^^ 163 | | ^^^^^^^^^^^^^^^^^ 164 | yargs.demandOption('spec'); | ^^^^^^^^^^^^^^^^^ 165 | return yargs; | ^^^^^^^^^^^^^^^^^ 166 | }, | ^^^^^^^^^^^^^^^^^ 167 | async argv => { | ^^^^^^^^^^^^^^^^^ 168 | const config: Options = { | ^^^^^^^^^^^^^^^^^ 169 | ssr: argv.ssr as boolean, | ^^^^^^^^^^^^^^^^^ 170 | title: argv.title as string, | ^^^^^^^^^^^^^^^^^ 171 | watch: argv.watch as boolean, | ^^^^^^^^^^^^^^^^^ 172 | disableGoogleFont: argv.disableGoogleFont as boolean, | ^^^^^^^^^^^^^^^^^ 173 | templateFileName: argv.template as string, | ^^^^^^^^^^^^^^^^^ 174 | templateOptions: argv.templateOptions || {}, | ^^^^^^^^^^^^^^^^^ 175 | redocOptions: getObjectOrJSON(argv.options), | ^^^^^^^^^^^^^^^^^ 176 | }; | ^^^^^^^^^^^^^^^^^ 177 | | ^^^^^^^^^^^^^^^^^ 178 | try { | ^^^^^^^^^^^^^^^^^ 179 | notifyUpdateCliVersion(); | ^^^^^^^^^^^^^^^^^ 180 | await serve(argv.host as string, argv.port as number, argv.spec as string, config); | ^^^^^^^^^^^^^^^^^ 181 | } catch (e) { | ^^^^^^^^^^^^^^^^^ 182 | handleError(e); | ^^^^^^^^^^^^^^^^^ 183 | } | ^^^^^^^^^^^^^^^^^ 184 | }, | ^^^^^^^^^^^^^^^^^ 185 | [ | ^^^^^^^^^^^^^^^^^ 186 | res => { | ^^^^^^^^^^^^^^^^^ 187 | console.log( | ^^^^^^^^^^^^^^^^^ 188 | \n⚠️ This command is deprecated. Use "npx @redocly/cli preview-docs petstore.yaml"\n, | ^^^^^^^^^^^^^^^^^ 189 | ); | ^^^^^^^^^^^^^^^^^ 190 | return res; | ^^^^^^^^^^^^^^^^^ 191 | }, | ^^^^^^^^^^^^^^^^^ 192 | ], | ^^^^^^^^^^^^^^^^^ 193 | ) | ^^ 194 | .command( 195 | 'build ', 196 | 'build definition into zero-dependency HTML-file',

    ERROR in cli/index.ts:122:1

    TS2769: No overload matches this call. Overload 1 of 7, '(command: string | readonly string[], showInHelp: false, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '"bundle spec into zero-dependency HTML-file [deprecated]"' is not assignable to parameter of type 'false'. Overload 2 of 7, '(command: string | readonly string[], description: string, builder?: ((args: Argv<{}>) => void) | ((args: Argv<{}>) => PromiseLike<Argv<{}>>) | ((args: Argv<{}>) => Argv<...>) | undefined, handler?: ((args: ArgumentsCamelCase<...>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Type '(res: { [argName: string]: unknown; _: (string | number)[]; $0: string; }) => { [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'MiddlewareFunction<{}>'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'void | Promise'. Type '{ [argName: string]: unknown; _: (string | number)[]; $0: string; }' is not assignable to type 'Promise'. Overload 3 of 7, '(command: string | readonly string[], description: string, builder?: { [key: string]: Options; } | undefined, handler?: ((args: ArgumentsCamelCase<InferredOptionTypes<{ [key: string]: Options; }>>) => void | Promise<...>) | undefined, middlewares?: MiddlewareFunction<...>[] | undefined, deprecated?: string | ... 1 more ... | undefined): Argv<...>', gave the following error. Argument of type '(yargs: any) => any' is not assignable to parameter of type '{ [key: string]: Options; }'. Index signature is missing in type '(yargs: any) => any'. 120 | }; 121 |

    122 | YargsParser.command( | ^^^^^^^^^^^^^^^^^^^^ 123 | 'serve ', | ^^^^^^^^^^^^^^^^^ 124 | 'start the server', | ^^^^^^^^^^^^^^^^^ 125 | yargs => { | ^^^^^^^^^^^^^^^^^ 126 | yargs.positional('spec', { | ^^^^^^^^^^^^^^^^^ 127 | describe: 'path or URL to your spec', | ^^^^^^^^^^^^^^^^^ 128 | }); | ^^^^^^^^^^^^^^^^^ 129 | | ^^^^^^^^^^^^^^^^^ 130 | yargs.options('title', { | ^^^^^^^^^^^^^^^^^ 131 | describe: 'Page Title', | ^^^^^^^^^^^^^^^^^ 132 | type: 'string', | ^^^^^^^^^^^^^^^^^ 133 | }); | ^^^^^^^^^^^^^^^^^ 134 | | ^^^^^^^^^^^^^^^^^ 135 | yargs.option('s', { | ^^^^^^^^^^^^^^^^^ 136 | alias: 'ssr', | ^^^^^^^^^^^^^^^^^ 137 | describe: 'Enable server-side rendering', | ^^^^^^^^^^^^^^^^^ 138 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 139 | }); | ^^^^^^^^^^^^^^^^^ 140 | | ^^^^^^^^^^^^^^^^^ 141 | yargs.option('h', { | ^^^^^^^^^^^^^^^^^ 142 | alias: 'host', | ^^^^^^^^^^^^^^^^^ 143 | type: 'string', | ^^^^^^^^^^^^^^^^^ 144 | default: '127.0.0.1', | ^^^^^^^^^^^^^^^^^ 145 | }); | ^^^^^^^^^^^^^^^^^ 146 | | ^^^^^^^^^^^^^^^^^ 147 | yargs.option('p', { | ^^^^^^^^^^^^^^^^^ 148 | alias: 'port', | ^^^^^^^^^^^^^^^^^ 149 | type: 'number', | ^^^^^^^^^^^^^^^^^ 150 | default: 8080, | ^^^^^^^^^^^^^^^^^ 151 | }); | ^^^^^^^^^^^^^^^^^ 152 | | ^^^^^^^^^^^^^^^^^ 153 | yargs.option('w', { | ^^^^^^^^^^^^^^^^^ 154 | alias: 'watch', | ^^^^^^^^^^^^^^^^^ 155 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 156 | }); | ^^^^^^^^^^^^^^^^^ 157 | | ^^^^^^^^^^^^^^^^^ 158 | yargs.options('disable-google-font', { | ^^^^^^^^^^^^^^^^^ 159 | describe: 'Disable Google Font', | ^^^^^^^^^^^^^^^^^ 160 | type: 'boolean', | ^^^^^^^^^^^^^^^^^ 161 | default: false, | ^^^^^^^^^^^^^^^^^ 162 | }); | ^^^^^^^^^^^^^^^^^ 163 | | ^^^^^^^^^^^^^^^^^ 164 | yargs.demandOption('spec'); | ^^^^^^^^^^^^^^^^^ 165 | return yargs; | ^^^^^^^^^^^^^^^^^ 166 | }, | ^^^^^^^^^^^^^^^^^ 167 | async argv => { | ^^^^^^^^^^^^^^^^^ 168 | const config: Options = { | ^^^^^^^^^^^^^^^^^ 169 | ssr: argv.ssr as boolean, | ^^^^^^^^^^^^^^^^^ 170 | title: argv.title as string, | ^^^^^^^^^^^^^^^^^ 171 | watch: argv.watch as boolean, | ^^^^^^^^^^^^^^^^^ 172 | disableGoogleFont: argv.disableGoogleFont as boolean, | ^^^^^^^^^^^^^^^^^ 173 | templateFileName: argv.template as string, | ^^^^^^^^^^^^^^^^^ 174 | templateOptions: argv.templateOptions || {}, | ^^^^^^^^^^^^^^^^^ 175 | redocOptions: getObjectOrJSON(argv.options), | ^^^^^^^^^^^^^^^^^ 176 | }; | ^^^^^^^^^^^^^^^^^ 177 | | ^^^^^^^^^^^^^^^^^ 178 | try { | ^^^^^^^^^^^^^^^^^ 179 | notifyUpdateCliVersion(); | ^^^^^^^^^^^^^^^^^ 180 | await serve(argv.host as string, argv.port as number, argv.spec as string, config); | ^^^^^^^^^^^^^^^^^ 181 | } catch (e) { | ^^^^^^^^^^^^^^^^^ 182 | handleError(e); | ^^^^^^^^^^^^^^^^^ 183 | } | ^^^^^^^^^^^^^^^^^ 184 | }, | ^^^^^^^^^^^^^^^^^ 185 | [ | ^^^^^^^^^^^^^^^^^ 186 | res => { | ^^^^^^^^^^^^^^^^^ 187 | console.log( | ^^^^^^^^^^^^^^^^^ 188 | \n⚠️ This command is deprecated. Use "npx @redocly/cli preview-docs petstore.yaml"\n, | ^^^^^^^^^^^^^^^^^ 189 | ); | ^^^^^^^^^^^^^^^^^ 190 | return res; | ^^^^^^^^^^^^^^^^^ 191 | }, | ^^^^^^^^^^^^^^^^^ 192 | ], | ^^^^^^^^^^^^^^^^^ 193 | ) | ^^^^^^^^^^^^^^^^^ 194 | .command( | ^^^^^^^^^^^^^^^^^ 195 | 'build ', | ^^^^^^^^^^^^^^^^^ 196 | 'build definition into zero-dependency HTML-file', | ^^^^^^^^^^^^^^^^^ 197 | builderForBuildCommand, | ^^^^^^^^^^^^^^^^^ 198 | handlerForBuildCommand, | ^^^^^^^^^^^^^^^^^ 199 | ) | ^^^^^^^^^^^^^^^^^ 200 | .command( | ^^^^^^^^^^^^^^^^^ 201 | 'bundle ', | ^^^^^^^^^^^^^^^^^ 202 | 'bundle spec into zero-dependency HTML-file [deprecated]', | ^^^^^^^^^^^^^^^^^ 203 | builderForBuildCommand, | ^^^^^^^^^^^^^^^^^ 204 | handlerForBuildCommand, | ^^^^^^^^^^^^^^^^^ 205 | [ | ^^^^^^^^^^^^^^^^^ 206 | res => { | ^^^^^^^^^^^^^^^^^ 207 | console.log(\n⚠️ This command is deprecated. Use "build" command instead.\n); | ^^^^^^^^^^^^^^^^^ 208 | return res; | ^^^^^^^^^^^^^^^^^ 209 | }, | ^^^^^^^^^^^^^^^^^ 210 | ], | ^^^^^^^^^^^^^^^^^ 211 | ) | ^^^^ 212 | .demandCommand() 213 | .options('t', { 214 | alias: 'template',

    ERROR in src/components/SideMenu/styled.elements.ts:1:10

    TS2305: Module '"../../../node_modules/classnames"' has no exported member 'default'.

    1 | import { default as classnames } from 'classnames'; | ^^^^^^^ 2 | import { darken } from 'polished'; 3 | 4 | import { deprecatedCss, ShelfIcon } from '../../common-elements';

    Type: Bug 
    opened by clabnet 0
Releases(v2.0.0)
Owner
Redocly
At last, API docs you can be proud of
Redocly
Grokking the Object Oriented Design Interview

Grokking the Object Oriented Design Interview

Tusamma Sal Sabil 2.6k Jan 08, 2023
A simple USI Shogi Engine written in python using python-shogi.

Revengeshogi My attempt at creating a USI Shogi Engine in python using python-shogi. Current State of Engine Currently only generating random moves us

1 Jan 06, 2022
A tool that allows for versioning sites built with mkdocs

mkdocs-versioning mkdocs-versioning is a plugin for mkdocs, a tool designed to create static websites usually for generating project documentation. mk

Zayd Patel 38 Feb 26, 2022
Second version of SQL-PYTHON-Practicas

SQLite-Python Acerca de | Autor Sobre el repositorio Segunda version de SQL-PYTHON-Practicas 💻 Tecnologias Visual Studio Code Python SQLite3 📖 Requi

1 Jan 06, 2022
More detailed upload statistics for Nicotine+

More Upload Statistics A small plugin for Nicotine+ 3.1+ to create more detailed upload statistics. ⚠ No data previous to enabling this plugin will be

Nick 1 Dec 17, 2021
Canonical source repository for PyYAML

PyYAML - The next generation YAML parser and emitter for Python. To install, type 'python setup.py install'. By default, the setup.py script checks

The YAML Project 2k Jan 01, 2023
Plotting and analysis tools for ARTIS simulations

Artistools Artistools is collection of plotting, analysis, and file format conversion tools for the ARTIS radiative transfer code. Installation First

ARTIS Monte Carlo Radiative Transfer 8 Nov 07, 2022
The Python Dict that's better than heroin.

addict addict is a Python module that gives you dictionaries whose values are both gettable and settable using attributes, in addition to standard ite

Mats Julian Olsen 2.3k Dec 22, 2022
advance python series: Data Classes, OOPs, python

Working With Pydantic - Built-in Data Process ========================== Normal way to process data (reading json file): the normal princiople, it's f

Phung Hưng Binh 1 Nov 08, 2021
API spec validator and OpenAPI document generator for Python web frameworks.

API spec validator and OpenAPI document generator for Python web frameworks.

1001001 249 Dec 22, 2022
Loudchecker - Python script to check files for earrape

loudchecker python script to check files for earrape automatically installs depe

1 Jan 22, 2022
A comprehensive and FREE Online Python Development tutorial going step-by-step into the world of Python.

FREE Reverse Engineering Self-Study Course HERE Fundamental Python The book and code repo for the FREE Fundamental Python book by Kevin Thomas. FREE B

Kevin Thomas 7 Mar 19, 2022
Always know what to expect from your data.

Great Expectations Always know what to expect from your data. Introduction Great Expectations helps data teams eliminate pipeline debt, through data t

Great Expectations 7.8k Jan 05, 2023
A course-planning, course-map rendering and GPA-calculation web service, designed for the SFU (Simon Fraser University) student.

SFU Course Planner What is the overall goal of the project (i.e. what does it do, or what problem is it solving)? As the title suggests, this project

Ash Peng 1 Oct 21, 2021
MkDocs plugin for setting revision date from git per markdown file

mkdocs-git-revision-date-plugin MkDocs plugin that displays the last revision date of the current page of the documentation based on Git. The revision

Terry Zhao 48 Jan 06, 2023
Tips for Writing a Research Paper using LaTeX

Tips for Writing a Research Paper using LaTeX

Guanying Chen 727 Dec 26, 2022
Get link preview of a website.

Preview Link You may have seen a preview of a link with a title, image, domain, and description when you share a link on social media. This preview ha

SREEHARI K.V 8 Jan 08, 2023
Sphinx Bootstrap Theme

Sphinx Bootstrap Theme This Sphinx theme integrates the Bootstrap CSS / JavaScript framework with various layout options, hierarchical menu navigation

Ryan Roemer 584 Nov 16, 2022
Sphinx theme for readthedocs.org

Read the Docs Sphinx Theme This Sphinx theme was designed to provide a great reader experience for documentation users on both desktop and mobile devi

Read the Docs 4.3k Dec 31, 2022
Watch a Sphinx directory and rebuild the documentation when a change is detected. Also includes a livereload enabled web server.

sphinx-autobuild Rebuild Sphinx documentation on changes, with live-reload in the browser. Installation sphinx-autobuild is available on PyPI. It can

Executable Books 440 Jan 06, 2023