Skip to content
This repository has been archived by the owner on May 8, 2023. It is now read-only.

Commit

Permalink
Revert "JSON Schema Support (#123)"
Browse files Browse the repository at this point in the history
This reverts commit 8d1880e.
  • Loading branch information
mvpatel2000 committed Jul 28, 2022
1 parent a88a1b5 commit 6f8303e
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 481 deletions.
1 change: 0 additions & 1 deletion meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ requirements:
- python >=3.7
- pyyaml >=5.4.1
- ruamel.yaml >=0.17.10
- jsonschema >=4.7.2, <4.8

test:
requires:
Expand Down
4 changes: 1 addition & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@

exec(open('yahp/version.py', 'r', encoding='utf-8').read())

install_requires = [
'PyYAML>=5.4.1', 'ruamel.yaml>=0.17.10', 'docstring_parser>=0.14.1,<=0.15', 'jsonschema>=4.7.2,<4.8'
]
install_requires = ['PyYAML>=5.4.1', 'ruamel.yaml>=0.17.10', 'docstring_parser>=0.14.1,<=0.15']

extra_deps = {}

Expand Down
226 changes: 0 additions & 226 deletions tests/test_json_schema.py

This file was deleted.

67 changes: 2 additions & 65 deletions tests/yahp_fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@
import textwrap
from dataclasses import dataclass
from enum import Enum, IntEnum
from typing import Any, Dict, List, NamedTuple, Optional, Type, Union, cast
from typing import Any, Dict, List, NamedTuple, Optional, Union, cast

import pytest
import yaml

import yahp as hp
from yahp.hparams import Hparams
from yahp.types import JSON


Expand Down Expand Up @@ -119,7 +118,7 @@ def primitive_yaml_input(hparams_tempdir: pathlib.Path) -> YamlInput:
floatfield: 0.5
boolfield: true
enumintfield: ONE
enumstringfield: mosaic
enumstringfield: pytorch_lightning
jsonfield:
empty_item: {}
random_item: 1
Expand Down Expand Up @@ -592,65 +591,3 @@ def optional_required_yaml_input(hparams_tempdir) -> YamlInput:
return generate_named_tuple_from_data(hparams_tempdir=hparams_tempdir,
input_data=data,
filepath='optional_required.yaml')


@dataclass
class ShavedBearsHparam(hp.Hparams):
first_action: str = hp.required(doc='str field')
last_action: str = hp.required(doc='str field')

def validate(self):
assert isinstance(self.first_action, str)
assert isinstance(self.last_action, str)
super().validate()


@dataclass
class UnshavedBearsHparam(hp.Hparams):
second_action: str = hp.required(doc='str field')
third_action: str = hp.required(doc='str field')

def validate(self):
assert isinstance(self.second_action, str)
assert isinstance(self.third_action, str)
super().validate()


@dataclass
class ParametersHparam(hp.Hparams):
random_field: Optional[int] = hp.required(doc='int field')
shaved_bears: ShavedBearsHparam = hp.required(doc='ShavedBears Hparams')
other_random_field: str = hp.required(doc='str field')

def validate(self):
assert isinstance(self.random_field, int)
assert isinstance(self.shaved_bears, ParametersHparam)
self.shaved_bears.validate()
assert isinstance(self.other_random_field, str)
super().validate()


@dataclass
class ShavingBearsHparam(hp.Hparams):
parameters: ParametersHparam = hp.required(doc='Parameters Hparams')

def validate(self):
assert isinstance(self.parameters, ParametersHparam)
self.parameters.validate()
super().validate()


bears_registry: Dict[str, Type[hp.Hparams]] = {
'shaved_bears': ShavedBearsHparam,
'unshaved_bears': UnshavedBearsHparam,
}


@dataclass
class BearsHparams(hp.Hparams):

hparams_registry = {
'bears': bears_registry,
}

bears: Optional[List[Hparams]] = hp.required(doc='bear field')
11 changes: 3 additions & 8 deletions yahp/create_object/argparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,10 @@ def get_hparams_file_from_cli(
cli_args: List[str],
argparse_name_registry: ArgparseNameRegistry,
argument_parsers: List[argparse.ArgumentParser],
) -> Tuple[Optional[str], Optional[str], Optional[str]]:
) -> Tuple[Optional[str], Optional[str]]:
parser = argparse.ArgumentParser(add_help=False)
argument_parsers.append(parser)
argparse_name_registry.reserve('f', 'file', 'd', 'dump', 'validate')
argparse_name_registry.reserve('f', 'file', 'd', 'dump')
parser.add_argument('-f',
'--file',
type=str,
Expand All @@ -139,13 +139,8 @@ def get_hparams_file_from_cli(
metavar='stdout',
help='Dump the resulting Hparams to the specified YAML file (defaults to `stdout`) and exit.',
)
parser.add_argument(
'--validate',
action='store_true',
help='Whether to validate YAML against Hparams.',
)
parsed_args, cli_args[:] = parser.parse_known_args(cli_args)
return parsed_args.file, parsed_args.dump, parsed_args.validate
return parsed_args.file, parsed_args.dump


def get_commented_map_options_from_cli(
Expand Down
20 changes: 6 additions & 14 deletions yahp/create_object/create_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ def _get_hparams(
)
if cm_options is not None:
output_file, interactive, add_docs = cm_options
print(f'Generating a template for {constructor.__name__}...')
print(f'Generating a template for {constructor.__name__}')
cls = ensure_hparams_cls(constructor)
if output_file == 'stdout':
cls.dump(add_docs=add_docs, interactive=interactive, output=sys.stdout)
Expand All @@ -655,21 +655,13 @@ def _get_hparams(
with open(output_file, 'x') as f:
cls.dump(add_docs=add_docs, interactive=interactive, output=f)
# exit so we don't attempt to parse and instantiate if generate template is passed
print('\nFinished')
sys.exit(0)

cli_f, output_f, validate = get_hparams_file_from_cli(cli_args=remaining_cli_args,
argparse_name_registry=argparse_name_registry,
argument_parsers=argparsers)
# Validate was specified, so only validate instead of instantiating
if validate:
print(f'Validating YAML against {constructor.__name__}...')
cls = ensure_hparams_cls(constructor)
cls.validate_yaml(f=cli_f)
# exit so we don't attempt to parse and instantiate
print('\nSuccessfully validated YAML!')
print()
print('Finished')
sys.exit(0)

cli_f, output_f = get_hparams_file_from_cli(cli_args=remaining_cli_args,
argparse_name_registry=argparse_name_registry,
argument_parsers=argparsers)
if cli_f is not None:
if f is not None:
raise ValueError('File cannot be specified via both function arguments and the CLI')
Expand Down
Loading

0 comments on commit 6f8303e

Please sign in to comment.