cocina-models 0.84.5 → 0.85.0

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: f88398655e31aa97ffb0ac963a0400dd2864535dd10819d53b57efecfeb6359f
4
- data.tar.gz: 89e6074e7ba0c38db6db81e00263f84fc579fa039615d1f6be1b52ec32daff4b
3
+ metadata.gz: f3e8bdc15327c32a4d90a32780285048b947d799816e30ce9c47feb328f7deaf
4
+ data.tar.gz: d3a3b4e03410cad650555b2a085dd85e429029465d0ddf5e950a2c9231e27d73
5
5
  SHA512:
6
- metadata.gz: 88d62e72d63ac8f5760f7ada91f7052c15ae0572f49c96ff601f4bc8f76db481015e48b910840cb862fe3bad80e91932172d6b7fe1e45bb62112dcf3613089be
7
- data.tar.gz: c3164b24d4184f9fe10a3d4b2a0bbf58881fc63bf7237f46a01065a70f4b9d1315d8ea982c1dde2bbec4c8bff327b15c857c666596575da3ce6e8bc58bcb8648
6
+ metadata.gz: 18af72ea7b0ff5ce24800694b2a29d519d975c05e99d6124660fce6a78f66f274513914ee7763ef05d60bb1beac194aa6d77db610879f829b827dfccf88ef0cd
7
+ data.tar.gz: cb1837cdb6f1b78640ef91c8efae91e0dbe9d872525bf87beb9a5b345e59fff3156f6c7d9fdb98e9e713964cfc98094ae373c897fffb2e4469faf6bde37e8a6b
data/.rubocop.yml CHANGED
@@ -6,8 +6,7 @@ require:
6
6
  - rubocop-rake
7
7
 
8
8
  AllCops:
9
- # dor-services-app is stuck at ruby 2 until we get off Fedora3
10
- TargetRubyVersion: 2.7
9
+ TargetRubyVersion: 3.0
11
10
 
12
11
  # ----- Layout ------
13
12
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocina-models (0.84.5)
4
+ cocina-models (0.85.0)
5
5
  activesupport
6
6
  deprecation
7
7
  dry-struct (~> 1.0)
@@ -32,13 +32,13 @@ GEM
32
32
  json_schema (~> 0.14, >= 0.14.3)
33
33
  openapi_parser (>= 0.11.1, < 1.0)
34
34
  rack (>= 1.5)
35
- commonmarker (0.23.5)
35
+ commonmarker (0.23.6)
36
36
  concurrent-ruby (1.1.10)
37
37
  deprecation (1.1.0)
38
38
  activesupport
39
39
  diff-lcs (1.5.0)
40
40
  docile (1.4.0)
41
- dry-container (0.10.1)
41
+ dry-container (0.11.0)
42
42
  concurrent-ruby (~> 1.0)
43
43
  dry-core (0.8.1)
44
44
  concurrent-ruby (~> 1.0)
@@ -100,7 +100,7 @@ GEM
100
100
  rspec-mocks (3.11.1)
101
101
  diff-lcs (>= 1.2.0, < 2.0)
102
102
  rspec-support (~> 3.11.0)
103
- rspec-support (3.11.0)
103
+ rspec-support (3.11.1)
104
104
  rspec_junit_formatter (0.5.1)
105
105
  rspec-core (>= 2, < 4, != 2.12.0)
106
106
  rss (0.2.9)
@@ -119,7 +119,7 @@ GEM
119
119
  parser (>= 3.1.1.0)
120
120
  rubocop-rake (0.6.0)
121
121
  rubocop (~> 1.0)
122
- rubocop-rspec (2.13.1)
122
+ rubocop-rspec (2.13.2)
123
123
  rubocop (~> 1.33)
124
124
  ruby-progressbar (1.11.0)
125
125
  simplecov (0.21.2)
@@ -135,7 +135,7 @@ GEM
135
135
  thor (1.2.1)
136
136
  tzinfo (2.0.5)
137
137
  concurrent-ruby (~> 1.0)
138
- unicode-display_width (2.2.0)
138
+ unicode-display_width (2.3.0)
139
139
  zeitwerk (2.6.0)
140
140
 
141
141
  PLATFORMS
data/README.md CHANGED
@@ -136,24 +136,34 @@ which pushes the gem to rubygems.org. Next write up the release notes: https://
136
136
 
137
137
  ### Step 2: Update client gems coupled to the models
138
138
 
139
- **NOTE**: You can skip this step if the new release is a patch-level bump only.
139
+ **NOTE**: You may skip this step if the new release is a patch-level bump only, as the client gems are pinned to a minor release of cocina-models. However, a PR to update Gemfile.lock with the new cocina-models version is welcome ... and not a blocker.
140
140
 
141
- Next, you should release versions of [sdr-client](https://github.com/sul-dlss/sdr-client) and [dor-services-client](https://github.com/sul-dlss/dor-services-client/) pinned to this version because applications such as [Argo](https://github.com/sul-dlss/argo) depend on both of these gems using the same models.
141
+ If this is a minor or major cocina-models version change, release new versions of [sdr-client](https://github.com/sul-dlss/sdr-client) and [dor-services-client](https://github.com/sul-dlss/dor-services-client/) pinned to use the new cocina-models version because applications such as [Argo](https://github.com/sul-dlss/argo) depend on both of these gems using the same models.
142
142
 
143
- ### Step 3: Update service API specifications and gems
143
+ ### Step 3: Update services directly coupled to the models
144
144
 
145
- **NOTE**: You can skip this first half of the step if there have not been any changes to the `cocina-models` OpenAPI spec since the prior release.
146
-
147
- The cocina-models gem is used in applications that have an API specification that accepts Cocina models. Next, make sure that the `openapi.yml` for these applications include the `openapi.yml` schema changes made in cocina-models. This list of services is known to include:
145
+ This list of services is known to include:
148
146
 
149
147
  * [sul-dlss/sdr-api](https://github.com/sul-dlss/sdr-api)
150
148
  * [sul-dlss/dor-services-app](https://github.com/sul-dlss/dor-services-app/)
151
149
 
152
- This can be accomplished by copying and pasting these schemas. By convention, these schemas are listed first in the `openapi.yml` of the associated projects, followed by the application-specific schemas.
150
+ **NOTE**: You can skip step 3A if there have not been any changes to the `cocina-models` OpenAPI spec since the prior release.
151
+
152
+ #### Step 3A: Update API specifications
153
+
154
+ The cocina-models gem is used in applications that have an API specification that accepts Cocina models. Make sure that the `openapi.yml` for these applications include the `openapi.yml` schema changes made in cocina-models.
155
+
156
+ This can be accomplished by copying and pasting the cocina-models schemas to the openapi.yml of the associated project. By convention, these schemas are listed first in the `openapi.yml` of the associated projects, followed by the application-specific schemas.
157
+
158
+ #### Step 3B: Bump gems and create the PRs
159
+
160
+ If step 3A was needed, use the same PRs to also bump the versions of cocina-models, sdr-client, and dor-services-client in these applications/services. Why? When [dor-services-app](https://github.com/sul-dlss/dor-services-app), for example, is updated to use the new models (via the auto-update script), these clients should be updated at the same time or there is risk of models produced by dor-services-app not being acceptable to the clients.
161
+
162
+ With or without step 3A, perform `bundle update` for cocina-models, sdr-client, and dor-services-client gems in the listed services and then make PRs for those repos.
153
163
 
154
- #### Step 3b: Bump gems
164
+ #### Step 3C: Merge 'em
155
165
 
156
- At the same, we have found it convenient to use these PRs to also bump the versions of cocina-models, sdr-client, and dor-services-client in these applications/services. Why? When [dor-services-app](https://github.com/sul-dlss/dor-services-app), for example, is updated to use the new models (via the auto-update script), these clients should be updated at the same time or there is risk of models produced by dor-services-app not being acceptable to the clients.
166
+ Get the directly coupled services PRs merged before the deploy in step 5.
157
167
 
158
168
  ### Step 4: Update other dependent applications
159
169
 
@@ -161,19 +171,19 @@ Once the above listed steps have been completed, all applications that use cocin
161
171
 
162
172
  There are scripts to help with updating other dependent applications:
163
173
 
164
- #### Step 4A: Create the PRs
174
+ #### Step 4A: Create the Cocina Level 2 PRs
165
175
 
166
176
  There is a Jenkins CI job that you can run manually to create all the PRs you need. Head to https://sul-ci-prod.stanford.edu/job/SUL-DLSS/job/access-update-scripts/job/cocina-level2-updates/ and then click `Build Now`. Click the new build that is created and then `Console Output` to watch the build. Once it has completed, you can proceed with the next step.
167
177
 
168
178
  If for some reason the above method does not work, the sul-dlss/access-update-scripts repo has a script for this: `cocina_level2_prs.rb`. You will need a github access token with scopes of "read:org" and "repo" (see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) to run it, as noted in the comments at the top of that script.
169
179
 
170
- #### Step 4B: Merge the PRs
180
+ #### Step 4B: Merge the Cocina Level 2 PRs
171
181
 
172
182
  [sul-dlss/access-update-scripts](https://github.com/sul-dlss/access-update-scripts) has a switch in the `merge-all.rb` script for this, as noted in the comments at the top of that script. (`REPOS_PATH=infrastructure GH_ACCESS_TOKEN=abc123 COCINA_LEVEL2= ./merge-all.rb`)
173
183
 
174
184
  ### Step 5: Deploy all affected applications together
175
185
 
176
- [sul-dlss/sdr-deploy](https://github.com/sul-dlss/sdr-deploy) has a flag in the deploy script to limit deploys to cocina dependent applications. Refer to instructions in the [sdr-deploy/README](https://github.com/sul-dlss/sdr-deploy/blob/main/README.md#only-deploy-repos-related-to-cocina-models-update).
186
+ [sul-dlss/sdr-deploy](https://github.com/sul-dlss/sdr-deploy) has a flag (-c) in the deploy script to limit deploys to cocina dependent applications. Refer to instructions in the [sdr-deploy/README](https://github.com/sul-dlss/sdr-deploy/blob/main/README.md#only-deploy-repos-related-to-cocina-models-update).
177
187
 
178
188
  Note that running the integration tests is currently the best way we have to check for unintended effects and/or bugs when rolling out cocina-models changes.
179
189
 
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.bindir = 'exe'
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
- spec.required_ruby_version = '>= 2.7'
25
+ spec.required_ruby_version = '>= 3.0'
26
26
 
27
27
  spec.add_dependency 'activesupport'
28
28
  spec.add_dependency 'deprecation'
@@ -14,7 +14,6 @@ module Cocina
14
14
  attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
15
15
  # URL or other pointer to the location of the contributor information.
16
16
  attribute? :valueAt, Types::Strict::String
17
- attribute :parallelContributor, Types::Strict::Array.of(DescriptiveParallelContributor).default([].freeze)
18
17
  end
19
18
  end
20
19
  end
@@ -20,7 +20,7 @@ module Cocina
20
20
  attribute? :adminMetadata, DescriptiveAdminMetadata.optional
21
21
  # URL or other pointer to the location of the resource description.
22
22
  attribute? :valueAt, Types::Strict::String
23
- # Stanford persistent URL associated with the related resource. Note this is http, not https.
23
+ # Stanford persistent URL associated with the related resource.
24
24
  attribute :purl, Types::Strict::String
25
25
  end
26
26
  end
@@ -6,9 +6,9 @@ module Cocina
6
6
  module ToMods
7
7
  # Maps geo extension from cocina to MODS
8
8
  class Geographic # rubocop:disable Metrics/ClassLength
9
- TYPE_REGEX = /^type$/.freeze
10
- MEDIA_REGEX = /^media type$/.freeze
11
- DATA_FORMAT_REGEX = /^data format$/.freeze
9
+ TYPE_REGEX = /^type$/
10
+ MEDIA_REGEX = /^media type$/
11
+ DATA_FORMAT_REGEX = /^data format$/
12
12
 
13
13
  ABOUT_URI_PREFIX = 'http://purl.stanford.edu/'
14
14
 
@@ -12,7 +12,7 @@ module Cocina
12
12
  'genre' => :genre,
13
13
  'occupation' => :occupation
14
14
  }.freeze
15
- DEORDINAL_REGEX = /(?<=[0-9])(?:st|nd|rd|th)/.freeze
15
+ DEORDINAL_REGEX = /(?<=[0-9])(?:st|nd|rd|th)/
16
16
 
17
17
  # @params [Nokogiri::XML::Builder] xml
18
18
  # @params [Array<Cocina::Models::DescriptiveValue>] subjects
@@ -19,7 +19,7 @@ module Cocina
19
19
  attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
20
20
  attribute? :standard, Standard.optional
21
21
  attribute :subject, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
22
- # Stanford persistent URL associated with the related resource. Note this is http, not https.
22
+ # Stanford persistent URL associated with the related resource.
23
23
  attribute? :purl, Types::Strict::String
24
24
  attribute? :access, DescriptiveAccessMetadata.optional
25
25
  attribute :relatedResource, Types::Strict::Array.of(RelatedResource).default([].freeze)
@@ -71,7 +71,7 @@ module Cocina
71
71
  # Some part of the path are ignored for the purpose of matching.
72
72
  def clean_path(path)
73
73
  new_path = path.reject do |part|
74
- part.is_a?(Integer) || %i[parallelValue parallelContributor parallelEvent].include?(part)
74
+ part.is_a?(Integer) || %i[parallelValue parallelEvent].include?(part)
75
75
  end
76
76
  # This needs to happen after parallelValue is removed
77
77
  # to handle structuredValue > parallelValue > structuredValue
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cocina
4
4
  module Models
5
- VERSION = '0.84.5'
5
+ VERSION = '0.85.0'
6
6
  end
7
7
  end
data/openapi.yml CHANGED
@@ -549,11 +549,6 @@ components:
549
549
  valueAt:
550
550
  description: URL or other pointer to the location of the contributor information.
551
551
  type: string
552
- parallelContributor:
553
- description: For multiple representations of information about the same contributor (e.g. in different languages).
554
- type: array
555
- items:
556
- $ref: "#/components/schemas/DescriptiveParallelContributor"
557
552
  ControlledDigitalLendingAccess:
558
553
  type: object
559
554
  properties:
@@ -777,44 +772,6 @@ components:
777
772
  type: array
778
773
  items:
779
774
  $ref: "#/components/schemas/DescriptiveValue"
780
- DescriptiveParallelContributor:
781
- description: Value model for multiple representations of information about the same contributor (e.g. in different languages).
782
- deprecated: true
783
- type: object
784
- additionalProperties: false
785
- properties:
786
- name:
787
- description: Names associated with a contributor.
788
- type: array
789
- items:
790
- $ref: "#/components/schemas/DescriptiveValue"
791
- type:
792
- description: Entity type of the contributor (person, organization, etc.). See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md for valid types.
793
- type: string
794
- status:
795
- description: Status of the contributor relative to other parallel contributors (e.g. the primary author among a group of contributors).
796
- type: string
797
- role:
798
- description: Relationships of the contributor to the resource or to an event in its history.
799
- type: array
800
- items:
801
- $ref: "#/components/schemas/DescriptiveValue"
802
- identifier:
803
- description: Identifiers and URIs associated with the contributor entity.
804
- type: array
805
- items:
806
- $ref: "#/components/schemas/DescriptiveValue"
807
- note:
808
- description: Other information associated with the contributor.
809
- type: array
810
- items:
811
- $ref: "#/components/schemas/DescriptiveValue"
812
- valueAt:
813
- description: URL or other pointer to the location of the contributor information.
814
- type: string
815
- valueLanguage:
816
- # description: Language of the descriptive element value
817
- $ref: "#/components/schemas/DescriptiveValueLanguage"
818
775
  DescriptiveParallelEvent:
819
776
  description: Value model for multiple representations of information about the same event (e.g. in different languages).
820
777
  type: object
@@ -1459,7 +1416,7 @@ components:
1459
1416
  description: Width in pixels
1460
1417
  type: integer
1461
1418
  Purl:
1462
- description: Stanford persistent URL associated with the related resource. Note this is http, not https.
1419
+ description: Stanford persistent URL associated with the related resource.
1463
1420
  type: string
1464
1421
  format: uri
1465
1422
  # Canonical URI is https
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.84.5
4
+ version: 0.85.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-14 00:00:00.000000000 Z
11
+ date: 2022-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -392,7 +392,6 @@ files:
392
392
  - lib/cocina/models/descriptive_basic_value.rb
393
393
  - lib/cocina/models/descriptive_geographic_metadata.rb
394
394
  - lib/cocina/models/descriptive_grouped_value.rb
395
- - lib/cocina/models/descriptive_parallel_contributor.rb
396
395
  - lib/cocina/models/descriptive_parallel_event.rb
397
396
  - lib/cocina/models/descriptive_parallel_value.rb
398
397
  - lib/cocina/models/descriptive_structured_value.rb
@@ -531,7 +530,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
531
530
  requirements:
532
531
  - - ">="
533
532
  - !ruby/object:Gem::Version
534
- version: '2.7'
533
+ version: '3.0'
535
534
  required_rubygems_version: !ruby/object:Gem::Requirement
536
535
  requirements:
537
536
  - - ">="
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cocina
4
- module Models
5
- # DEPRECATED
6
- # Value model for multiple representations of information about the same contributor (e.g. in different languages).
7
- class DescriptiveParallelContributor < Struct
8
- attribute :name, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
9
- # Entity type of the contributor (person, organization, etc.). See https://github.com/sul-dlss/cocina-models/blob/main/docs/description_types.md for valid types.
10
- attribute? :type, Types::Strict::String
11
- # Status of the contributor relative to other parallel contributors (e.g. the primary author among a group of contributors).
12
- attribute? :status, Types::Strict::String
13
- attribute :role, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
14
- attribute :identifier, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
15
- attribute :note, Types::Strict::Array.of(DescriptiveValue).default([].freeze)
16
- # URL or other pointer to the location of the contributor information.
17
- attribute? :valueAt, Types::Strict::String
18
- attribute? :valueLanguage, DescriptiveValueLanguage.optional
19
- end
20
- end
21
- end