faker 3.3.1 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
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