Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kill AbstractClass in favor of abc.ABC{,Meta}. #7929

Merged
merged 1 commit into from Jun 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion contrib/go/src/python/pants/contrib/go/subsystems/BUILD
Expand Up @@ -17,7 +17,6 @@ python_library(
'src/python/pants/subsystem',
'src/python/pants/util:contextutil',
'src/python/pants/util:memo',
'src/python/pants/util:meta',
'src/python/pants/util:process_handler',
],
)
5 changes: 2 additions & 3 deletions contrib/go/src/python/pants/contrib/go/subsystems/fetcher.py
Expand Up @@ -5,11 +5,10 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import logging
from abc import abstractmethod
from abc import ABC, abstractmethod
from collections import namedtuple

from pants.scm.git import Git
from pants.util.meta import AbstractClass

from pants.contrib.go.subsystems.fetch_error import FetchError
from pants.contrib.go.targets.go_remote_library import GoRemoteLibrary
Expand All @@ -18,7 +17,7 @@
logger = logging.getLogger(__name__)


class Fetcher(AbstractClass):
class Fetcher(ABC):
"""Knows how to interpret remote import paths and fetch code to satisfy them."""

def __init__(self, import_path):
Expand Down
Expand Up @@ -6,7 +6,6 @@ python_library(
dependencies=[
'contrib/go/src/python/pants/contrib/go:plugin',
'src/python/pants/build_graph',
'src/python/pants/util:meta',
'tests/python/pants_test:test_base',
]
)
Expand Down
Expand Up @@ -4,17 +4,16 @@

from __future__ import absolute_import, division, print_function, unicode_literals

from abc import abstractproperty
from abc import ABC, abstractproperty
from textwrap import dedent

from pants.build_graph.address_lookup_error import AddressLookupError
from pants.util.meta import AbstractClass
from pants_test.test_base import TestBase

from pants.contrib.go.register import build_file_aliases


class GoLocalSourceTestBase(AbstractClass):
class GoLocalSourceTestBase(ABC):
# NB: We assume we're mixed into a TestBase - we can't extend that directly or else unittest tries
# to run our test methods in the subclass (OK), and against us (not OK).
# NB: We use aliases and BUILD files to test proper registration of anonymous targets and macros.
Expand Down
Expand Up @@ -9,7 +9,6 @@ python_library(
'src/python/pants/subsystem',
'src/python/pants/util:contextutil',
'src/python/pants/util:memo',
'src/python/pants/util:meta',
'src/python/pants/util:process_handler',
],
)
Expand Up @@ -46,6 +46,5 @@ python_library(
dependencies=[
'src/python/pants/base:build_environment',
'src/python/pants/util:dirutil',
'src/python/pants/util:meta',
]
)
Expand Up @@ -7,14 +7,13 @@
import os
import re
import shutil
from abc import abstractmethod
from abc import ABC, abstractmethod

from pants.base.build_environment import get_buildroot
from pants.util.dirutil import safe_mkdir
from pants.util.meta import AbstractClass


class NodeResolverBase(AbstractClass):
class NodeResolverBase(ABC):

file_regex = re.compile('^file:(.*)$')

Expand Down
Expand Up @@ -4,13 +4,13 @@

from __future__ import absolute_import, division, print_function, unicode_literals

from pants.util.meta import AbstractClass
from abc import ABC


# TODO(John Sirois): UnionProducts? That seems broken though for ranged version constraints,
# which npm has and are widely used in the community. For now stay dumb simple (and slow) and
# resolve each node_module individually.
class NodePathsBase(AbstractClass):
class NodePathsBase(ABC):
"""Maps NpmPackage targets to their resolved NODE_PATH."""

def __init__(self):
Expand Down
1 change: 0 additions & 1 deletion src/python/pants/backend/jvm/targets/BUILD
Expand Up @@ -44,7 +44,6 @@ python_library(
'src/python/pants/fs',
'src/python/pants/source',
'src/python/pants/util:memo',
'src/python/pants/util:meta',
'src/python/pants/util:netrc',
'src/python/pants/util:objects',
],
Expand Down
5 changes: 2 additions & 3 deletions src/python/pants/backend/jvm/targets/credentials.py
Expand Up @@ -5,16 +5,15 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import functools
from abc import abstractmethod
from abc import ABCMeta, abstractmethod

from pants.base.exceptions import TargetDefinitionException
from pants.build_graph.target import Target
from pants.util.memo import memoized_method
from pants.util.meta import AbstractClass
from pants.util.netrc import Netrc


class Credentials(Target, AbstractClass):
class Credentials(Target, metaclass=ABCMeta):
"""Credentials for a maven repository.

The ``publish.jar`` section of your ``pants.ini`` file can refer to one
Expand Down
5 changes: 2 additions & 3 deletions src/python/pants/backend/jvm/targets/jarable.py
Expand Up @@ -4,13 +4,12 @@

from __future__ import absolute_import, division, print_function, unicode_literals

from abc import abstractproperty
from abc import ABC, abstractproperty

from pants.java.jar.jar_dependency import JarDependency
from pants.util.meta import AbstractClass


class Jarable(AbstractClass):
class Jarable(ABC):
"""A mixin that identifies a target as one that can provide a jar.

:API: public
Expand Down
4 changes: 2 additions & 2 deletions src/python/pants/backend/jvm/targets/jvm_binary.py
Expand Up @@ -5,6 +5,7 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import re
from abc import ABCMeta
from hashlib import sha1

from future.utils import PY3, string_types
Expand All @@ -16,10 +17,9 @@
PrimitiveField)
from pants.base.validation import assert_list
from pants.java.jar.exclude import Exclude
from pants.util.meta import AbstractClass


class JarRule(FingerprintedMixin, AbstractClass):
class JarRule(FingerprintedMixin, metaclass=ABCMeta):

def __init__(self, apply_pattern, payload=None):
self.payload = payload or Payload()
Expand Down
3 changes: 0 additions & 3 deletions src/python/pants/backend/jvm/tasks/BUILD
Expand Up @@ -368,7 +368,6 @@ python_library(
'src/python/pants/binaries',
'src/python/pants/java/jar',
'src/python/pants/util:contextutil',
'src/python/pants/util:meta',
],
)

Expand Down Expand Up @@ -417,7 +416,6 @@ python_library(
'src/python/pants/util:desktop',
'src/python/pants/util:dirutil',
'src/python/pants/util:memo',
'src/python/pants/util:meta',
'src/python/pants/util:process_handler',
'src/python/pants/util:strutil',
],
Expand Down Expand Up @@ -718,7 +716,6 @@ python_library(
'src/python/pants/build_graph',
'src/python/pants/option',
'src/python/pants/util:dirutil',
'src/python/pants/util:meta',
'src/python/pants/util:memo',
]
)
Expand Down
5 changes: 2 additions & 3 deletions src/python/pants/backend/jvm/tasks/coverage/engine.py
Expand Up @@ -4,16 +4,15 @@

from __future__ import absolute_import, division, print_function, unicode_literals

from abc import abstractmethod
from abc import ABC, abstractmethod

from pants.backend.jvm.targets.annotation_processor import AnnotationProcessor
from pants.backend.jvm.targets.java_library import JavaLibrary
from pants.backend.jvm.targets.scala_library import ScalaLibrary
from pants.util.meta import AbstractClass
from pants.util.objects import datatype


class CoverageEngine(AbstractClass):
class CoverageEngine(ABC):
"""The interface JVM code coverage processors must support.

This is a stateful interface that will be called via the following sequence:
Expand Down
7 changes: 3 additions & 4 deletions src/python/pants/backend/jvm/tasks/jar_task.py
Expand Up @@ -7,7 +7,7 @@
import os
import shutil
import tempfile
from abc import abstractmethod
from abc import ABC, abstractmethod
from builtins import bytes, object, open
from contextlib import contextmanager

Expand All @@ -25,7 +25,6 @@
from pants.java.util import relativize_classpath
from pants.util.contextutil import temporary_dir
from pants.util.dirutil import safe_mkdtemp
from pants.util.meta import AbstractClass


class Jar(object):
Expand All @@ -41,7 +40,7 @@ class Jar(object):
class Error(Exception):
"""Indicates an error creating or updating a jar on disk."""

class Entry(AbstractClass):
class Entry(ABC):
"""An entry to be written to a jar."""

def __init__(self, dest):
Expand Down Expand Up @@ -363,7 +362,7 @@ def open_jar(self, path, overwrite=False, compressed=True, jar_rules=None):

class JarBuilderTask(JarTask):

class JarBuilder(AbstractClass):
class JarBuilder(ABC):
"""A utility to aid in adding the classes and resources associated with targets to a jar.

:API: public
Expand Down
Expand Up @@ -9,15 +9,14 @@
import logging
import os
import xml.etree.ElementTree as ET
from abc import abstractmethod
from abc import ABC, abstractmethod
from builtins import map, next, object, open
from collections import defaultdict
from functools import total_ordering

from pants.base.mustache import MustacheRenderer
from pants.util.dirutil import safe_mkdir_for, safe_walk
from pants.util.memo import memoized_property
from pants.util.meta import AbstractClass
from pants.util.objects import datatype


Expand Down Expand Up @@ -173,7 +172,7 @@ def as_dict(self):
return d


class JUnitHtmlReportInterface(AbstractClass):
class JUnitHtmlReportInterface(ABC):
"""The interface JUnit html reporters must support."""

@abstractmethod
Expand Down
5 changes: 2 additions & 3 deletions src/python/pants/backend/jvm/tasks/rewrite_base.py
Expand Up @@ -6,7 +6,7 @@

import os
import shutil
from abc import abstractmethod, abstractproperty
from abc import ABCMeta, abstractmethod, abstractproperty

from pants.backend.jvm.tasks.nailgun_task import NailgunTask
from pants.base.build_environment import get_buildroot
Expand All @@ -15,10 +15,9 @@
from pants.process.xargs import Xargs
from pants.util.dirutil import fast_relpath, safe_mkdir_for_all
from pants.util.memo import memoized_property
from pants.util.meta import AbstractClass


class RewriteBase(NailgunTask, AbstractClass):
class RewriteBase(NailgunTask, metaclass=ABCMeta):
"""Abstract base class for JVM-based tools that check/rewrite sources."""

@classmethod
Expand Down
1 change: 0 additions & 1 deletion src/python/pants/backend/native/config/BUILD
Expand Up @@ -6,7 +6,6 @@ python_library(
dependencies=[
'3rdparty/python:future',
'src/python/pants/engine:rules',
'src/python/pants/util:meta',
'src/python/pants/util:objects',
'src/python/pants/util:osutil',
],
Expand Down
5 changes: 2 additions & 3 deletions src/python/pants/backend/native/config/environment.py
Expand Up @@ -5,11 +5,10 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import os
from abc import abstractmethod, abstractproperty
from abc import ABC, abstractmethod, abstractproperty

from pants.engine.rules import rule
from pants.util.memo import memoized_classproperty
from pants.util.meta import AbstractClass
from pants.util.objects import datatype, enum
from pants.util.osutil import all_normalized_os_names, get_normalized_os_name
from pants.util.strutil import create_path_env_var
Expand Down Expand Up @@ -45,7 +44,7 @@ def wrapper(cls):
# NB: prototypal inheritance seems *deeply* linked with the idea here!
# TODO: since we are calling these methods from other files, we should remove the leading underscore
# and add testing!
class _ExtensibleAlgebraic(AbstractClass):
class _ExtensibleAlgebraic(ABC):
"""A mixin to make it more concise to coalesce datatypes with related collection fields."""

@memoized_classproperty
Expand Down
5 changes: 3 additions & 2 deletions src/python/pants/backend/native/targets/native_library.py
Expand Up @@ -4,16 +4,17 @@

from __future__ import absolute_import, division, print_function, unicode_literals

from abc import ABCMeta

from pants.backend.native.subsystems.native_build_step import ToolchainVariant
from pants.backend.native.targets.native_artifact import NativeArtifact
from pants.base.exceptions import TargetDefinitionException
from pants.base.payload import Payload
from pants.base.payload_field import PrimitiveField, PrimitivesSetField
from pants.build_graph.target import Target
from pants.util.meta import AbstractClass


class NativeLibrary(Target, AbstractClass):
class NativeLibrary(Target, metaclass=ABCMeta):
"""A class wrapping targets containing sources for C-family languages and related code."""

# TODO: replace this awkward classmethod with a mixin!
Expand Down
6 changes: 3 additions & 3 deletions src/python/pants/backend/native/tasks/native_compile.py
Expand Up @@ -5,15 +5,15 @@
from __future__ import absolute_import, division, print_function, unicode_literals

import os
from abc import abstractmethod
from abc import ABCMeta, abstractmethod
from collections import defaultdict

from pants.backend.native.tasks.native_task import NativeTask
from pants.base.build_environment import get_buildroot
from pants.base.exceptions import TaskError
from pants.base.workunit import WorkUnit, WorkUnitLabel
from pants.util.memo import memoized_method, memoized_property
from pants.util.meta import AbstractClass, classproperty
from pants.util.meta import classproperty
from pants.util.objects import datatype
from pants.util.process_handler import subprocess

Expand All @@ -36,7 +36,7 @@ def file_paths(self):
return [os.path.join(self.root_dir, fname) for fname in self.filenames]


class NativeCompile(NativeTask, AbstractClass):
class NativeCompile(NativeTask, metaclass=ABCMeta):
# `NativeCompile` will use the `source_target_constraint` to determine what targets have "sources"
# to compile, and the `dependent_target_constraint` to determine which dependent targets to
# operate on for `strict_deps` calculation.
Expand Down
1 change: 0 additions & 1 deletion src/python/pants/backend/python/tasks/BUILD
Expand Up @@ -32,7 +32,6 @@ python_library(
'src/python/pants/util:dirutil',
'src/python/pants/util:fileutil',
'src/python/pants/util:memo',
'src/python/pants/util:meta',
'src/python/pants/util:objects',
'src/python/pants/util:process_handler',
'src/python/pants/util:py2_compat',
Expand Down