Skip to content

Deprecate backwards-compatibility delegates in DocSpec.Spec.Schema #23

@StephanMeijer

Description

@StephanMeijer

Problem

DocSpec.Spec.Schema (lines 400–516) contains 6 delegated functions that all forward to DocSpec.JSON:

  • encode_without_defaults/1DocSpec.JSON.to_encodable/1
  • to_camel_case/1DocSpec.JSON.to_camel_case/1
  • to_snake_case/1DocSpec.JSON.to_snake_case/1
  • decode_json/1DocSpec.JSON.decode/1
  • decode_json!/1DocSpec.JSON.decode!/1
  • decode_keys/1DocSpec.JSON.from_decoded/1

The comment says these are "kept for backwards compatibility."

Issues

  • Duplicates DocSpec.JSON's documented public API
  • Adds maintenance burden (two sets of @doc + @spec to keep in sync)
  • Confuses library consumers about which module to use for JSON operations
  • Schema is not where users would look for JSON encoding/decoding functions

Proposal

  1. Add @deprecated "Use DocSpec.JSON.to_encodable/1 instead" (etc.) to each delegate
  2. Document migration in CHANGELOG
  3. Remove in the next major version

Files

  • lib/docspec/spec/schema.ex (lines 400–516)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions