Sha256: f00289290700e52f0dff3df8f8789fd4ff0293deab057b028bfd52774661a79e

Contents?: true

Size: 1.25 KB

Versions: 21

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'set'

module LicenseFinder
  class PipPackage < Package
    LICENSE_FORMAT = /^License.*::\s*(.*)$/.freeze
    INVALID_LICENSES = ['', 'UNKNOWN'].to_set

    def self.license_names_from_spec(spec)
      license_names = spec['license'].to_s.strip.split(' or ')
      has_unrecognized_license = false

      license_names.each do |license_name|
        license = License.find_by_name(license_name.strip)

        has_unrecognized_license ||= license.unrecognized_matcher?
      end

      return license_names if !license_names.empty? && !has_unrecognized_license

      spec
        .fetch('classifiers', [])
        .select { |c| c =~ LICENSE_FORMAT }
        .map { |c| c.gsub(LICENSE_FORMAT, '\1') }
    end

    def initialize(name, version, spec, options = {})
      super(
        name,
        version,
        options.merge(
          authors: spec['author'],
          summary: spec['summary'],
          description: spec['description'],
          homepage: spec['home_page'],
          spec_licenses: self.class.license_names_from_spec(spec)
        )
      )
    end

    def package_manager
      'Pip'
    end

    def package_url
      "https://pypi.org/project/#{CGI.escape(name)}/#{CGI.escape(version)}/"
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
license_finder-7.1.0 lib/license_finder/packages/pip_package.rb
license_finder-7.0.1 lib/license_finder/packages/pip_package.rb
license_finder-7.0.0 lib/license_finder/packages/pip_package.rb
license_finder-6.15.0 lib/license_finder/packages/pip_package.rb
gitlab-license_finder-6.14.2.1 lib/license_finder/packages/pip_package.rb
license_finder-6.14.2 lib/license_finder/packages/pip_package.rb
license_finder-6.14.1 lib/license_finder/packages/pip_package.rb
license_finder-6.13.0 lib/license_finder/packages/pip_package.rb
license_finder-6.12.2 lib/license_finder/packages/pip_package.rb
license_finder-6.12.1 lib/license_finder/packages/pip_package.rb
license_finder-6.12.0 lib/license_finder/packages/pip_package.rb
license_finder-6.11.0 lib/license_finder/packages/pip_package.rb
license_finder-6.10.1 lib/license_finder/packages/pip_package.rb
license_finder-6.10.0 lib/license_finder/packages/pip_package.rb
license_finder-6.9.0 lib/license_finder/packages/pip_package.rb
license_finder-6.8.2 lib/license_finder/packages/pip_package.rb
license_finder-6.8.1 lib/license_finder/packages/pip_package.rb
license_finder-6.8.0 lib/license_finder/packages/pip_package.rb
license_finder-6.7.0 lib/license_finder/packages/pip_package.rb
license_finder-6.6.2 lib/license_finder/packages/pip_package.rb