| Index: third_party/psutil/psutil/_psmswindows.py | 
| diff --git a/third_party/psutil/psutil/_psmswindows.py b/third_party/psutil/psutil/_psmswindows.py | 
| deleted file mode 100644 | 
| index 81ffad7b37e5cb9e3cc3eeded72912ede9aec788..0000000000000000000000000000000000000000 | 
| --- a/third_party/psutil/psutil/_psmswindows.py | 
| +++ /dev/null | 
| @@ -1,293 +0,0 @@ | 
| -#!/usr/bin/env python | 
| -# | 
| -# $Id: _psmswindows.py 1142 2011-10-05 18:45:49Z g.rodola $ | 
| -# | 
| -# Copyright (c) 2009, Jay Loden, Giampaolo Rodola'. All rights reserved. | 
| -# Use of this source code is governed by a BSD-style license that can be | 
| -# found in the LICENSE file. | 
| - | 
| -"""Windows platform implementation.""" | 
| - | 
| -import errno | 
| -import os | 
| -import sys | 
| -import platform | 
| - | 
| -import _psutil_mswindows | 
| -from psutil.error import AccessDenied, NoSuchProcess, TimeoutExpired | 
| -from psutil._compat import namedtuple | 
| -from psutil._common import * | 
| - | 
| -# Windows specific extended namespace | 
| -__extra__all__ = ["ABOVE_NORMAL_PRIORITY_CLASS", "BELOW_NORMAL_PRIORITY_CLASS", | 
| -                  "HIGH_PRIORITY_CLASS", "IDLE_PRIORITY_CLASS", | 
| -                  "NORMAL_PRIORITY_CLASS", "REALTIME_PRIORITY_CLASS"] | 
| - | 
| - | 
| -# --- module level constants (gets pushed up to psutil module) | 
| - | 
| -NUM_CPUS = _psutil_mswindows.get_num_cpus() | 
| -BOOT_TIME = _psutil_mswindows.get_system_uptime() | 
| -_WIN2000 = platform.win32_ver()[0] == '2000' | 
| -ERROR_ACCESS_DENIED = 5 | 
| -WAIT_TIMEOUT = 0x00000102 # 258 in decimal | 
| - | 
| -# process priority constants: | 
| -# http://msdn.microsoft.com/en-us/library/ms686219(v=vs.85).aspx | 
| -from _psutil_mswindows import (ABOVE_NORMAL_PRIORITY_CLASS, | 
| -                               BELOW_NORMAL_PRIORITY_CLASS, | 
| -                               HIGH_PRIORITY_CLASS, | 
| -                               IDLE_PRIORITY_CLASS, | 
| -                               NORMAL_PRIORITY_CLASS, | 
| -                               REALTIME_PRIORITY_CLASS, | 
| -                               INFINITE) | 
| - | 
| -# --- public functions | 
| - | 
| -def phymem_usage(): | 
| -    """Physical system memory as a (total, used, free) tuple.""" | 
| -    all = _psutil_mswindows.get_system_phymem() | 
| -    total, free, total_pagef, avail_pagef, total_virt, free_virt, percent = all | 
| -    used = total - free | 
| -    return ntuple_sysmeminfo(total, used, free, round(percent, 1)) | 
| - | 
| -def virtmem_usage(): | 
| -    """Virtual system memory as a (total, used, free) tuple.""" | 
| -    all = _psutil_mswindows.get_system_phymem() | 
| -    total_virt = all[4] | 
| -    free_virt = all[5] | 
| -    used = total_virt - free_virt | 
| -    percent = usage_percent(used, total_virt, _round=1) | 
| -    return ntuple_sysmeminfo(total_virt, used, free_virt, percent) | 
| - | 
| -def get_disk_usage(path): | 
| -    """Return disk usage associated with path.""" | 
| -    try: | 
| -        total, free = _psutil_mswindows.get_disk_usage(path) | 
| -    except WindowsError, err: | 
| -        if not os.path.exists(path): | 
| -            raise OSError(errno.ENOENT, "No such file or directory: '%s'" % path) | 
| -        raise | 
| -    used = total - free | 
| -    percent = usage_percent(used, total, _round=1) | 
| -    return ntuple_diskinfo(total, used, free, percent) | 
| - | 
| -def disk_partitions(all): | 
| -    """Return disk partitions.""" | 
| -    retlist = [] | 
| -    drive_letters = _psutil_mswindows.win32_GetLogicalDriveStrings() | 
| -    for letter in drive_letters: | 
| -        mountpoint = letter | 
| -        type = _psutil_mswindows.win32_GetDriveType(letter) | 
| -        if not os.path.exists(mountpoint): | 
| -            # usually a CD-ROM device with no disk inserted | 
| -            mountpoint = "" | 
| -        if not all: | 
| -            if type not in ('cdrom', 'fixed', 'removable'): | 
| -                continue | 
| -            if not mountpoint: | 
| -                continue | 
| -        ntuple = ntuple_partition(letter, mountpoint, type) | 
| -        retlist.append(ntuple) | 
| -    return retlist | 
| - | 
| - | 
| -_cputimes_ntuple = namedtuple('cputimes', 'user system idle') | 
| - | 
| -def get_system_cpu_times(): | 
| -    """Return system CPU times as a named tuple.""" | 
| -    user, system, idle = 0, 0, 0 | 
| -    # computes system global times summing each processor value | 
| -    for cpu_time in _psutil_mswindows.get_system_cpu_times(): | 
| -        user += cpu_time[0] | 
| -        system += cpu_time[1] | 
| -        idle += cpu_time[2] | 
| -    return _cputimes_ntuple(user, system, idle) | 
| - | 
| -def get_system_per_cpu_times(): | 
| -    """Return system per-CPU times as a list of named tuples.""" | 
| -    ret = [] | 
| -    for cpu_t in _psutil_mswindows.get_system_cpu_times(): | 
| -        user, system, idle = cpu_t | 
| -        item = _cputimes_ntuple(user, system, idle) | 
| -        ret.append(item) | 
| -    return ret | 
| - | 
| -get_pid_list = _psutil_mswindows.get_pid_list | 
| -pid_exists = _psutil_mswindows.pid_exists | 
| - | 
| -# --- decorator | 
| - | 
| -def wrap_exceptions(callable): | 
| -    """Call callable into a try/except clause so that if a | 
| -    WindowsError 5 AccessDenied exception is raised we translate it | 
| -    into psutil.AccessDenied | 
| -    """ | 
| -    def wrapper(self, *args, **kwargs): | 
| -        try: | 
| -            return callable(self, *args, **kwargs) | 
| -        except OSError, err: | 
| -            if err.errno in (errno.EPERM, errno.EACCES, ERROR_ACCESS_DENIED): | 
| -                raise AccessDenied(self.pid, self._process_name) | 
| -            if err.errno == errno.ESRCH: | 
| -                raise NoSuchProcess(self.pid, self._process_name) | 
| -            raise | 
| -    return wrapper | 
| - | 
| - | 
| -class Process(object): | 
| -    """Wrapper class around underlying C implementation.""" | 
| - | 
| -    __slots__ = ["pid", "_process_name"] | 
| - | 
| -    def __init__(self, pid): | 
| -        self.pid = pid | 
| -        self._process_name = None | 
| - | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_name(self): | 
| -        """Return process name as a string of limited len (15).""" | 
| -        return _psutil_mswindows.get_process_name(self.pid) | 
| - | 
| -    def get_process_exe(self): | 
| -        # no such thing as "exe" on Windows; it will maybe be determined | 
| -        # later from cmdline[0] | 
| -        if not pid_exists(self.pid): | 
| -            raise NoSuchProcess(self.pid, self._process_name) | 
| -        if self.pid in (0, 4): | 
| -            raise AccessDenied(self.pid, self._process_name) | 
| -        return "" | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_cmdline(self): | 
| -        """Return process cmdline as a list of arguments.""" | 
| -        return _psutil_mswindows.get_process_cmdline(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_ppid(self): | 
| -        """Return process parent pid.""" | 
| -        return _psutil_mswindows.get_process_ppid(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_memory_info(self): | 
| -        """Returns a tuple or RSS/VMS memory usage in bytes.""" | 
| -        # special case for 0 (kernel processes) PID | 
| -        if self.pid == 0: | 
| -            return ntuple_meminfo(0, 0) | 
| -        rss, vms = _psutil_mswindows.get_memory_info(self.pid) | 
| -        return ntuple_meminfo(rss, vms) | 
| - | 
| -    @wrap_exceptions | 
| -    def kill_process(self): | 
| -        """Terminates the process with the given PID.""" | 
| -        return _psutil_mswindows.kill_process(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def process_wait(self, timeout=None): | 
| -        if timeout is None: | 
| -            timeout = INFINITE | 
| -        else: | 
| -            # WaitForSingleObject() expects time in milliseconds | 
| -            timeout = int(timeout * 1000) | 
| -        ret = _psutil_mswindows.process_wait(self.pid, timeout) | 
| -        if ret == WAIT_TIMEOUT: | 
| -            raise TimeoutExpired(self.pid, self._process_name) | 
| -        return ret | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_username(self): | 
| -        """Return the name of the user that owns the process""" | 
| -        if self.pid in (0, 4) or self.pid == 8 and _WIN2000: | 
| -            return 'NT AUTHORITY\\SYSTEM' | 
| -        return _psutil_mswindows.get_process_username(self.pid); | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_create_time(self): | 
| -        # special case for kernel process PIDs; return system boot time | 
| -        if self.pid in (0, 4) or self.pid == 8 and _WIN2000: | 
| -            return BOOT_TIME | 
| -        return _psutil_mswindows.get_process_create_time(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_num_threads(self): | 
| -        return _psutil_mswindows.get_process_num_threads(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_threads(self): | 
| -        rawlist = _psutil_mswindows.get_process_threads(self.pid) | 
| -        retlist = [] | 
| -        for thread_id, utime, stime in rawlist: | 
| -            ntuple = ntuple_thread(thread_id, utime, stime) | 
| -            retlist.append(ntuple) | 
| -        return retlist | 
| - | 
| -    @wrap_exceptions | 
| -    def get_cpu_times(self): | 
| -        user, system = _psutil_mswindows.get_process_cpu_times(self.pid) | 
| -        return ntuple_cputimes(user, system) | 
| - | 
| -    @wrap_exceptions | 
| -    def suspend_process(self): | 
| -        return _psutil_mswindows.suspend_process(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def resume_process(self): | 
| -        return _psutil_mswindows.resume_process(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_cwd(self): | 
| -        if self.pid in (0, 4) or self.pid == 8 and _WIN2000: | 
| -            raise AccessDenied(self.pid, self._process_name) | 
| -        # return a normalized pathname since the native C function appends | 
| -        # "\\" at the and of the path | 
| -        path = _psutil_mswindows.get_process_cwd(self.pid) | 
| -        return os.path.normpath(path) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_open_files(self): | 
| -        if self.pid in (0, 4) or self.pid == 8 and _WIN2000: | 
| -            return [] | 
| -        retlist = [] | 
| -        # Filenames come in in native format like: | 
| -        # "\Device\HarddiskVolume1\Windows\systemew\file.txt" | 
| -        # Convert the first part in the corresponding drive letter | 
| -        # (e.g. "C:\") by using Windows's QueryDosDevice() | 
| -        raw_file_names = _psutil_mswindows.get_process_open_files(self.pid) | 
| -        for file in raw_file_names: | 
| -            if sys.version_info >= (3,): | 
| -                file = file.decode('utf8') | 
| -            if file.startswith('\\Device\\'): | 
| -                rawdrive = '\\'.join(file.split('\\')[:3]) | 
| -                driveletter = _psutil_mswindows.win32_QueryDosDevice(rawdrive) | 
| -                file = file.replace(rawdrive, driveletter) | 
| -                if os.path.isfile(file) and file not in retlist: | 
| -                    ntuple = ntuple_openfile(file, -1) | 
| -                    retlist.append(ntuple) | 
| -        return retlist | 
| - | 
| -    @wrap_exceptions | 
| -    def get_connections(self): | 
| -        retlist = _psutil_mswindows.get_process_connections(self.pid) | 
| -        return [ntuple_connection(*conn) for conn in retlist] | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_nice(self): | 
| -        return _psutil_mswindows.get_process_priority(self.pid) | 
| - | 
| -    @wrap_exceptions | 
| -    def set_process_nice(self, value): | 
| -        return _psutil_mswindows.set_process_priority(self.pid, value) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_io_counters(self): | 
| -        rc, wc, rb, wb =_psutil_mswindows.get_process_io_counters(self.pid) | 
| -        return ntuple_io(rc, wc, rb, wb) | 
| - | 
| -    @wrap_exceptions | 
| -    def get_process_status(self): | 
| -        suspended = _psutil_mswindows.is_process_suspended(self.pid) | 
| -        if suspended: | 
| -            return STATUS_STOPPED | 
| -        else: | 
| -            return STATUS_RUNNING | 
|  |