faker 3.3.1 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9cb066b564608902aac8699487a9d11cb48bac922915f51b2ca7d5e9ed2c3d5f
4
- data.tar.gz: edfabcbea53ec9ed1c7acd2dcf6c8fe6475efa56bae692758aaf6103de771993
3
+ metadata.gz: cf806bbcecec3b286e05fe7c79f0b4274708a3a7f55add0b3488a3ba8bf574f6
4
+ data.tar.gz: 688f47f7f92a4b58281ef2e3beb0df72e134e916929d7aa1ff4e6db07af9151d
5
5
  SHA512:
6
- metadata.gz: f76bde79e5d96a73b34d487a7bb2a8d1cc5f05631d9ba48952edbb2a3f6470409586a974676c329b7a61112f338c33ad631e6362a4c54242e4d61efe52f1f29c
7
- data.tar.gz: dcb683004a0cc255d076059a3b199870a921473355358d25afd73f904255db7f30297779ec75364ddebb2f806a6a874ef0e328e3dcce0549a3b6dfea8ee96e0a
6
+ metadata.gz: 4cd84609a1b8b0d846f5185cd544141e22d8296a2bcbe4a613daabcdadde8afa1039a9087dafbf7b7ccba7668ff5c506b1ca25cbebd3520455760a16dea45cd6
7
+ data.tar.gz: ab939601c6ceeb1f051d708687a61e2a89c3e9da77881159866a73cb5039c9292101cb48d3b19c36607b1cbf25192e8895e7e49b0dde1e88c0e07c0e24e75f01
data/CHANGELOG.md CHANGED
@@ -1,5 +1,94 @@
1
1
  # Changelog
2
2
 
3
+ ## [v3.4.2](https://github.com/faker-ruby/faker/tree/v3.4.2) (2024-07-16)
4
+
5
+ Happy July with a new faker-ruby release.
6
+
7
+ This version:
8
+
9
+ - introduces a breaking change for `Faker::NationalHealthService.british_number` (more details below)
10
+ - adds translation for some generators
11
+ - fixes bugs
12
+
13
+ ### Breaking changes
14
+
15
+ The NHS sets aside a range of numbers from 999 000 0000 to 999 999 9999 for test purposes. The old range could
16
+ produce NHS numbers that were in use by real patients in the UK/England and Wales. In this version, `Faker::NationalHealthService.british_number` uses the test range for creating NHS numbers rather than the previous 400 000 0010 to 499 999 9999 range.
17
+
18
+ Breaking change was introduced in "Add test range param to NHS numbers" by @neanias in https://github.com/faker-ruby/faker/pull/2947
19
+
20
+ ### Improvements & Bug fixes
21
+
22
+ * Add Bank and Sport to Swedish locale by @twk-mn in https://github.com/faker-ruby/faker/pull/2961
23
+ * docs: update with notes about validity for zips by @garrettgregor in https://github.com/faker-ruby/faker/pull/2963
24
+ * `Faker::Games::Dota` missing quotes and new heroes by @arthurka-o in https://github.com/faker-ruby/faker/pull/2907
25
+ * Add phone_number.country_code and address.full_address in locale sv by @larkro in https://github.com/faker-ruby/faker/pull/2965
26
+ * Fix typo by @fynsta in https://github.com/faker-ruby/faker/pull/2968
27
+ * fix: `Faker::Internet.username` should not generate duplicated punctuation by @thdaraujo in https://github.com/faker-ruby/faker/pull/2970
28
+ * Update dog breed names for `en-US` locale by @mononoken in https://github.com/faker-ruby/faker/pull/2972
29
+ * Add `Deprecator.skip_warning?` ability to silence deprecators on tests by @keshavbiswa in https://github.com/faker-ruby/faker/pull/2956
30
+
31
+ ### Update local dependencies
32
+
33
+ * Bump timecop from 0.9.9 to 0.9.10 by @dependabot in https://github.com/faker-ruby/faker/pull/2969
34
+ * Bump minitest from 5.23.1 to 5.24.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2975
35
+ * Bump bundler version to `2.4.22` by @thdaraujo in https://github.com/faker-ruby/faker/pull/2978
36
+ * Bump rubocop from 1.64.1 to 1.65.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2979
37
+ * Bump rubocop-minitest from 0.35.0 to 0.35.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2980
38
+
39
+ ## New Contributors
40
+ * @twk-mn made their first contribution in https://github.com/faker-ruby/faker/pull/2961
41
+ * @neanias made their first contribution in https://github.com/faker-ruby/faker/pull/2947
42
+ * @garrettgregor made their first contribution in https://github.com/faker-ruby/faker/pull/2963
43
+ * @arthurka-o made their first contribution in https://github.com/faker-ruby/faker/pull/2907
44
+ * @larkro made their first contribution in https://github.com/faker-ruby/faker/pull/2965
45
+ * @fynsta made their first contribution in https://github.com/faker-ruby/faker/pull/2968
46
+ * @mononoken made their first contribution in https://github.com/faker-ruby/faker/pull/2972
47
+
48
+ **Full Changelog**: https://github.com/faker-ruby/faker/compare/v.3.4.1...v3.4.2
49
+
50
+ ---------------------------------
51
+
52
+ ## [v3.4.1](https://github.com/faker-ruby/faker/tree/v3.4.1) (2024-05-28)
53
+
54
+ ### What's changed
55
+
56
+ * Performance: Sample arrays instead of performing shuffle and slice by @alextaujenis in https://github.com/faker-ruby/faker/pull/2940
57
+ * Performance: Reduce the time complexity of `Faker::Crypto` generators by @alextaujenis in https://github.com/faker-ruby/faker/pull/2938
58
+ * Remove tzinfo dependency by @stefannibrasil in https://github.com/faker-ruby/faker/pull/2952
59
+
60
+ ### Bug fixes
61
+
62
+ * Fix invalid IANA time zone identifier for `Atlantic/Cape_Verde` by @andrelaszlo in https://github.com/faker-ruby/faker/pull/2927
63
+ * Fix entry in faker.food.ingredients by @matthewmayer in https://github.com/faker-ruby/faker/pull/2933
64
+ * Docs: add absolute links to CONTRIBUTING from README by @matthewmayer in https://github.com/faker-ruby/faker/pull/2934
65
+ * Fix: `Faker::Number.hexadecimal` should include characters within the range of `[0-9a-f]` by @alextaujenis in https://github.com/faker-ruby/faker/pull/2942
66
+ * Username splits names by space and doesn't regex match them by @keshavbiswa in https://github.com/faker-ruby/faker/pull/2950
67
+
68
+ ### Features
69
+
70
+ * Add animals, desserts, foods, hobbies, house, and k-pop translations to the Korean locale file by @connie-feng in https://github.com/faker-ruby/faker/pull/2935
71
+ * Add adjectives to Korean locale file by @connie-feng in https://github.com/faker-ruby/faker/pull/2930
72
+ * Add emotions, movies, Pokemon, and Studio Ghibli to the Korean locale by @connie-feng in https://github.com/faker-ruby/faker/pull/2941
73
+ * Add Japanese translations for `Faker::Sports::Football`. by @yamat47 in https://github.com/faker-ruby/faker/pull/2903
74
+
75
+ ### Update local dependencies
76
+
77
+ * Bump rake from 13.1.0 to 13.2.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2929
78
+ * Bump i18n from 1.14.4 to 1.14.5 by @dependabot in https://github.com/faker-ruby/faker/pull/2949
79
+ * Bump minitest from 5.22.3 to 5.23.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2957
80
+ * Bump rubocop from 1.63.4 to 1.64.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2958
81
+
82
+ ## New Contributors
83
+
84
+ * @connie-feng made their first contribution in https://github.com/faker-ruby/faker/pull/2930
85
+ * @andrelaszlo made their first contribution in https://github.com/faker-ruby/faker/pull/2927
86
+ * @matthewmayer made their first contribution in https://github.com/faker-ruby/faker/pull/2933
87
+
88
+ **Full Changelog**: https://github.com/faker-ruby/faker/compare/v3.3.1...v.3.4.1
89
+
90
+ ---------------------------------
91
+
3
92
  ## [v3.3.1](https://github.com/faker-ruby/faker/tree/v3.3.1) (2024-04-02)
4
93
 
5
94
  ### Bug fixes
data/README.md CHANGED
@@ -14,7 +14,7 @@ Faker helps you generate realistic test data, and populate your
14
14
  database with more than a couple of records while you're doing development.
15
15
 
16
16
  It comes in very handy for taking screenshots (taking screenshots for a personal project)
17
- and it was the original impetus for the creation of this gem).
17
+ and it was the original impetus for the creation of this gem.
18
18
 
19
19
  ## Quick links
20
20
 
@@ -24,6 +24,14 @@ and it was the original impetus for the creation of this gem).
24
24
  [rubydocs]: https://www.rubydoc.info/gems/faker/
25
25
  [changelog]: CHANGELOG.md
26
26
 
27
+ ## In the media
28
+
29
+ - 📰 [With Great Humor Comes Great Developer Engagement] - KTH Royal Institute of Technology research
30
+ - 🎧 [Computer und Kommunikation 4.5.2024, komplette Sendung] - Deutschland Funk Radio Interview
31
+
32
+ [With Great Humor Comes Great Developer Engagement]: https://arxiv.org/pdf/2312.01680
33
+ [Computer und Kommunikation 4.5.2024, komplette Sendung]: https://www.deutschlandfunk.de/computer-und-kommunikation-4-5-2024-komplette-sendung-dlf-16492b03-100.html
34
+
27
35
  ## Table of Contents
28
36
 
29
37
  - [Faker](#faker)
@@ -486,9 +494,9 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
486
494
 
487
495
  ## Contributing
488
496
 
489
- **Note**: We are not accepting proposals for new generators and locales. The [Contributing](CONTRIBUTING.md) guide has a few notes about this decision.
497
+ **Note**: We are not accepting proposals for new generators and locales. The [Contributing](https://github.com/faker-ruby/faker/blob/main/CONTRIBUTING.md) guide has a few notes about this decision.
490
498
 
491
- Take a look at the [Contributing](CONTRIBUTING.md) document for
499
+ Take a look at the [Contributing](https://github.com/faker-ruby/faker/blob/main/CONTRIBUTING.md) document for
492
500
  instructions on setting up the repo on your machine, opening bug reports, understanding the codebase,
493
501
  and creating a good pull request.
494
502
 
@@ -133,10 +133,9 @@ module Faker
133
133
  resolved_num = resolve(number)
134
134
  word_list = translate('faker.lovecraft.words')
135
135
  word_list *= ((resolved_num / word_list.length) + 1)
136
+ words = sample(word_list, resolved_num)
137
+ return words if spaces_allowed
136
138
 
137
- return shuffle(word_list)[0, resolved_num] if spaces_allowed
138
-
139
- words = shuffle(word_list)[0, resolved_num]
140
139
  words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
141
140
  end
142
141
 
@@ -119,8 +119,8 @@ module Faker
119
119
  return numerify(letterified_string, leading_zero: true)
120
120
  end
121
121
 
122
- # provide a zip code that is valid for the state provided
123
- # see http://www.fincen.gov/forms/files/us_state_territory_zip_codes.pdf
122
+ # provide a zip code that may be valid for the state provided
123
+ # note: zip code may appear in the correct format for the state provided but may not be an actual state zip.
124
124
  bothify(fetch("address.postcode_by_state.#{state_abbreviation}"))
125
125
  end
126
126
 
@@ -5,6 +5,15 @@ require 'openssl'
5
5
  module Faker
6
6
  class Crypto < Base
7
7
  class << self
8
+ # Setting the lorem character number lower than the default of
9
+ # 255 reduces the time complexity of each hash algorithm while
10
+ # still returning deterministically unique values. See
11
+ # https://github.com/faker-ruby/faker/pull/2938 for more info.
12
+ MD5_MIN_NUMBER_OF_CHARACTERS = 25
13
+ SHA1_MIN_NUMBER_OF_CHARACTERS = 31
14
+ SHA256_MIN_NUMBER_OF_CHARACTERS = 50
15
+ SHA512_MIN_NUMBER_OF_CHARACTERS = 100
16
+
8
17
  ##
9
18
  # Produces an MD5 hash.
10
19
  #
@@ -15,7 +24,7 @@ module Faker
15
24
  #
16
25
  # @faker.version 1.6.4
17
26
  def md5
18
- OpenSSL::Digest::MD5.hexdigest(Lorem.characters)
27
+ OpenSSL::Digest::MD5.hexdigest(Lorem.characters(number: MD5_MIN_NUMBER_OF_CHARACTERS))
19
28
  end
20
29
 
21
30
  ##
@@ -28,7 +37,7 @@ module Faker
28
37
  #
29
38
  # @faker.version 1.6.4
30
39
  def sha1
31
- OpenSSL::Digest::SHA1.hexdigest(Lorem.characters)
40
+ OpenSSL::Digest::SHA1.hexdigest(Lorem.characters(number: SHA1_MIN_NUMBER_OF_CHARACTERS))
32
41
  end
33
42
 
34
43
  ##
@@ -41,7 +50,7 @@ module Faker
41
50
  #
42
51
  # @faker.version 1.6.4
43
52
  def sha256
44
- OpenSSL::Digest::SHA256.hexdigest(Lorem.characters)
53
+ OpenSSL::Digest::SHA256.hexdigest(Lorem.characters(number: SHA256_MIN_NUMBER_OF_CHARACTERS))
45
54
  end
46
55
 
47
56
  ##
@@ -54,7 +63,7 @@ module Faker
54
63
  #
55
64
  # @faker.version next
56
65
  def sha512
57
- OpenSSL::Digest::SHA512.hexdigest(Lorem.characters)
66
+ OpenSSL::Digest::SHA512.hexdigest(Lorem.characters(number: SHA512_MIN_NUMBER_OF_CHARACTERS))
58
67
  end
59
68
  end
60
69
  end
@@ -39,10 +39,9 @@ module Faker
39
39
  (supplemental ? translate('faker.lorem.words') : [])
40
40
  )
41
41
  word_list *= ((resolved_num / word_list.length) + 1)
42
+ words = sample(word_list, resolved_num)
43
+ return words if spaces_allowed
42
44
 
43
- return shuffle(word_list)[0, resolved_num] if spaces_allowed
44
-
45
- words = shuffle(word_list)[0, resolved_num]
46
45
  words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
47
46
  end
48
47
 
@@ -63,9 +63,12 @@ module Faker
63
63
  # Faker::Internet.username(specifier: 20, separators: ['_']) #=> "nikki_sawaynnikki_saway"
64
64
  def username(specifier: nil, separators: %w[. _])
65
65
  with_locale(:en) do
66
- return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
67
-
68
66
  case specifier
67
+ when ::String
68
+ names = specifier.gsub("'", '').scan(/[[:word:]]+/)
69
+ shuffled_names = shuffle(names)
70
+
71
+ return shuffled_names.join(sample(separators)).downcase
69
72
  when Integer
70
73
  # If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error
71
74
  raise ArgumentError, 'Given argument is too large' if specifier > 10**6
@@ -45,7 +45,7 @@ module Faker
45
45
  word_list -= exclude_words
46
46
  end
47
47
  word_list *= ((resolved_num / word_list.length) + 1)
48
- shuffle(word_list)[0, resolved_num]
48
+ sample(word_list, resolved_num)
49
49
  end
50
50
 
51
51
  ##
@@ -6,14 +6,17 @@ module Faker
6
6
  ##
7
7
  # Produces a random British NHS number.
8
8
  #
9
+ # The NHS sets aside a range of numbers from 999 000 0000 to 999 999 9999
10
+ # for test purposes.
11
+ #
9
12
  # @return [String]
10
13
  #
11
14
  # @example
12
- # Faker::NationalHealthService.british_number #=> "403 958 5577"
15
+ # Faker::NationalHealthService.british_number #=> "999 464 0232"
13
16
  #
14
17
  # @faker.version 1.9.2
15
18
  def british_number
16
- base_number = rand(400_000_001...499_999_999)
19
+ base_number = rand(999_000_001...999_999_999)
17
20
  # If the check digit is equivalent to 10, the number is invalid.
18
21
  # See https://en.wikipedia.org/wiki/NHS_number
19
22
  base_number -= 1 if check_digit(number: base_number) == 10
@@ -24,6 +27,8 @@ module Faker
24
27
  .join
25
28
  end
26
29
 
30
+ private
31
+
27
32
  ##
28
33
  # Produces a random British NHS number's check digit.
29
34
  #
@@ -114,7 +114,7 @@ module Faker
114
114
  # @faker.version 1.0.0
115
115
  def hexadecimal(digits: 6)
116
116
  hex = ''
117
- digits.times { hex += rand(15).to_s(16) }
117
+ digits.times { hex += rand(16).to_s(16) }
118
118
  hex
119
119
  end
120
120
 
@@ -444,11 +444,11 @@ module Faker
444
444
  private
445
445
 
446
446
  def gender
447
- shuffle(%w[male female]).pop
447
+ sample(%w[male female])
448
448
  end
449
449
 
450
450
  def timezone
451
- shuffle((-12..12).to_a).pop
451
+ sample((-12..12).to_a)
452
452
  end
453
453
 
454
454
  def image
@@ -460,11 +460,11 @@ module Faker
460
460
  end
461
461
 
462
462
  def random_number_from_range(range)
463
- shuffle(range.to_a).pop
463
+ sample(range.to_a)
464
464
  end
465
465
 
466
466
  def random_boolean
467
- shuffle([true, false]).pop
467
+ sample([true, false])
468
468
  end
469
469
  end
470
470
  end
@@ -18,11 +18,9 @@ module Faker
18
18
  # @faker.version 1.8.6
19
19
  def rb_string(words: 1)
20
20
  resolved_num = resolve(words)
21
- word_list =
22
- translate('faker.lorem.words')
23
-
21
+ word_list = translate('faker.lorem.words')
24
22
  word_list *= ((resolved_num / word_list.length) + 1)
25
- shuffle(word_list)[0, resolved_num].join(' ')
23
+ sample(word_list, resolved_num).join(' ')
26
24
  end
27
25
 
28
26
  ##
@@ -48,12 +48,13 @@ module Faker
48
48
  # @return [String]
49
49
  #
50
50
  # @example
51
- # Faker::Vehicle.manufacture #=> "Lamborghini"
51
+ # Faker::Vehicle.manufacturer #=> "Lamborghini"
52
52
  #
53
53
  # @faker.version 1.6.4
54
- def manufacture
55
- fetch('vehicle.manufacture')
54
+ def manufacturer
55
+ fetch('vehicle.manufacturer')
56
56
  end
57
+ alias manufacture manufacturer
57
58
 
58
59
  ##
59
60
  # Produces a random vehicle make.
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Faker
4
- extend Deprecator
5
-
6
4
  class Locations
7
5
  class Australia < Base
8
6
  class << self
@@ -48,5 +46,7 @@ module Faker
48
46
  end
49
47
  end
50
48
  end
49
+
50
+ include Deprecator
51
51
  deprecate_generator('Australia', Locations::Australia)
52
52
  end
data/lib/faker/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Faker # :nodoc:
4
- VERSION = '3.3.1'
4
+ VERSION = '3.4.2'
5
5
  end
@@ -10,7 +10,10 @@ module Faker
10
10
  extension = Module.new do
11
11
  def const_missing(missing_const_name)
12
12
  if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
13
- $stdout.puts("DEPRECATION WARNING: #{name}::#{replacement[:old_generator]} is deprecated. Use #{replacement[:new_constant]} instead.")
13
+ unless Faker::Deprecator.skip_warning?
14
+ $stdout.puts("DEPRECATION WARNING: #{name}::#{replacement[:old_generator]} is deprecated. Use #{replacement[:new_constant]} instead.")
15
+ end
16
+
14
17
  return replacement[:new_constant]
15
18
  end
16
19
 
@@ -25,6 +28,26 @@ module Faker
25
28
 
26
29
  base.singleton_class.prepend extension
27
30
  end
31
+
32
+ def self.skip_warning
33
+ original = Faker::Deprecator.skip
34
+ Faker::Deprecator.skip = true
35
+ yield
36
+ ensure
37
+ Faker::Deprecator.skip = original
38
+ end
39
+
40
+ def self.skip_warning?
41
+ skip == true
42
+ end
43
+
44
+ def self.skip
45
+ @skip ||= false
46
+ end
47
+
48
+ def self.skip=(value)
49
+ @skip = value
50
+ end
28
51
  end
29
52
  end
30
53
  # rubocop:enable Style/ClassVars
@@ -1717,7 +1717,7 @@ en:
1717
1717
  - America/Godthab
1718
1718
  - Atlantic/South_Georgia
1719
1719
  - Atlantic/Azores
1720
- - Atlantic/Cabo_Verde
1720
+ - Atlantic/Cape_Verde
1721
1721
  - Europe/Dublin
1722
1722
  - Europe/London
1723
1723
  - Europe/Lisbon